为什么我不能在 Windows.Devices.PointOfService 中同时使用打印机和抽屉?

Why can't I use a printer and a drawer at the same time in Windows.Devices.PointOfService?

我正在创建一个 POS 应用程序。我从 POS 打印机开始,它正在工作。之后我添加了“打开现金抽屉”功能。但它会以某种方式干扰 POS 打印机。

那么发生了什么?

当我只领取 POS 打印机时,打印工作正常。此外,当我只领取现金抽屉时,抽屉可以正常打开。所以没问题。

但是当我同时领取(POS 打印机和抽屉)时,打印卡住或冻结。抽屉仍然可以正常打开。大多数时候,当我声明两者时,第一个印刷品看起来不错,但它不会裁纸。当我再次打印时程序冻结。

我怎么不能同时使用这两个对象:

OPOSPrinter oposprinter = new OPOSPrinter(); // Has the Windows.Devices.PointOfService.PosPrinter class
OposCashDrawer oposcashdrawer = new OposCashDrawer(); // Has the Windows.Devices.PointOfService.CashDrawer class

当我声明 ClaimedCashDrawer 时,这一行给 ClaimedPrinter = await CurrentPrinter.ClaimPrinterAsync(); 一个 null

我在这里上传了一个示例项目:https://github.com/hellyeahniels/TestPrintAndDrawer

有人可以向我解释一下哪里出了问题以及如何解决这个问题吗?

提前致谢。

它由两个因素组成。

  • 可能是因为您有一个现金抽屉连接到打印机的扩展。
  • 并且由于打印机供应商提供的OPOS服务对象的设计使得打印机和钱箱不能同时使用。

这样的配置称为九头蛇设备。

一些打印机供应商的规格允许打印机和现金抽屉即使在这样的配置下也能独立运行。

如果您切换到该供应商的打印机,或者将缓存抽屉切换到独立工作的打印机,而不是通过打印机,则无需小心。

如果想直接使用的话,打印机厂商提供的OPOS服务对象的注释中好像有说明,请照着做。

可能是打印机和cache drawer不能同时使用,如果同时使用,则通过Claim方法获取独占控制权,用完后释放独占控制权通过 Release 方法。


对了,你用的API好像是Windows.Devices.PointOfService,不是POS for.NET
请更正问题描述和标签内容以适合您。

如果是这样,请将我提供的方法名称替换为合适的名称。