产生扫描标识的方法以及对天线设备进行扫描的方法转让专利

申请号 : CN200610098465.0

文献号 : CN1901276B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡健

申请人 : 华为技术有限公司

摘要 :

本发明公开了一种产生扫描标识的方法,该方法包含以下步骤:根据节点值生成UID和比特掩码;获取i除以UID最大字节长度后的模Pi以及i除以UID最大字节长度后结果中整数部分的值Qi,取转换后UID第Pi字节中第Qi位的值为与生成的UID中第i位的值相同的值,取转换后比特掩码第Pi字节中第Qi位的值为1,i为小于生成的UID有效位长度的所有自然数;转换后UID和转换后比特掩码中其余位的值均取0;将转换后UID和转换后比特掩码作为扫描标识。本发明还公开了一种对天线设备进行扫描的方法。使用本发明公开的方法,能够解决当出现一个端口下面两个天线设备的UID相同字节较多的情况下,扫描速度非常慢的问题。

权利要求 :

1.一种产生扫描标识的方法,其特征在于,该方法包含以下步骤:

A、根据节点值生成唯一标识UID和比特掩码;

B、确定转换后UID和转换后比特掩码的字节长度;获取i除以UID最大字节长度后的模Pi,获取i除以UID最大字节长度后结果中整数部分的值Qi,取转换后UID第Pi字节中第Qi位的值为与生成的UID中第i位的值相同的值,取转换后比特掩码第Pi字节中第Qi位的值为1,i为小于生成的UID有效位长度的所有自然数,Pi、Qi为自然数;转换后UID和转换后比特掩码中其余位的值均取0;

C、将转换后UID和转换后比特掩码作为扫描标识。

2.根据权利要求1所述的方法,其特征在于,步骤A所述生成UID的方法为:使生成的UID与节点值相同。

3.根据权利要求1所述的方法,其特征在于,步骤A所述生成比特掩码的方法为:使生成的比特掩码长度与生成的UID长度相同,生成的比特掩码中位数低于所述节点的层数的位的值均取1,其余位的值均取0。

4.根据权利要求1所述的方法,其特征在于,步骤B所述确定转换后UID和转换后比特掩码的字节长度的方法为:确定转换后UID和转换后比特掩码的字节长度为UID最大字节长度。

5.根据权利要求1所述的方法,其特征在于,步骤B所述确定转换后UID和转换后比特掩码的字节长度的方法为:判断生成的UID有效位长度是否小于UID最大字节长度,如果是,则转换后UID和转换后比特掩码的字节长度等于生成的UID有效位长度,否则转换后UID和转换后比特掩码的字节长度等于UID最大字节长度。

6.根据权利要求5所述的方法,其特征在于,所述生成的UID有效位长度与生成的比特掩码中位值为1的所有位的长度相同。

7.根据权利要求1所述的方法,其特征在于,步骤C所述扫描标识中包括有效字节长度;

所述有效字节长度等于转换后UID和转换后比特掩码的字节长度。

8.根据权利要求1至7任一项所述的方法,其特征在于,所述节点值为二叉树上的节点值。

9.一种对天线设备进行扫描的方法,其特征在于,该方法包含以下步骤:

A1、主站遍历到二叉树的一个节点;

B1、根据遍历到的节点值生成UID和比特掩码;确定转换后UID和转换后比特掩码的字节长度;获取i除以UID最大字节长度后的模Pi,获取i除以UID最大字节长度后结果中整数部分的值Qi;取转换后UID第Pi字节中第Qi位的值为与生成的UID中第i位的值相同的值,取转换后比特掩码第Pi字节中第Qi位的值为1,i为小于生成的UID有效位长度的所有自然数,Pi、Qi为自然数;转换后UID和转换后比特掩码中其余位的值均取0;将转换后UID和转换后比特掩码作为扫描标识;

C1、主站将包含扫描标识的扫描消息广播发送给总线上的所有天线设备,并检测天线设备的响应,如果检测结果为没有出现冲突,则执行步骤D1,如果检测结果为出现冲突,则执行步骤E1;

D1、截取二叉树中当前节点以下的所有分支;

E 1、判断是否遍历完整个二叉树,如果是,则结束本处理流程,否则返回步骤A1。

10.根据权利要求9所述的方法,其特征在于,所述遍历采用二叉树的先根遍历法进行。

11.根据权利要求9所述的方法,其特征在于,步骤B1所述生成UID的方法为:使生成的UID与遍历到的节点值相同。

12.根据权利要求9所述的方法,其特征在于,步骤B1所述生成比特掩码的方法为:使生成的比特掩码长度与生成的UID长度相同,生成的比特掩码中位数低于所述节点的层数的位的值均取1,其余位的值均取0。

13.根据权利要求9所述的方法,其特征在于,步骤B1所述确定转换后UID和转换后比特掩码的字节长度的方法为:确定转换后UID和转换后比特掩码的字节长度为UID最大字节长度。

