【问题标题】:Cancel Printing Job in Android With UsbManager使用 UsbManager 在 Android 中取消打印作业
【发布时间】:2019-04-09 19:47:04
【问题描述】:

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

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

编辑:
我使用的打印机是 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】:

    根据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 的固件更新。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 2016-08-14
      • 1970-01-01
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 2011-10-20
      相关资源
      最近更新 更多