Zebra RFID SDK 2.0.4.192 USB重连时触发RFID_API_COMMAND_TIMEOUT异常的问题求助
Zebra RFID SDK 2.0.4.192 USB重连时触发RFID_API_COMMAND_TIMEOUT异常的问题求助
大家好,我目前正在基于Zebra RFID SDK 2.0.4.192开发RFID标签扫描功能,搭配的硬件是RFD40手持阅读器和TC53安卓设备。
在测试SDK自带的SampleApp时,我碰到了一个头疼的问题:把RFD40通过USB拔掉再重新连接后,SampleApp完全没法重新建立连接,必须杀掉应用进程再重启才能恢复正常。具体表现是调用reader.connect()方法时,会抛出OperationFailureException,错误码为RFID_API_COMMAND_TIMEOUT,之后扫描功能彻底失效,连阅读器的触发键都不再被系统识别。
我尝试过在调用connect()前通过reader.setTimeout(10000)把超时时间调整到10秒,但问题依然没有解决。
以下是触发问题的核心代码片段:
private synchronized String connect() { if (reader != null) { Log.d(TAG, "connect " + reader.getHostName()); try { if (!reader.isConnected()) { // Establish connection to the RFID Reader reader.setTimeout(10000); reader.connect(); ConfigureReader(); //Call this function if the readerdevice supports scanner to setup scanner SDK //setupScannerSDK(); if (reader.isConnected()) { return "Connected: " + reader.getHostName(); } } } catch (InvalidUsageException e) { e.printStackTrace(); } catch (OperationFailureException e) { e.printStackTrace(); Log.d(TAG, "OperationFailureException " + e.getVendorMessage()); String des = e.getResults().toString(); return "Connection failed" + e.getVendorMessage() + " " + des; } } return ""; }
对应的错误堆栈日志如下:
2025-08-26 16:59:30.000 31235-31270 IRFIDinfo com.zebra.rfid.demo.sdksample D GetResponseDataReceived GetCapabilities tm 2000 2025-08-26 16:59:30.019 31235-31367 RFIDSerialIOMgr com.zebra.rfid.demo.sdksample I Stopping mState=STOPPED 2025-08-26 16:59:32.001 31235-31270 IRFIDError com.zebra.rfid.demo.sdksample D RFIDPROTOAscii: GetStatus: RFID_API_COMMAND_TIMEOUTGetCapabilities size 0 2025-08-26 16:59:32.001 31235-31270 IRFIDinfo com.zebra.rfid.demo.sdksample D logError RFID_API_COMMAND_TIMEOUT Response timeout 2025-08-26 16:59:32.002 31235-31270 IRFIDinfo com.zebra.rfid.demo.sdksample D getLinkProfilesCaps results : RFID_API_COMMAND_TIMEOUT 2025-08-26 16:59:32.002 31235-31270 IRFIDinfo com.zebra.rfid.demo.sdksample D getLinkProfilesCaps results : RFID_API_COMMAND_TIMEOUT 2025-08-26 16:59:32.007 31235-31270 System.err com.zebra.rfid.demo.sdksample W com.zebra.rfid.api3.OperationFailureException 2025-08-26 16:59:32.009 31235-31270 System.err com.zebra.rfid.demo.sdksample W at com.zebra.rfid.api3.ProcessErrorCode.ThrowException(ProcessErrorCode.java:16) 2025-08-26 16:59:32.009 31235-31270 System.err com.zebra.rfid.demo.sdksample W at com.zebra.rfid.api3.RFIDReader.postConnectInitialize(RFIDReader.java:328) 2025-08-26 16:59:32.010 31235-31270 System.err com.zebra.rfid.demo.sdksample W at com.zebra.rfid.api3.RFIDReader.connect(RFIDReader.java:686) 2025-08-26 16:59:32.010 31235-31270 System.err com.zebra.rfid.demo.sdksample W at com.zebra.rfid.demo.sdksample.RFIDHandler.connect(RFIDHandler.java:834) 2025-08-26 16:59:32.011 31235-31270 System.err com.zebra.rfid.demo.sdksample W at com.zebra.rfid.demo.sdksample.RFIDHandler.access$800(RFIDHandler.java:46) 2025-08-26 16:59:32.011 31235-31270 System.err com.zebra.rfid.demo.sdksample W at com.zebra.rfid.demo.sdksample.RFIDHandler$ConnectionTask.doInBackground(RFIDHandler.java:767) 2025-08-26 16:59:32.014 31235-31270 System.err com.zebra.rfid.demo.sdksample W at com.zebra.rfid.demo.sdksample.RFIDHandler$ConnectionTask.doInBackground(RFIDHandler.java:761) 2025-08-26 16:59:32.015 31235-31270 System.err com.zebra.rfid.demo.sdksample W at android.os.AsyncTask$3.call(AsyncTask.java:394) 2025-08-26 16:59:32.015 31235-31270 System.err com.zebra.rfid.demo.sdksample W at java.util.concurrent.FutureTask.run(FutureTask.java:317) 2025-08-26 16:59:32.016 31235-31270 System.err com.zebra.rfid.demo.sdksample W at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305) 2025-08-26 16:59:32.016 31235-31270 System.err com.zebra.rfid.demo.sdksample W at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156) 2025-08-26 16:59:32.017 31235-31270 System.err com.zebra.rfid.demo.sdksample W at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651) 2025-08-26 16:59:32.017 31235-31270 System.err com.zebra.rfid.demo.sdksample W at java.lang.Thread.run(Thread.java:1119) 2025-08-26 16:59:32.017 31235-31270 RFID_SAMPLE com.zebra.rfid.demo.sdksample D OperationFailureException Response timeout 2025-08-26 16:59:45.766 31235-31248 System com.zebra.rfid.demo.sdksample W A resource failed to call close. 2025-08-26 16:59:45.769 31235-31248 System com.zebra.rfid.demo.sdksample W A resource failed to call UsbRequest.close. 2025-08-26 16:59:45.769 31235-31248 UsbRequestJNI com.zebra.rfid.demo.sdksample D close 2025-08-26 16:59:45.770 31235-31248 System com.zebra.rfid.demo.sdksample W A resource failed to call UsbRequest.close
有没有朋友遇到过类似的问题?或者有什么解决思路可以分享一下?
内容来源于stack exchange
相关产品推荐
相关产品推荐

