1

要求

我创建了一个 POS 应用程序(基于 Java),它需要使用相同的驱动程序连接到至少 2台相同的热敏打印机,打印机应该这样做:

  • 在应用程序启动时>>每台打印机都是open(),claim(),setDeviceEnable(true) 一次

  • 在应用程序停止>> 每台打印机将 setDeviceEnable(false),release(),close()

  • 要在 POSPrinter1 上打印的食品

  • 要在 POSPrinter2 上打印的饮料项目

到目前为止我尝试了什么

我创建了两个 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: 103 at com.sewoo.jpos.POSPrinterService.printNormal(POSPrinterService.java:4130) at jpos.POSPrinter.printNormal(Unknown Source) at util.PrintManager.printOrderingHeaderByPrinter(PrintManager.java:628) at util.PrintManager。 printDrinkByPrinter(PrintManager.java:1359) 在 util.PrintManager.printOrdering(PrintManager.java:1931) 在 util.PrintManager.lambda$print$17(PrintManager.java:1668) 在 ...

问题

因此,虽然在 init/claim 期间发现了两台打印机,但 POSPrinter1 可以在 POSPrinter2 throws 时打印得非常好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