14.根据权利要求9所述的方法,其特征在于,步骤B1所述确定转换后UID和转换后比特掩码的字节长度的方法为:判断生成的UID有效位长度是否小于UID最大字节长度,如果是,则转换后UID和转换后比特掩码的字节长度等于生成的UID有效位长度,否则转换后UID和转换后比特掩码的字节长度等于UID最大字节长度。

15.根据权利要求14所述的方法,其特征在于,所述生成的UID有效位长度与生成的比特掩码中位值为1的所有位的长度相同。

16.根据权利要求9所述的方法,其特征在于,步骤C1所述没有出现冲突为:检测结果为没有出现冲突且收到一个或一个以上正确响应,或者是检测结果为没有收到任何响应。

说明书 :

技术领域

本发明涉及一种扫描技术,特别涉及产生扫描标识的方法以及对天线设备进行扫描的方法。

背景技术

天线接口标准组织(AISG,Antenna Interface Standards Group)协议中规定任何一个天线设备(ALD,Antenna line device)均需要一个全球唯一的唯一标识(UID,Unique ID)。UID需要通过扫描获取,扫描过程简单描述如下:主站即天线控制器将带有比特掩码(BIT MASK)和UID的消息以广播方式下发给总线上的所有从站ALD,ALD收到此消息后,如果将自身的UID和BIT MASK做与运算后得到的值与收到消息中的UID一致,则向主站回送带有自身UID的扫描响应。两个或两个以上的设备同时回送成功响应时,主站有时可以收到所有正确响应,有时会收到错误的数据,主站如果收到错误的数据,则会认为出现冲突,并继续扫描。UID通常包含有效位和无效位,所述有效位的值可以为1,也可以为0,所述无效位的值均为0。比如:UID=00000101、且UID有效位长度为4;UID=00000001、UID有效位长度为2等。目前协议规定UID的最大长度为19个字节共152位,实际应用中,如果协议允许,UID的最大长度也可以为别的数。本文中所述UID最大长度或UID最大字节长度根据协议确定,比如为19个字节等。
如何保证完备地生成扫描消息,同时不至于消耗很长的扫描时间,取决于采用的扫描算法,AISG协议推荐采用二叉树算法。
采用二叉树算法对天线设备进行扫描时的过程如图1所示,该过程包含以下步骤:
步骤101:主站遍历到二叉树的一个节点。
步骤101中,主站可以采用二叉树的先根遍历法遍历到一个节点。
所述二叉树可以如图1A所示,图1A中标出了各个节点值。所述二叉树的节点值预先生成,比如:层一的左节点11a、右节点11b的值分别为00000001和00000000;层二的四个节点从左到右的其值分别为二进制的:节点12aa为00000011、节点12ab为00000001、节点12ba为00000010、节点12bb为00000000;等等。
实际应用中,二叉树的某一层的每个节点值的有效比特位的0和1的取值可以取反,此时同一层的所有兄弟节点以及该层以下所有子节点的0和1的取值也要取反。比如层一的两个节点从左到右其值分别为00000000和00000001,则层二的四个节点从左到右其值分别为二进制的00000000、00000010、00000001、00000011,等等。所述节点值的有效比特位根据所述节点的层数决定,具体地说,如果节点的层数为第n层,则节点值中第0位至第n-1位为有效比特位。比如层一两个节点的有效比特位为第0位,层二两个节点的有效比特位为第0位、第1位等。
步骤102:根据遍历到的节点值生成UID和比特掩码,并将生成的UID和比特掩码作为扫描标识的。
步骤102包括了现有技术中产生扫描标识的方法,具体为:根据遍历到的二叉树节点值生成UID和比特掩码,并直接将生成的UID和生成的比特掩码作为扫描标识。
所述生成UID的方法为:使生成的UID与遍历到节点值相同。比如遍历到二叉树层一的某节点,其节点值为00000001时,生成的UID为00000001。
所述生成比特掩码的方法为:使生成的比特掩码长度与生成的UID长度相同,生成的比特掩码中位数低于遍历到节点层数的位的值均取1,其余位的值均取0。比如:遍历到二叉树层一节点时,生成的比特掩码长度与生成的UID长度相同为1字节,其中,由于小于层数1的自然数只有0,因此生成的比特掩码中第0位值取1,第1位至第7位值均取0,即生成的比特掩码为00000001;对应于二叉树层二四个节点的比特掩码长度为1字节,其中,由于小于层数2的自然数有两个,为0和1,因此生成的比特掩码中第0位、第1位值均取1,第2位至第7位值均取0,即生成的比特掩码为00000011;等等。
步骤102中,将生成的UID和生成的比特掩码作为扫描标识时,扫描标识中还包含有效字节长度,所述有效字节长度等于生成的UID和生成的比特掩码的字节长度。比如:生成的比特掩码为00000011、生成的UID为00000010,则扫描标识中包含的有效字节长度为1字节。
扫描标识中包含的有效字节长度,用于通知ALD所需要读取的UID字节长度。比如:扫描标识中有效字节长度为2,则ALD将只读取自身UID的最低两个字节来与扫描标识中的比特掩码进行与计算,并与扫描标识中UID进行比较。
步骤103:主站将包含扫描标识的扫描消息广播发送给总线上的所有ALD,并检测ALD的响应,如果检测结果为没有出现冲突,则执行步骤104,如果检测结果为出现冲突,则执行步骤105。
步骤103所述扫描消息中除了扫描标识,还包括其它内容,所述其它内容可以参见协议生成,在此不再详述。
所述没有出现冲突可以为:检测结果为没有出现冲突且收到一个或一个以上正确响应,也可以为检测结果为没有收到任何响应。
如果检测结果为主站收到一个或一个以上正确响应,则表明当前节点即当前遍历到节点的扫描完成,此时可以保存扫描结果以用于扫描结束后进一步处理。
步骤104:截取二叉树中当前节点以下的所有分支。
步骤105:判断是否遍历完整个二叉树,如果是,则结束本处理流程,否则返回步骤101。
图1所示步骤103中,如果主站检测到的响应情况是主站收到一个或一个以上正确响应,或者检测结果为没有收到任何响应,则执行步骤104来截取二叉树中当前节点以下的所有分支。此时,在步骤105之后返回步骤101时,将不遍历该节点下属各分支,即,此时步骤101中如果利用先根遍历法进行遍历,则下一个遍历到节点为:如果当前节点有右兄弟节点,则下一个遍历到节点为其右兄弟节点;如果当前节点没有右兄弟节点,则下一个遍历到节点为其父节点的右兄弟节点,如果其父节点仍没有右兄弟节点,则下一个遍历到节点为其父节点的父节点的右兄弟节点,如此循环。如果整个树遍历完,即遍历结束,则步骤105之后,结束扫描流程。
图1所示步骤103中,如果主站的检测结果为天线设备响应出现冲突,则直接执行步骤105,并在步骤105之后返回步骤101时,通过循环执行步骤101~步骤105,可以对当前节点的所有子节点进行遍历。比如:当前节点存在两个子节点:左子节点X、右子节点X’,步骤101中利用先根遍历法进行遍历时,可以先遍历到节点X,并在循环执行步骤101~步骤105之后,可以再遍历到节点X’。这里,如果遍历到节点X之后还是出现冲突,则会进一步扫描节点X的所有子节点。
图1中对天线设备进行扫描的过程可以用图2所示包括扫描流程的扫描树表示。图2所示扫描树的各个扫描节点上表示出对应的扫描标识,比如:扫描树中层一左节点21a的扫描标识为BIT MASK=0...01、UID=00000001、有效字节长度(Length)=1字节;层二节点22aa的扫描标识为BITMASK=0...011、UID=00000011、有效字节长度(Length)=1字节,等等。
结合图1、图1A和图2,可以对现有技术中的扫描过程进行举例说明。如根据先根遍历法进行扫描时:
步骤101中,主站遍历到二叉树的一个节点,如图1A中的层一左节点11a。
步骤102中,根据遍历到节点值生成的UID和比特掩码为:UID=00000001、BIT MASK=0...01,并把生成的UID和比特掩码直接作为扫描标识,此时,扫描标识中还包括有效字节长度(Length)为1的信息,如在图2中扫描节点21a中所示。
步骤103中,将包含图2中扫描节点21a中所示扫描标识的扫描消息广播发送给总线上的所有ALD后,如果检测结果为没有出现冲突,则执行步骤104来截取二叉树中节点11a以下的所有分支,此时,再执行步骤105后返回步骤101时,遍历到的节点为图1A中所示层一右节点11b,并通过步骤102产生的扫描标识如图2中扫描节点21b中所示,为:UID=00000000、BITMASK=00000001、有效字节长度(Length)=1。紧接着步骤103中,将包含图2所示节点21b所示扫描标识的扫描消息广播发送给总线上的所有ALD后,如果检测结果为没有出现冲突,则扫描结束。
就是说:根据先根遍历法进行扫描时,如果一直没有出现冲突,则扫描标识依次可以如图2中的扫描节点21a、21b所示,之后结束扫描。
步骤103中,将包含图2中节点21a中所示扫描标识的扫描消息广播发送给总线上的所有ALD后,如果检测结果为出现冲突,则直接执行步骤105之后返回步骤101时,遍历到的节点为图1A中所示层二节点12aa,并通过步骤102产生的扫描标识如图2中扫描节点22aa中所示,为:UID=00000011、BITMASK=00000011、有效字节长度(Length)=1。紧接着步骤103中,将包含图2中节点22aa中所示扫描标识的扫描消息广播发送给总线上的所有ALD后,如果检测结果为没有出现冲突,则执行步骤104来截取图1A所示节点12aa以下的所有分支,此时,再执行步骤105后返回步骤101时,遍历到的节点为图1A中所示层二节点12ab,并通过步骤102产生的扫描标识如图2中扫描节点22ab中所示,为:UID=00000001、BIT MASK=00000011、有效字节长度(Length)=1,这里,扫描节点22ab之后没有出现冲突,则下一步轮到扫描节点21b;将包含图2中节点22aa中所示扫描标识的扫描消息广播发送给总线上的所有ALD后,如果检测结果为出现冲突,则直接执行步骤105后返回步骤101时,遍历到的节点为图1A中所示层三右节点13aaa,并通过步骤102产生的扫描标识如图2中扫描节点23aaa中所示,为:UID=00000111、BITMASK=00000111、有效字节长度(Length)=1。
就是说:根据先根遍历法进行扫描时,如果只出现一次冲突,则扫描标识依次可以如图2中的扫描节点21a、22aa、21b所示,之后结束扫描;如果出现连续冲突,则扫描标识依次可以如图2中的扫描节点21a、22aa、23aaa....、所示。
对于出现连续冲突的情况,可以参见图2所示扫描树,其扫描情况具体可以如表一所示:
  扫描  顺序   Length   UID   比特掩码   说明   第一步   1   00000001   00000001   扫描节点21a。扫描UID第0  位值是否为1   第二步   1   00000011   00000011   扫描节点22aa。由于第一  步中UID第0位值为1时出  现冲突,因此第二步中进  一步扫描UID第1位值是否  为1   第三步   1   00000111   00000111   扫描节点23aaa。由于第二  步中UID第1位值为1时继  续出现冲突,因此第三步  中进一步扫描UID第2位值  是否为1   ......   ......   ......   ......   ......
