如何访问RFID标签中的EPC和USER存储库(Motorola EMDK + .NET)

时间:2014-01-20 20:10:31

标签: .net rfid motorola-emdk

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

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

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

现在,我们无法在没有用户停止读取和切换库(用软件)的情况下找到同时读取两个库的方法,所以我们想知道它是否有可能在第一时间。

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

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

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

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

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

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

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个事件。

答案 1 :(得分:0)

您需要在必须设置内存库的标记清单之前执行操作序列。每当您开始清点时,您将获得标识ID属性中的EPC和MemoryBankData属性中的内存库数据。