我们正在为使用RFID标签和摩托罗拉919Z手持式读卡器的客户开发一个定制的固定资产解决方案。到目前为止,它一直进展顺利,因为我们基于摩托罗拉的EMDK示例。我们使用的是VB.NET。
问题是,我们有一组无法在打印机中标记的Confidex Steelwave标签,因为它们是硬标签,因此使用示例软件对它们进行标记,将相关数据保存到用户存储库,而另一组不同的可打印Confidex标签使用Zebra RZ400打印机进行标记,并将相关数据写入EPC标签ID字段。
现在,我们需要同时读取这两个字段(一种情况下是EPC标签ID,另一种情况下是用户记忆库)。也就是说,如果在用户存储库中标记了相关数据,则标签ID包含不相关的十六进制数字,并且如果使用了EPC标签ID,则用户存储库为空或零填充。
现在,如果用户不停止读取并切换存储体(在软件中),我们就无法找到同时读取两个存储体的方法,所以我们想知道这是否可能。
我不确定我是否应该发布代码,因为它有点长…也许相关的部分是:
如果我们使用Inventory.Perform,...it不会读取用户内存库,而且它似乎也不会使用访问过滤器
如果我们使用OperationSequence.PerformSequence,...it会强制你指定内存库。
耽误您时间,实在对不起。
发布于 2014-04-19 19:16:57
我也有同样的问题,我找到了解决方案。
使用OperationSequence.PerformSequence,但诀窍是首先添加多个操作。因此,添加一个读取用户库的操作,然后添加另一个读取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事件,只要这些标签在扫描仪可读的距离内。
发布于 2014-08-02 20:01:55
您需要在清点标签之前执行操作序列,在这里您必须设置memory bank.After it每当您要开始清点时,您将在tagID属性中获得EPC,在MemoryBankData属性中获得内存块数据。
https://stackoverflow.com/questions/21243208
复制相似问题