2

私は、WebベースのPOSインターフェイスを備えたアプリケーションに取り組んでいます。

POS PC(LinuxとWindowsのどちらで実行されるかは今のところわかりません)には、会計プリンターを接続する必要がありますが、他のWebアプリと同様に、すべてのものを処理するサーバーです。サーバーとPoSマシンの両方が同じLAN上にあります。

販売データをリアルタイムで、シリアルポートを使用する会計プリンターを介して送信する必要があるため、PDFやWebページを印刷することはできません。

クライアントのWebサービスで小さなアプリをリッスンさせることができると言われました。Webサービスはサーバーやブラウザーではなくプリンターと通信しますが、その方法はわかりません。また、ほとんどの場合、プリンターのフィードバック(たとえば、プリンターによって生成されたクーポン番号)を聞いて、サーバーに返す必要があります。

何か案は?

4

2 に答える 2

1

私はこれに似たようなことを数年しました。前。しかし、私の場合、サーバーとPCは同じLANにあります。あなたのPoSはLAN内にありますか?もしそうなら、私はあなたにそれを説明します。

それまでの間、「小さなアプリ」をカバーしている場合は、次のことを確認できます。

http://java.sun.com/j2se/1.4.2/docs/api/javax/print/PrintService.html

印刷サービスには、実行中のマシンに登録されているプリンターを検出する方法があります。したがって、アプリのサーバーからメッセージを受信した後は、上記のリンクに示されているコードと同様のことを行う必要があります。

http://java.sun.com/j2se/1.4.2/docs/api/javax/print/PrintService.htmlから取得

DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
PrintRequestAttributeSet aset = new HashPrintRequestHashAttributeSet();
aset.add(MediaSizeName.ISO_A4);
PrintService[] pservices =
             PrintServiceLookup.lookupPrintServices(flavor, aset);
if (pservices.length > 0) {
   DocPrintJob pj = pservices[0].createPrintJob();
   // InputStreamDoc is an implementation of the Doc interface //
   Doc doc = new InputStreamDoc("test.ps", flavor);
   try {
         pj.print(doc, aset);
    } catch (PrintException e) { 
    }
}
于 2008-10-01T00:58:33.837 に答える
0

そのため、アプレットがあります。ただし、アプレットはセキュリティ サンドボックスで実行されます。ただし、webapp で実行されているアプレットに適切な種類の特権が与えられている場合、アプレットはソケットを開いたり、ファイルに書き込んだり、シリアル ポートに書き込んだりできます。

于 2008-10-01T01:30:48.970 に答える