在Android上通过蓝牙连接时,我无法获得Zebra RW420的打印机状态(智能手机和打印机已经配对,所有必要的权限都在清单文件中)。我正在为API 19编程。 我得到以下异常:
com.zebra.sdk.comm.ConnectionException: Malformed status response - unable to determine printer status
我尝试获取状态的代码如下:
Connection printer_connection = new BluetoothConnection(printer_address);
printer_connection.open();
if (printer_connection.isConnected())
{
ZebraPrinter printer = ZebraPrinterFactory.getInstance(PrinterLanguage.ZPL, printer_connection);
ZebraPrinterLinkOs linkos_printer = ZebraPrinterFactory.createLinkOsPrinter(printer);
PrinterStatus printer_status = (linkos_printer != null) ? linkos_printer.getCurrentStatus() : printer.getCurrentStatus();//new PrinterStatusZpl(printer_connection);
if (printer_status.isReadyToPrint)
{
// Send print commends
printer_connection.close();
}
....
}
在
ZebraPrinterLinkOs linkos_printer = ZebraPrinterFactory.createLinkOsPrinter(printer);
PrinterStatus printer_status = (linkos_printer != null) ? linkos_printer.getCurrentStatus() : printer.getCurrentStatus();//new PrinterStatusZpl(printer_connection);
部分是我从Zebra示例代码中获得的。
当我删除涉及PrinterStatus的代码行时,我可以从Android智能手机向RW420打印机发送打印命令,并且打印标签/ qr代码没有任何问题。
我需要获取打印机的状态,因为我想在打印机出现问题时显示对话框,例如:缺纸等
更新 我还尝试将~HS命令发送到打印机,这会导致数据被发回,但是测试时打印机中没有纸张或者打开头,返回的数据并不表示存在问题。 / p>
答案 0 :(得分:0)
尝试一次Thread.Sleep
(或等效的android),然后重试几次。
我在.NET平台上使用相同的错误消息得到相同的信息。它似乎还没有时间连接。