2016-07-06 123 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