0

我在 android 中有一个项目,需要使用UsbManager类打印 RAW 文本(以支持 ESC/P 命令)。我是使用bulkTransfer 完成的,代码如下所示。现在我应该选择取消工作。我该怎么做?

我试图搜索,但不知何故我无法在任何地方找到它。我也是安卓新手。谢谢。

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

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

4

1 回答 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 中打印的参考资料(包括软重置、检查纸张状态),您可以在此处查看我的项目。

于 2019-04-09T11:47:04.650 回答