l 主流程
说明:
a) 阅读器对卡发送Initialize命令,让所有接收到该命令的卡进入准备好状态。该命令没有返回信息。
b) 阅读器对卡发送Select命令,让所有处于准备好状态和碰撞状态的接收到该命令,则进入碰撞状态。接收卡片返回信息,如果CRC-16校验正确,则进入单卡处理流程,否则进入步骤c
c) Restore将所有处于CardHalt状态的卡恢复到ID状态,参与防碰撞。
d) 执行碰撞处理流程
e) 看是否有新卡,有新卡就回到第b步,否则继续
f) 看是否退出循环找卡,如果是则结束找卡,否则继续
g) 回到b继续
l 单卡处理流程
a) 对找到的卡发送Halt命令,将其状态切换到CardHalt状态。
b) 对得到的卡号进行校验对比,如果得到的卡号正确则执行步骤c,否则执行步骤e
c) 暂存卡号,或者将卡号给到上位机进行处理。
d) 发送READ命令,让该卡切换到DataExchange状态。让该卡不再参与防碰撞。
e) 结束流程
l 碰撞处理流程
利用Fail或者Success命令进行处理,算法按ISO18000-6B算法进行处理。可以参考ISO/IEC 18000-6:2004(E)的第92页。
4. 改进后的算法优点
该防碰撞处理算法兼容以前协议,支持以前防碰撞协议的阅读器同样实用于本算法的。
该算法可以让碰撞得到的卡临时进入CardHalt状态,确认卡号后在进入DataExchange 状态,当受到干扰而没有得到确认的卡的CardHalt状态可以通过Restore命令恢复到ID状态,从新参与防碰撞处理。
利用该算法可以尽可能地让同一张卡只一次切换到DataExchange状态,而不再用Initialize命令回到Ready状态从新开始处理。而可以提高阅读器找卡速率。
利用该算法可以实时监视新卡。因为以前找到的卡在供电稳定的情况下一直会处于DataExchange状态,而无需参与碰撞过程的。
五、 结束语
本协议从产品设计的角度提出了一种支持ISO18000-6B技术标准的卡片,在原来防碰撞算法基础上增加了3条处理命令。从理论上讲可提高在无线电干扰情况下的找卡性能,减少重复找卡次数,从而提高找卡速率。
相信本算法的实施会让实际产品性能有很大提高,对ISO18000-6B防碰撞算法是个补充。