1

リクエスト

同じドライバーを使用して少なくとも 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 秒待つ必要があります。

4

0 に答える 0