2016-07-06 118 views
0

当在Android上通过蓝牙连接Zebra RW420时,我无法获得Zebra RW420的打印机状态(智能手机和打印机已经配对,所有必要的权限都在清单文件中)。我编程的API 19. 我得到以下异常:Zebra RW420格式错误状态响应

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代码没有任何问题。

我需要获得打印机的状态,因为我想在打印机出现问题时显示对话框,例如,外的纸张等

UPDATE: 我还试图发送HS〜命令,其确实导致数据的打印机被发送回但测试,如具有在打印机中没有纸张或离开头部打开回来的数据并不表示存在问题。

+0

如果您评论'linkos_printer'实例并直接调用'printer.getcurrentStatus'会发生什么? –

+0

完全一样的结果。我最初只用'printer.getCurrentStatus'来尝试它。 linkos_printer为空,因为RW420不是LinkOsPrinter。我想知道是否需要使用Zebra工具之一配置打印机的状态。 – solarrobor

+0

你能解决问题的地方? – PLOW

回答

0

尝试只是一个Thread.Sleep(或等效的android)一秒钟,然后重试几次。

我在.NET平台上获得了相同的错误消息。它似乎还没有时间连接。

+0

你能再详细一点吗? – PLOW

+0

我的意思只是再次尝试两三次,看看它是否再次有效 –

+0

我试过你的建议。我有'IPrintStatus状态= printer.CurrentStatus; Thread.Sleep(5000);'在一个循环内运行10次,直到它获得状态,但它永远不会。你什么时候叫'Thread.Sleep'? – PLOW