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

问题描述 投票:0回答:1

我在android中有一个需要使用UsbManager类打印RAW文本(支持ESC / P命令)的项目。我是用bulkTransfer做的,代码看起来像this。现在我应该选择取消这份工作。我该怎么做?

我试图搜索,不知怎的,我无法在任何地方找到它。而且我也很熟悉android。谢谢。

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

编辑2: 最后,我能够使用controlTransfer软复位打印机(清除所有缓冲区)。完整的命令是controlTransfer(0x21, 2, 0, 0, null, 0, 0)。我从this site得到了参考资料。但现在的问题是重置命令仅适用于Epson PLQ-30。

android kotlin printing epson tally
1个回答
0
投票

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

此特定于类的请求会刷新所有缓冲区,并将Bulk OUT和Bulk IN管道重置为其默认状态。此请求清除所有失速条件。此重置不会更改USB寻址或USB配置。

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.