当前位置: 首页 > 知识库问答 >
问题:

使用适用于QL系列标签打印机的兄弟打印SDK检测缺纸

何飞翰
2023-03-14

我正在使用适用于Android的兄弟打印SDK。我的代码基于手册中所示的示例代码:

void printTemplate(int templateKey, String newText) {
// Specify Printer
final Printer printer = new Printer();
PrinterInfo settings = printer.getPrinterInfo();
settings.printerModel = Model.QL_1110NWB;
settings.ipAddress = "your-printer-ip";

// Connect, then print
new Thread(new Runnable() {
    @Override
    public void run() {
        if (printer.startCommunication()) {
            // Specify the template key and the printer encode
            if (startPTTPrint(templateKey, null)) {
                // Replace text object with new text
                replaceText(newText);

                // Start print
                PrinterStatus result = printer.flushPTTPrint();
                if (result.errorCode != ErrorCode.ERROR_NONE) {
                    Log.d("TAG", "ERROR - " + result.errorCode);
                }
            }
            printer.endCommunication();
        }
    }
}).start();

}

当打印机的盖子打开时,flushPTTPrint()函数会立即返回,状态为ERROR\u cover\u open。这太棒了。

当打印机没有纸时,flushPTTPrint()函数仅在大约三分钟后返回,状态为ERROR_COMMUNICATION_ERROR。不太好。

问题:如何检测打印机何时缺纸?任何方法都可以,要么让flushPTTPrint()立即返回,并显示缺纸状态,要么事先主动查询打印机。

编辑(响应马特·克拉克的建议)

可以设置处理程序来处理来自打印机的状态消息。在常规打印输出中(以及在纸张变空之前的最后一次打印输出中),以下消息按以下顺序到达:

  • 消息启动通信

使用最后一张纸时,打印机立即点亮红色led,并在其显示屏上显示缺纸通知。在这种情况下尝试打印时,会收到以下消息:

  • 消息启动通信
  • 消息\u START\u CONNECT
  • 消息END\u已连接
  • MESSAGE\u START\u SEND\u STATUS\u请求

…大约三分钟后。。。

  • 消息\u START\u SOCKET\u CLOSE
  • 消息\u END\u SOCKET\u CLOSE

从未看到纸外html" target="_blank">消息(message\u paper\u EMPTY)。

编辑2

我刚刚发现这个问题只有在通过蓝牙连接时才会发生。使用WiFi时,上述功能立即返回,错误代码error\u PAPER\u EMPTY。

共有2个答案

朱睿
2023-03-14

阅读文档时,打印机似乎能够将异步消息发送回应用程序。这可能有助于捕捉各种信息,包括确定打印实际完成的时间。

根据文件:

第4.1.2.3节显示了一种方法,您可以使用该方法为收到的这些消息注册回调:

void setMessageHandle(Handler handler, int MsgType)

第4.2.2.13节列出了所有可用的消息类型,其中之一是:

MESSAGE_PAPER_EMPTY

我想一旦打印机检测到缺纸状态,您就会收到此消息。

公良子轩
2023-03-14

也许可以尝试调用打印机。getPrinterStatus()在尝试打印之前?

 类似资料:
  • 我有打印机驱动程序、P-touch编辑器、b-PAC 3.1和客户端工具,都是64位的,从Brother网站下载并安装在我的64位Windows 7笔记本电脑上。P-touch编辑器工作/打印良好。 然而,b-PAC失败,所有样本均无效。我调试了代码: 其中,

  • 我想从web浏览器的Brother标签打印机打印标签。我知道DYMO有一个JavaScript框架,可以使从浏览器打印变得简单。但我有一个兄弟标签打印机的客户,所以我需要使它工作。 我一直在做一些测试和搜索,令人惊讶的是,关于这个主题的信息如此之少。 到目前为止,我唯一成功使用的浏览器是谷歌Chrome,因为它似乎不打印页眉和页脚。我已经安装了打印机/驱动程序,并创建了尺寸为62 x 29mm的自

  • 我有一台新的标签打印机(Brother QL 570),它支持无穷无尽的纸张。我的想法是,我可以通过打印尽可能多的纸张来节省纸张——错了!打印机的纸张尺寸为63mm x 100mm和63mm x 29mm(以及其他一些),但我需要63mm x“felxible length”或类似63mm x 40mm的东西。 我该怎么改变呢?我将从OpenOffice打印。 谢谢 (驱动程序为CUPS,使用Mi

  • 我正在使用Brother SDK使用P-touch模板打印标签。我有我自己的模板(只有两个文本,没有复杂的)在我的兄弟QL-820NWB标签打印机。 打印正在工作,但我有变音符号的问题。例如“Jan Vomáčka”没有正确打印。(问题是and) 我使用的代码来自他们的SDK手册: 我试着设置不同类型的编码(UTF-8,CP-1250,…),而不是设置空值,但都不能正常工作。 我不确定该换什么?也

  • 我使用下面的代码成功地将标签直接打印到兄弟QL标签打印机。问题是打印机似乎忽略了我试图在运行时通过c#设置的自定义长度,以导致更长或更短的标签。我可以在Windows打印机设置中更改页面长度,但我无法在运行时设置自定义标签长度,这取决于我在特定标签上呈现的信息量。请注意,我知道我可以使用bPac打印可变长度的标签,但我真的很想摆脱使用他们的模板。我发现它们不必要地繁琐。好吧,没有必要,除非我无法设

  • 我正在创建一个Android应用程序,该应用程序将打印到兄弟QL-720NW标签打印机。我为此创建了一个示例项目。 我已经在libs文件夹中导入了必要的JAR文件,并按照兄弟的示例项目中的建议设置了打印机设置。但是我一直收到标签不正确的错误。 我已经看到以下线程ERROR\u WRONG\u LABEL,当尝试使用Android Brother Sdk为标签打印机无线打印时,出现了类似问题。 根据