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

时间:2019-02-18 10:18:39

标签: android kotlin printing epson tally

我在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获得了参考。但是现在的问题是reset命令仅在Epson PLQ-30上有效。

1 个答案:

答案 0 :(得分: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