我们正在为使用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 ...它强制你指定内存库。
感谢您的时间。
答案 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属性中的内存库数据。