リクエスト
同じドライバーを使用して少なくとも 2 つの同一のサーマル プリンターに接続する必要がある POS アプリ (Java ベース) を作成しました。プリンターは次のように動作する必要があります。
アプリケーション起動時>> 各プリンタは
open(),claim(),setDeviceEnable(true)
1 回アプリケーション停止時>> 各プリンターは
setDeviceEnable(false),release(),close()
POSPrinter1 で印刷する食品
- POSPrinter2で印刷するドリンクアイテム
これまでに試したこと
2 つの POSPrinter オブジェクトを作成しました
private POSPrinter posprinter = initUSBPrinter("POSPrinter1");
private POSPrinter posprinter2 = initUSBPrinter("POSPrinter2");
private static POSPrinter initUSBPrinter(String printerName) {
POSPrinter ptr = new POSPrinter();
try {
ptr.open(printerName);
ptr.claim(1000);
ptr.setDeviceEnabled(true);
} catch (JposException e) {
e.printStackTrace();
}
return ptr ;
}
- 両方のプリンターが開始/要求された場合、アプリケーションの開始中にエラーは発生しません
- POSPrinter1 で食品を印刷しながら正常に動作
POSPrinter2 で飲み物アイテムを印刷しようとしたときに、以下に示すエラーが発生しました:
jpos.JposException: com.sewoo.jpos.POSPrinterService.printNormal(POSPrinterService.java:4130) で 103 printDrinkByPrinter(PrintManager.java:1359) で util.PrintManager.printOrdering(PrintManager.java:1931) で util.PrintManager.lambda$print$17(PrintManager.java:1668) で ...
問題
そのため、init/claim 中に両方のプリンターが検出されましたが、POSPrinter2 がjpos.POSPrinter.printNormal(Unknown Source)
. POSPrinter1 は POSPrinter2 の前に要求されたため、JavaPOS ドライバーは POSPrinter1 にのみ接続されているのではないかと思います。では、単一の JavaPOS ドライバーが単一のデバイスとしか通信できない可能性はありますか?
同時に 2 つの印刷デバイスと通信できるようにするには、2 つの JavaPOS ドライバーをインストールする必要がありますか? もしそうなら、どうすればアプリを設定できますか?
これは機能しますが、印刷プロセスが遅くなります
open(),claim(),setDeviceEnable(true)
印刷ジョブの前に経由していずれかのプリンターに接続しますsetDeviceEnable(false),release(),close()
印刷ジョブが正常に実行された後、プリンターを切断します
ただし、各印刷ジョブの後に接続/切断すると、印刷プロセスが大幅に遅くなります。プリンタが最終的に伝票を印刷するのを確認するには、印刷ジョブが送信されてから通常 3 ~ 5 秒待つ必要があります。