表一
现有技术中,对一个UID的扫描过程可以概括为:
第一步:扫描UID第0位。这里,所述第0位值可以为1,也可以为0,通常情况下会先扫描UID第0位值是否为1,如果出现冲突,则执行第二步,如果没有出现冲突或执行第二步之后直至没有出现冲突时,则会扫描UID第0位值是否为0。表一中以扫描的UID第0位值为1时出现冲突为例进行了说明。
第二步:由于第一步中UID第0位值为1时出现冲突,因此第二步中进一步扫描UID第1位。这里,所述第1位值可以为1,也可以为0,通常情况下会先扫描UID第1位值是否为1,如果继续出现冲突,则执行第三步,如果没有出现冲突或执行第三步之后直至没有出现冲突时,则会扫描UID第1位值是否为0。表一中以扫描的UID第1位值为1时继续出现冲突为例进行了说明。
第三步:由于第二步中UID第1位值为1时继续出现冲突,因此第三步中进一步扫描UID第2位。这里,所述第2位值可以为1,也可以为0,通常情况下会先扫描UID第2位值是否为1,如果继续出现冲突,则继续扫描下一位,如果没有出现冲突或继续扫描下一位后直至没有出现冲突时,则会扫描UID第2位值是否为0。表一中以扫描UID第2位值是否为1为例进行了说明。
可以看出,现有技术中对ALD进行扫描时,如果当前在扫描UID的第0位至第i位时出现冲突,则下一步扫描UID的第0位至第i+1位,即进一步扫描UID的第i+1位,因此现有技术中的扫描方法可以称为按位递增的扫描方法,i为自然数,且通常情况下i小于等于UID的最大位长度,比如0≤i≤151等。
现有技术的缺点是:
现有技术中根据二叉树的节点值生成UID和比特掩码,并直接将生成的UID和比特掩码作为扫描标识,根据现有技术中的扫描标识进行扫描时,对ALD采用逐位扫描的方式进行扫描,如果碰到两个UID的某一个或者多个字节相同,就会出现很多次的冲突。比如:两个UID的前10个字节相同,则可能会出现10×8=80次冲突。当出现一个端口下面两个ALD的UID相同字符较多的情况下,扫描速度非常慢,比如:两个ALD的UID的前80位相同,则主站可能需要下发81个扫描消息才能获取一个ALD的UID。

