2016-07-06 3 views
0

Android에서 Bluetooth를 통해 Zebra RW420에 연결된 경우 Zebra RW420의 프린터 상태를 가져올 수 없습니다 (스마트 폰과 프린터는 이미 페어링되어 있으며 필요한 모든 권한이 매니페스트 파일에 있습니다).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); 

부분 나는 API (19) 나는 다음과 같은 예외가 위한 프로그램입니다 Zebra 샘플 코드에서 얻은 것입니다.

PrinterStatus와 관련된 코드 줄을 제거하면 안드로이드 스마트 폰에서 RW420 프린터로 인쇄 명령을 보낼 수 있으며 아무런 문제없이 레이블/qr-codes가 인쇄됩니다.

프린터에 문제가있을 때 대화 상자를 표시하려면 프린터 상태를 알아야합니다. 용지 없음 등

UPDATE : I는 데이터 발생 않는 프린터에 ~ HS 명령을 전송 시도 는 프린터에 용지가없는 나 이탈로 다시하지만 테스트를 보내지 머리가 다시 오는 데이터를 열면 문제가 있음을 나타내지 않습니다.

+0

'linkos_printer' 인스턴스를 주석 처리하고'printer.getcurrentStatus'를 직접 호출하면 어떻게됩니까? –

+0

정확히 같은 결과입니다. 처음에는'printer.getCurrentStatus'만으로 시도해 봤습니다. RW420은 LinkOsPrinter가 아니기 때문에 linkos_printer는 null입니다. 프린터를 Zebra 도구 중 하나를 사용하여 상태에 맞게 구성해야하는지 궁금합니다. – solarrobor

+0

어디에서 문제를 해결할 수 있습니까? – PLOW

답변

0

초당 Thread.Sleep (또는 안드로이드 상당)을 시도하고 몇 번 다시 시도하십시오.

동일한 오류 메시지가 표시되는 .NET 플랫폼에서도 마찬가지입니다. 아직 연결할 시간이 없었던 것 같습니다.

+0

좀 더 자세히 설명해 주실 수 있습니까? – PLOW

+0

다시 작동하는지 확인하기 위해 2 ~ 3 번 다시 시도하십시오. –

+0

나는 당신의 제안을 시도했다. 나는'IPrintStatus status = printer.CurrentStatus; Thread.Sleep (5000);'상태를 얻을 때까지 10 번 실행되지만 결코 실행되지 않는 루프 내부. 'Thread.Sleep'은 언제 부를까요? – PLOW