使用 UsbManager 取消 Android 中的打印作业

Cancel Printing Job in Android With UsbManager

我在 android 中有一个项目需要使用 UsbManager class. I did it using bulkTransfer, and the code looks like this 打印 RAW 文本(以支持 ESC/P 命令)。现在我应该提供一个取消工作的选项。我该怎么做?

我试过搜索,但不知怎么的,我在任何地方都找不到它。我也是 android 的新手。谢谢

编辑:
我使用的打印机是Tally T5040和Epson PLQ-30。
我试过的是通过发送 0x18 (CANCEL DATA) 命令来清除打印机缓冲区。但仍然没有运气。

编辑 2:
最后,我能够使用 controlTransfer. The full command is controlTransfer(0x21, 2, 0, 0, null, 0, 0). I got the references from this site 软重置打印机(清除所有缓冲区)。但现在的问题是reset指令只对Epson PLQ-30有效

根据 Universal Serial Bus Device Class Definition for Printing Devices,有一个名为 SOFT_RESET 的 Class-特定请求:

This class-specific request flushes all buffers and resets the Bulk OUT and Bulk IN pipes to their default states. Thisrequest clears all stall conditions. This reset does NOT change the USB addressing or USB configuration.

所以你只需要使用 controlTransfer 发送 SOFT_RESET 请求,代码是 (Kotlin):

controlTransfer(0x21, 2, 0, 0, null, 0, 0)

我的另一台打印机 (Tally T5040) 不工作的原因是固件不支持 SOFT_RESET 请求。我已经联系他们并获得固件更新以支持 SOFT_RESET。

如果有人在寻找有关如何使用 USB 在 Android 中打印的参考资料(包括软重置、检查纸张状态),您可以查看我的项目 here