发明内容

有鉴于此,本发明的主要目的在于提供一种产生扫描标识的方法,能够产生跨字节的扫描标识。
本发明的另一目的在于提供一种对天线设备进行扫描的方法,能够在一个端口下面两个ALD的UID相同字节较多的情况下,提高扫描速度。
本发明的技术方案是这样实现的:
一种产生扫描标识的方法,该方法包含以下步骤:
A、根据节点值生成唯一标识UID和比特掩码;
B、确定转换后UID和转换后比特掩码的字节长度;获取i除以UID最大字节长度后的模Pi,获取i除以UID最大字节长度后结果中整数部分的值Qi,取转换后UID第Pi字节中第Qi位的值为与生成的UID中第i位的值相同的值,取转换后比特掩码第Pi字节中第Qi位的值为1,i为小于生成的UID有效位长度的所有自然数,Pi、Qi为自然数;转换后UID和转换后比特掩码中其余位的值均取0;
C、将转换后UID和转换后比特掩码作为扫描标识。
步骤A所述生成UID的方法为:使生成的UID与节点值相同。
步骤A所述生成比特掩码的方法为:使生成的比特掩码长度与生成的UID长度相同,生成的比特掩码中位数低于所述节点的层数的位的值均取1,其余位的值均取0。
步骤B所述确定转换后UID和转换后比特掩码的字节长度的方法为:确定转换后UID和转换后比特掩码的字节长度为UID最大字节长度。
步骤B所述确定转换后UID和转换后比特掩码的字节长度的方法为:判断生成的UID有效位长度是否小于UID最大字节长度,如果是,则转换后UID和转换后比特掩码的字节长度等于生成的UID有效位长度,否则转换后UID和转换后比特掩码的字节长度等于UID最大字节长度。
所述生成的UID有效位长度与生成的比特掩码中位值为1的所有位的长度相同。
步骤C所述扫描标识中包括有效字节长度;
所述有效字节长度等于转换后UID和转换后比特掩码的字节长度。
所述节点值为二叉树上的节点值。
该方法包含以下步骤:
A1、主站遍历到二叉树的一个节点;
B1、根据遍历到的节点值生成UID和比特掩码;确定转换后UID和转换后比特掩码的字节长度;获取i除以UID最大字节长度后的模Pi,获取i除以UID最大字节长度后结果中整数部分的值Qi;取转换后UID第Pi字节中第Qi位的值为与生成的UID中第i位的值相同的值,取转换后比特掩码第Pi字节中第Qi位的值为1,i为小于生成的UID有效位长度的所有自然数,Pi、Qi为自然数;转换后UID和转换后比特掩码中其余位的值均取0;将转换后UID和转换后比特掩码作为扫描标识;
C1、主站将包含扫描标识的扫描消息广播发送给总线上的所有天线设备,并检测天线设备的响应,如果检测结果为没有出现冲突,则执行步骤D1,如果检测结果为出现冲突,则执行步骤E1;
D1、截取二叉树中当前节点以下的所有分支;
E1、判断是否遍历完整个二叉树,如果是,则结束本处理流程,否则返回步骤A1。
所述遍历采用二叉树的先根遍历法进行。
步骤B1所述生成UID的方法为:使生成的UID与遍历到的节点值相同。
步骤B1所述生成比特掩码的方法为:使生成的比特掩码长度与生成的UID长度相同,生成的比特掩码中位数低于所述节点的层数的位的值均取1,其余位的值均取0。
步骤B 1所述确定转换后UID和转换后比特掩码的字节长度的方法为:确定转换后UID和转换后比特掩码的字节长度为UID最大字节长度。
步骤B1所述确定转换后UID和转换后比特掩码的字节长度的方法为:判断生成的UID有效位长度是否小于UID最大字节长度,如果是,则转换后UID和转换后比特掩码的字节长度等于生成的UID有效位长度,否则转换后UID和转换后比特掩码的字节长度等于UID最大字节长度。
所述生成的UID有效位长度与生成的比特掩码中位值为1的所有位的长度相同。
步骤C1所述没有出现冲突为:检测结果为没有出现冲突且收到一个或一个以上正确响应,或者是检测结果为没有收到任何响应。
本发明中,根据节点值生成UID和比特掩码后,对生成的UID和比特掩码进行转换,具体转换方法为:确定转换后UID和转换后比特掩码的字节长度;获取i除以UID最大字节长度后的模Pi,获取i除以UID最大字节长度后结果中整数部分的值Qi;取转换后UID第Pi字节中第Qi位的值为与生成的UID中第i位的值相同的值,取转换后比特掩码第Pi字节中第Qi位的值为1,i为小于生成的UID有效位长度的所有自然数,Pi、Qi为自然数;转换后UID和转换后比特掩码中其余位的值均取0;将转换后UID和转换后比特掩码作为扫描标识。本发明中利用上述方法产生的扫描标识,对天线设备进行扫描。
本发明有以下有益效果:
1)利用本发明中产生扫描标识的方法,能够产生跨字节的扫描标识。
2)本发明中将根据节点值生成UID和比特掩码进行转换,并将转换之后的UID和比特掩码作为扫描标识,扫描冲突时并不是按位递增扫描,而是跨越字节递增扫描,对于一个端口下面两个或两个以上ALD的UID相同字节较多的情况下,能够有效地提高扫描速度。
3)考虑到相同厂家的ALDUID可能比较类似,一旦出现冲突,则很可能这个字节完全一样,如在很多情况下相同厂家设备UID的前两个字节完全相同,此时利用本发明,通常可以提高扫描速度。比如两个设备UID的第0字节、第1字节完全相同,第2字节的第一位不相同,此时利用现有技术需要扫描8×2+1=17次,利用本发明只需要扫描3次,可见在这种情况下本发明显著提高了扫描速度。
4)天线设备中可以包含塔顶放大器,通常一个塔顶放大器包含两个UID,且所述两个UID通常仅是最后一个字节的第0位不同,这种情况下利用本发明,能够显著提高扫描速度。比如两个UID的有效字节均为6,其中,第0~第5字节完全相同,第6字节的第0位不同,此时利用现有技术需要扫描8×6+1=49次,利用本发明只需要扫描7次,可见在这种情况下本发明显著提高了扫描速度。

