动态二进制搜索算法是在传统二进制算法的基础上进行改进的。
传统二进制算法,每次传输的数据是全部长度的序列号,造成了识读时间段浪费;因此动态的二进制搜索算法在每次传输中,阅读器传输一部分,标签传输一部分(阅读传送部分+标签传送部分=序列号总长度),总的传输量是传统方法的一半,因此减少了因传输数据而引起的识读时间浪费。
动态的二进制算法的主要命令和传统的二进制搜索算法一样,只是传输策略上有所不同。
动态二进制搜索算法的识读过程
1、阅读第一次发送最大序列号,请求所有标签发回其自身的序列号。
2、阅读器检测到碰撞位,将最高碰撞位(X)置0,阅读器只传输N~X的位作为下一次的请求序列号。
3、标签接收到新一轮的序列号,只有序列号与N~X位相同的标签,才会把其剩余的序列号(X-1~1)发送给阅读器。
4、阅读器检测新一轮的碰撞位(Y),如果碰撞位是次高位(即第一次检测到的碰撞中的,最高碰撞位的后面一位碰撞位),则直接置0;如果不是,则把次高位和当前碰撞位都置0;然后阅读器只传输N~Y位作为下一次的请求序列号。
5、直到接收到的序列号没有检测到碰撞,才用改序列号选中标签,进行读写;读写完后,使其“休眠”,不对接下来的命令进行响应。
6、重复以上步骤,直到所有的标签都被读取。
注意:a)在该改进算法中,要注意通过附加参数把有效位的编号发送给射频卡,以保证每次响应的位置是正确的;b)通常序列号的规模在8字节以上。