You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 08:45:30