附图说明

图1为现有技术中采用二叉树算法对ALD进行扫描的过程示意图;
图1A为二叉树的结构示意图;
图2为现有技术中对ALD进行扫描的扫描树示意图;
图3为本发明实施例中对ALD进行扫描的过程示意图;
图4为本发明实施例中产生扫描标识的过程示意图;
图5为本发明实施例中对ALD进行扫描的扫描树示意图。

具体实施方式

本发明中产生扫描标识的方法为:
根据节点值生成UID和比特掩码;
对生成的UID和比特掩码进行转换,获取转换后的UID和比特掩码,具体转换方法为:确定转换后UID和转换后比特掩码的字节长度;获取i除以UID最大字节长度后的模Pi,获取i除以UID最大字节长度后结果中整数部分的值Qi;取转换后UID第Pi字节中第Qi位的值为与生成的UID中第i位的值相同的值,取转换后比特掩码第Pi字节中第Qi位的值为1,i为小于生成的UID有效位长度的所有自然数,Pi、Qi为自然数;转换后UID和转换后比特掩码中其余位的值均取0;
将转换后UID和转换后比特掩码作为扫描标识。
本发明中对天线设备进行扫描的方法为:
A、主站遍历到二叉树的一个节点;
B、根据遍历到的节点值生成UID和比特掩码,并对生成的UID和比特掩码进行转换,获取转换后的UID和比特掩码,具体转换方法为:确定转换后UID和转换后比特掩码的字节长度;获取i除以UID最大字节长度后的模Pi,获取i除以UID最大字节长度后结果中整数部分的值Qi;获取i除以UID最大字节长度后的模Pi,获取i除以UID最大字节长度后结果中整数部分的值Qi;取转换后UID第Pi字节中第Qi位的值为与生成的UID中第i位的值相同的值,取转换后比特掩码第Pi字节中第Qi位的值为1,i为小于生成的UID有效位长度的所有自然数,Pi、Qi为自然数;转换后UID和转换后比特掩码中其余位的值均取0;将转换后UID和转换后比特掩码作为扫描标识;
C、主站将包含扫描标识的扫描消息广播发送给总线上的所有ALD,并检测ALD的响应,如果检测结果为没有出现冲突,则执行步骤D,如果检测结果为出现冲突,则执行步骤E;
D、截取二叉树中当前节点以下的所有分支;
E、判断是否遍历完整个二叉树,如果是,则结束本处理流程,否则返回步骤A。
以下参照附图并举实施例,对本发明进一步详细说明。
本发明实施例中,对天线设备进行扫描的过程如图3所示,包含以下步骤:
步骤301与图1所示步骤101相同,具体为:主站遍历到二叉树的一个节点。
步骤302:根据遍历到的节点值生成UID和比特掩码,对生成的UID和生成的比特掩码进行转换来产生扫描标识。
步骤303~步骤305与图1所示步骤103~步骤105相同,具体为:
步骤303:主站将包含扫描标识的扫描消息广播发送给总线上的所有ALD,并检测ALD的响应,如果检测结果为没有出现冲突,则执行步骤304,如果检测结果为出现冲突,则执行步骤305。
步骤304:截取二叉树中当前节点以下的所有分支。
步骤305:判断是否遍历完整个二叉树,如果是,则结束本处理流程,否则返回步骤301。
图3所示步骤302中,产生扫描标识的过程如图4所示,该过程包含以下步骤:
步骤401:根据节点值生成UID和比特掩码。
步骤401中,根据节点值生成UID和比特掩码的方法与现有技术中相同。
步骤402:确定转换后UID和转换后比特掩码的字节长度。
步骤402所述确定的方法可以为:确定转换后UID和转换后比特掩码的字节长度为UID最大字节长度。
步骤402所述确定的方法也可以为:判断生成的UID有效位长度是否小于UID最大字节长度,如果是,则转换后UID和转换后比特掩码的字节长度等于生成的UID有效位长度,否则转换后UID和转换后比特掩码的字节长度等于UID最大字节长度。
所述生成的UID有效位长度=生成的比特掩码中位值为1的所有位的长度,如:生成的比特掩码为00000111,则生成的UID有效位长度为3;生成的比特掩码为0000000111111111,则生成的UID有效位长度为9。
步骤403步骤406:获取转换后UID和转换后比特掩码的值,具体为:
步骤403:设转换后UID和转换后比特掩码所有位的初始值为0;设i的初始值为0,i为自然数。
步骤404:获取i除以UID最大字节长度后的模Pi,获取i除以UID最大字节长度后结果中整数部分的值Qi;取转换后UID中字节位置为Pi、在第Pi字节中第Qi位的值为与生成的UID中第i位的值相同的值,取转换后比特掩码中字节位置为Pi、在第Pi字节中第Qi位的值为1。
步骤404中,取转换后UID中字节位置为Pi、在第Pi字节中第Qi位的值为 与生成的UID中第i位的值相同的值。比如:如果生成的UID中第i位的值为1,则取转换后UID中字节位置为Pi、在第Pi字节中第Qi位的值为1;如果生成的UID中第i位的值为0,则取转换后UID中字节位置为Pi、在第Pi字节中第Qi位的值为0。具体实现时可以判断生成的UID中第i位的值是否为1或是否为0,如果是,则取转换后UID中字节位置为Pi、在第Pi字节中第Qi位的值为1或0,否则取转换后UID中字节位置为Pi、在第Pi字节中第Qi位的值为0或1。
步骤404中,取转换后比特掩码中字节位置为Pi、在第Pi字节中第Qi位的值为与生成的比特掩码中第i位的值相同的值,也可以描述为:取转换后比特掩码中字节位置为Pi、在第Pi字节中第Qi位的值为1。这里,在i为小于生成的UID有效位长度的任一自然数时,比特掩码中第i位的值实际上就是1。
步骤405:判断i是否小于生成后UID有效位长度,如果是,则执行步骤407,否则执行步骤406。
步骤406:i取值增加1,返回步骤404。
通过循环执行步骤404~步骤406达到的结果为:对i为小于生成后UID有效位长度的所有自然数,获取转换后UID和转换后比特掩码中第Pi字节中第Qi位的值。实际应用中,通过对步骤404、步骤405、步骤406的先后顺序、判断内容进行合理修改,也可达到同样的结果,比如:步骤404之后,先将i的取值增加1,然后判断i是否等于生成后UID有效位长度,如果是,则执行步骤407,否则返回步骤404;或者将步骤405中判断改为:判断i是否等于(生成后UID有效位长度-1);或者是:在步骤403和步骤404之间先判断i是否小于生成后UID有效位长度,如果不是,则执行步骤407,否则执行步骤404、i取值增加1之后,再返回步骤403和步骤404之间的判断i是否小于生成后UID有效位长度的步骤,等等,在此不再一一详述。
步骤402~步骤406中,先确定转换后UID和转换后比特掩码的字节长度,并设转换后UID和转换后比特掩码所有位的初始值为0,然后给i为小于生成后UID有效位长度的所有自然数时,第Pi字节中第Qi位的值赋值。实际应用中,也可以先获得i为小于生成后UID有效位长度的所有自然数时,对应的第Pi字节中第Qi位的值,然后将转换后UID和转换后比特掩码中其余位的值均取0也可,此时步骤402所述确定转换后UID和转换后比特掩码的字节长度的步骤,可以在步骤401之后、将转换后UID和转换后比特掩码中其余位的值均取0之前的任意位置执行。
这里,确定转换后UID和转换后比特掩码的字节长度后,获取转换后UID的方法也可以描述为:将生成的UID中第i位的值对应为,转换后UID中,字节位置为i除以UID最大字节长度后的模、且在该字节中的位数为i除以UID最大字节长度后结果中整数部分的位的值,i为小于生成后UID有效位长度的所有自然数,转换后UID中其余位的值均取0。
同理,确定转换后UID和转换后比特掩码的字节长度后,获取转换后比特掩码的方法也可以描述为:将生成的比特掩码中第j位的值对应为,转换后比特掩码中,字节位置为j除以UID最大字节长度后的模、且在该字节中的位数为j除以UID最大字节长度后结果中整数部分的位的值,j为小于生成后UID有效位长度的所有自然数,转换后比特掩码中其余位的值均取0;或者是:对于j为小于生成后UID有效位长度的所有自然数,字节位置为j除以UID最大字节长度后的模、且在该字节中的位数为j除以UID最大字节长度后结果中整数部分的位的值取1,转换后比特掩码中其余位的值均取0。
步骤407:将转换后UID和转换后比特掩码作为扫描标识。
步骤407中,将转换后UID和转换后比特掩码作为扫描标识时,扫描标识中包括有效字节长度信息,所述有效字节长度等于转换后UID和转换后比特掩码的字节长度。比如:如果转换后UID和转换后比特掩码的字节长度为2字节,则扫描标识中有效字节长度为2字节;如果转换后UID和转换后比特掩码的字节长度为19字节,则扫描标识中有效字节长度为19字节。
具体实现时,如果对进行转换之前已经生成的UID用TreeUid、已经生成的比特掩码用TreeMask、生成的UID有效位长度用TreeLen表示,并将进行转换后的UID用MsgUid、转换后的比特掩码用MsgMask、转换后UID和比特掩码的字节长度用MsgLen表示,且设UID的最大字节长度为19,则图4所述转换,可以举例为:
如果,TreeUid=00000011、TreeMask=00000011、TreeLen=2
则首先,由于TreeLen=2小于19,因此,
MsgLen=2        (1)
对于i小于TreeLen=2的所有自然数,即对i=0和i=1的情况,分别获取Pi和Qi,其中i=0时,P0=0%19=0,Q0为0/19后结果的整数值,即Q0=0;i=1时,P1=1%19=1,Q1为0/19后结果的整数值,即Q1=0。
由于TreeUid的第0位,即i=0时的值为1,因此转换后UID中字节位置为P0=0,该第0字节中位数Q0=0位的值取1;由于TreeUid的第1位,即i=1时的值为1,因此转换后UID中字节位置为P1=1,该第1字节中位数Q1=0位的值取1;转换后UID中其余位的值均取0。因此转换后MsgUid为:
MsgUid=00000001 00000001      (2)
且MsgMask中,第P0=0字节的第Q0=0位,以及第P1=1字节的第Q1=0位的值取1,其余位的值均取0,因此转换后MsgMask为:
MsgMask=00000001 00000001     (3)
这里,如果MsgLen不是如公式(1)所示,而是取UID最大字节长度即MsgLen=19,则MsgUid和MsgMask中低2个字节分别如公式(2)和公式(3)中所示,且MsgUid和MsgMask中高17个字节中每一位值均取0。
本发明实施例中对天线设备进行扫描的过程也可以用图5所示包括扫描流程的扫描树表示。图5所示扫描树的各个扫描节点上表示出对应的扫描标识,比如:扫描树中层一左节点51a的扫描标识为BIT MASK=0...01、UID=00000001、有效字节长度(Length)=1字节;层二最左节点52aa的扫描标识为BIT MASK=0...01 00000001、UID=00000001 00000001、有效字节长度(Length)=2字节,等等。
根据图5所示扫描树,本发明实施例中出现连续冲突时,扫描情况可以如表二所示:
  扫描顺序   Length   UID   MASK   第一步   1   00000001   00000001
  扫描顺序   Length   UID   MASK   第二步   2   00000001 00000001   00000001 00000001   ......   ......   ......   ......   第十九步   19   00000001...00000001   00000001...00000001   第二十步   19   00000001...00000011   00000001...00000011   第二十一步   19   00000001...000000110000001  1   00000001...0000001100000011   ......   ......   ......   ......
