首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >热敏打印机从纸上拿出bulkTransfer android没有响应

热敏打印机从纸上拿出bulkTransfer android没有响应
EN

Stack Overflow用户
提问于 2022-02-17 15:15:45
回答 1查看 247关注 0票数 0

我正在开发一个Android应用程序,它可以与热打印机进行通信,以便打印一些收据。

下面是我向打印机发送数据以便打印收据的代码:

代码语言:javascript
复制
                connection.claimInterface(usbInterface, forceClaim)

                val thread = Thread {
                    connection.bulkTransfer(
                        mEndPoint,
                        printer.toByteArray(),
                        printer.size(),
                        0
                    )
                    connection.close()
                }
                thread.run()

如果热感打印机里有纸,这段代码可以正常工作,但是如果热感打印机里没有纸,它只是冻结了我的应用程序,我必须完全重新启动设备。我知道,根据文档,bulkTransfer方法中的bulkTransfer 0被定义为无限,所以我想这就是我获得ANR的原因。

我试着将超时时间设置为4000,但问题是,如果收据打印时间超过4秒,它就会在这4秒之后停止打印操作。

知道我怎么处理这事吗?

EN

回答 1

Stack Overflow用户

发布于 2022-02-17 16:26:33

这是热收据打印机的常见情况。

如果没有纸,封面(打印头?)是打开的,或者打印是不可能的,因为有一些错误,没有通信或者只是数据存储在打印机缓冲区中,它将无法工作。

也许在大宗运输过程中也发生了类似的事情。

然后,根据要打印的数据量来实际地进行纸输入,如果您使用它与剪纸刀,它将需要时间来操作。它们不是固定的时间。

根据打印机支持的功能,您可能能够或可能无法这样做。

如果打印机支持RS232C硬件流控制仿真,则在发生错误时关闭流控制信号线,因此您可以通过打印前检查信号线的状态来确定打印是否可行。

然后,如果您可以在错误状态下进行通信并支持命令通知打印机状态(称为实时命令),则在打印之前发送该命令以接收指示打印机状态的数据。通过检查它,您可以确定是否可以以与上面相同的方式打印。

德尔埃奥特

传输实时状态

如果这样的预检查是可能的,您将能够发现问题比执行超时检查更快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71160729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档