微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Zebra RFID API 读取访问操作代码返回空

如何解决Zebra RFID API 读取访问操作代码返回空

我正在尝试为 Zebra 手持式 rfid 阅读器开发一个小型应用程序,但找不到访问标签 MemoryBank 的方法。我的阅读器配置如下:

 private void ConfigureReader() {
    if (reader.isConnected()) {
        TriggerInfo triggerInfo = new TriggerInfo();
        triggerInfo.StartTrigger.setTriggerType(START_TRIGGER_TYPE.START_TRIGGER_TYPE_IMMEDIATE);
        triggerInfo.StopTrigger.setTriggerType(STOP_TRIGGER_TYPE.STOP_TRIGGER_TYPE_IMMEDIATE);
        try {
            // receive events from reader
            if (eventHandler == null){
                eventHandler = new EventHandler();
            }
            reader.Events.addEventsListener(eventHandler);
            // HH event
            reader.Events.setHandheldEvent(true);
            // tag event with tag data
            reader.Events.setTagReadEvent(true);
            reader.Events.setAttachTagDataWithReadEvent(true);
            // set trigger mode as rfid so scanner beam will not come
            reader.Config.setTriggerMode(ENUM_TRIGGER_MODE.RFID_MODE,true);
            // set start and stop triggers
            reader.Config.setStartTrigger(triggerInfo.StartTrigger);
            reader.Config.setStopTrigger(triggerInfo.StopTrigger);
        } catch (InvalidUsageException e) {
            e.printstacktrace();
        } catch (OperationFailureException e) {
            e.printstacktrace();
        }
    }
}

eventReadNotify 看起来像这样:

public void eventReadNotify(RfidReadEvents e) {
        // Recommended to use new method getReadTagsEx for better performance in case of large tag population
        TagData[] mytags = reader.Actions.getReadTags(100);
        if (mytags != null) {
            for (int index = 0; index < mytags.length; index++) {
                Log.d(TAG,"Tag ID " + mytags[index].getTagID());
                ACCESS_OPERATION_CODE aoc = mytags[index].getopCode();
                ACCESS_OPERATION_STATUS aos = mytags[index].getopStatus();
                if (aoc == ACCESS_OPERATION_CODE.ACCESS_OPERATION_READ && aos == ACCESS_OPERATION_STATUS.ACCESS_SUCCESS) {
                    if (mytags[index].getMemoryBankData().length() > 0) {
                        Log.d(TAG," Mem Bank Data " + mytags[index].getMemoryBankData());
                    }
                }
            }
        }
    }

当我扫描标签时,我得到了正确的 TagID,但 mytags[index].getopCode()mytags[index].getopStatus() 都返回空值。

我感谢每一个可能导致成功扫描的建议。

谢谢。

解决方法

我设法为我的问题找到了解决方案。要使用 Zebra 手持式扫描器执行任何读取或写入任务,必须满足以下两个条件。在此处查看参考:How to write to RFID tag using RFIDLibrary by Zebra?

// make sure Inventory is stopped
reader.Actions.Inventory.stop();

// make sure DPO is disabled
reader.Config.setDPOState(DYNAMIC_POWER_OPTIMIZATION.DISABLE);

您必须停止库存并确保禁用 dpo 才能从标签中获取 TagID 以外的数据。不幸的是,阅读 RFID 标签的文档中没有提到这一点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。