表二
表二中:
在第一步扫描UID第0字节第0位。这里,所述第0位值可以为1,也可以为0,通常情况下会先扫描UID第0位值是否为1,如果出现冲突,则执行第二步,如果没有出现冲突或执行第二步之后直至没有出现冲突时,则会扫描UID第0位值是否为0;表二中以扫描的UID第0位值为1时出现冲突为例进行了说明;
由于第一步中UID第0字节第0位值为1时出现冲突,因此第二步中进一步扫描UID第1字节第0位。这里,所述第1字节第0位值可以为1,也可以为0,通常情况下会先扫描UID第1字节第0位值是否为1,如果继续出现冲突,则执行第三步,如果没有出现冲突或执行第三步之后直至没有出现冲突时,则会扫描UID第1字节第0位值是否为0;表二中以扫描的UID第1字节第0位值为1时继续出现冲突为例进行了说明;
由于第二步中UID第1字节第0位值为1时继续出现冲突,因此第三步中进一步扫描UID第2字节第0位。这里,所述第2字节第0位值可以为1,也可以为0,通常情况下会先扫描UID第2字节第0位值是否为1,如果继续出现冲突,则继续扫描下一位,如果没有出现冲突或继续扫描下一位后直至没有出现冲突时,则会扫描UID第2字节第0位值是否为0;表二中以扫描UID第2字节第0位值是否为1为例进行了说明;
...;
由于第19步中UID第19字节第0位值为1时继续出现冲突,因此第20步中进一步扫描UID第0字节第1位,表二中以扫描UID第0字节第1位值是否为1为例进行了说明;
由于第20步中UID第0字节第1位值为1时继续出现冲突,因此第21步中进一步扫描UID第1字节第1位,表二中以扫描UID第1字节第1位值是否为1为例进行了说明;
由于第21步中UID第1字节第1位值为1时继续出现冲突,因此第22步中进一步扫描UID第2字节第1位,表二中以扫描UID第2字节第1位值是否为1为例进行了说明;
表二为图5中出现连续冲突时的情况举例。通常情况下当前扫描到UID的第s字节第t位时出现冲突,如果第s字节为最后一位有效字节,则进一步扫描UID第0字节的第t+1位,如果该字节不是最后一位有效字节,则进一步扫描UID第s+1字节的第t位,这里,如果第s字节为最后一位有效字节,且t=7,则通常结束扫描过程。
可以看出,根据图5所示扫描树,对ALD进行扫描时,如果出现冲突,则通常情况下会进一步扫描UID的下一个字节的同一位,因此图5中的扫描方法可以称为跨字节递增的扫描方法。
利用本发明实施例中的扫描方法,如果两个ALD的UID的前80位相同,第81位不相同时,主站下发80÷8+1=11个扫描消息后能够获取一个ALD的UID。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的使用范围。