1

我们正在为使用 RFID 标签和摩托罗拉 919Z 手持阅读器的客户开发定制的固定资产解决方案。到目前为止,它进展顺利,因为我们基于摩托罗拉的 EMDK 示例。我们正在使用 VB.NET。

问题是,我们有一组 Confidex Steelwave 标签,由于它们是硬标签,因此无法在打印机中进行标记,因此使用示例软件对它们进行了标记,将相关数据保存到 USER 内存库中,而另一组不同的可打印Confidex 标签使用 Zebra RZ400 打印机进行标记,相关数据写入 EPC Tag ID 字段。

现在,我们被要求同时读取两个字段(一种情况下是 EPC 标签 ID,另一种情况下是 USER 内存库)。也就是说,如果相关数据被标记在 USER 内存库中,则标签 ID 包含不相关的十六进制数字,如果使用了 EPC 标签 ID,则 USER 内存库为空白或填充零。

现在,如果用户不停止读取和切换库(在软件中),我们无法找到同时读取两个库的方法,所以我们想知道它是否可能首先出现。

我不确定我是否应该发布代码,因为它有点长......也许相关部分是:

如果我们使用 Inventory.Perform ...它不会读取 USER 内存库,而且它似乎没有使用访问过滤器

如果我们使用 OperationSequence.PerformSequence ...它会强制您指定内存库。

谢谢你的时间。

4

2 回答 2

0

我有同样的问题,我找到了解决方案。

使用OperationSequence.PerformSequence,但诀窍是首先添加多个操作。所以添加一个读取 USER bank 的操作,然后添加另一个读取 EPC bank 的操作,如下所示:

RFIDReader reader = new RFIDReader();
reader.Connect();

MEMORY_BANK[] banks = new MEMORY_BANK[] {
    MEMORY_BANK.MEMORY_BANK_EPC, 
    MEMORY_BANK.MEMORY_BANK_USER, 
    MEMORY_BANK.MEMORY_BANK_RESERVED, 
    MEMORY_BANK.MEMORY_BANK_TID
};
foreach(MEMORY_BANK bank in banks) {
    TagAccess.Sequence.Operation op = new TagAccess.Sequence.Operation();
    op.AccessOperationCode = ACCESS_OPERATION_CODE.ACCESS_OPERATION_READ;
    op.ReadAccessParams.MemoryBank = bank;
    reader.Actions.TagAccess.OperationSequence.Add( op );
}

然后只需调用,只要标签在扫描仪的可读距离内,reader.Actions.TagAccess.OperationSequence.PerformSequence您就会获得每个银行、每个标签的事件。Read

于 2014-04-19T11:16:56.797 回答
0

您需要在需要设置存储库的标签盘点之前执行操作序列。之后,每当您开始盘点时,您将在 tagID 属性中获取 EPC,在 MemoryBankData 属性中获取存储库数据。

于 2014-08-02T12:01:55.453 回答