本发明实施方式涉及通讯技术领域,特别是涉及一种多对多无线数据发送方法及发送装置,以及一种多对多无线数据接收方法及接收装置。
背景技术:
无论在有线通信系统还是无线通信系统中,发送装置发送数据包给接收装置,都需要知道接收装置否收到数据包,但无线通信系统相对于有线通信系统来说,难点就在于此。在无线通信系统中,一个完整的通信逻辑如图1所示:发送装置10发送数据包给接收装置20,当接收装置20收到数据包后,立刻回复确认包给发送装置10,收到确认包说明此次数据包发送成功。若等待一段时间后发送装置10没有收到来自接收装置20的确认包,将会重发之前的数据包,直到收到确认包或达到最大重发次数为止。在实际网络中,通常包括多个发送装置和多个接收装置,在多对多的无线数据包发送情况下,就会存在如下情况:假如一个发送装置给多个接收装置发送数据包,若没有AckTable对确认包进行控制,多个接收装置20每次收到数据后均会回复确认包,因为接收装置一收到发送装置的数据包立刻回复确认包,这会导致在同一时段对应频段的2.4GHz射频信号相互干扰,数据碰撞严重。此外,对于发送强度较弱的接收装置,其回复的确认包发送装置将可能永远收不到。从而导致,发送装置在不能完全收到确认包的情况下,反复多次重复发送之前的数据包,导致发送装置的运行负担重,浪费通信频段资源。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:在多对多的无线数据通信中,发送装置在广播数据包给多个接收装置时,多个接收装置同时回复确认包会导致确认包碰撞,影响确认包的准确接收,发送强度弱的接收装置回复的确认包将无法收到的问题。
技术实现要素:
为解决上述技术问题,使发送装置能准确接收确认包,本发明实施方式采用的一个技术方案是:提供一种多对多无线数据发送方法,包括:发送装置广播数据包,所述数据包中包括ACK索引表(AckTable)字段,所述字段包括若干接收装置标识和对应所述每一接收装置标识是否需要回复确认包的值;所述发送装置接收到所述数据包的接收装置回复的确认包;所述发送装置根据所述确认包对应的接收装置,更新所述数据包的ACK索引表字段,将已收到数据包的接收装置标识对应的值修改为不需要回复确认包。
其中,所述ACK索引表为一张映射表,存储若干接收装置标识与对应是否需要回复确认包值的对应关系。
其中,所述发送装置广播数据包之前,还包括:所述发送装置与所述接收装置相互交换并存储对方的软件地址,所述软件地址指示所述发送装置与所述接收装置配对成功。
其中,所述数据包中包括目标ID(G_ID)字段,用于写入接收装置的软件地址;以及,源ID(S_ID)字段,用于写入发送装置的软件地址;所述接收装置根据所述源ID(S_ID)字段中发送装置的软件地址过滤接收到的数据包,当所述源ID(S_ID)字段中发送装置的软件地址与所述接收装置存储的发送装置的软件地址不同,过滤掉对应的数据包。
其中,所述发送装置与所述接收装置的硬件地址相同,所述发送装置根据所述硬件地址发送所述数据包。
本发明实施方式采用的另一个技术方案是:提供一种多对多无线数据发送装置,包括:收发单元,用于广播数据包,所述数据包中包括ACK索引表字段,所述字段包括若干接收装置标识和对应所述每一接收装置标识是否需要回复确认包的值,以及,接收到所述数据包的接收装置回复的确认包;处理器,用于根据所述确认包对应的接收装置,更新所述数据包的ACK索引表字段,将已收到数据包的接收装置标识对应的值修改为不需要回复确认包。
其中,进一步包括记录单元,用于根据所述收到确认包,记录所述确认包对应的接收装置已经收到所述数据包。
其中,进一步包括时钟单元,用于计时等待返回确认包的时间,当等待超时,触发处理器根据收到的确认包,判断是否全部接收装置接收所述数据包成功。
其中,所述时钟端单元,还用于统计所述数据包的重发次数,当未达到最大重发次数时,触发处理器统计返回确认包对应的接收装置。
本发明实施方式采用的另一个技术方案是:提供一种多对多无线数据接收方法,包括:接收装置接收数据包,所述数据包中包括ACK索引表(AckTable)字段,所述字段包括若干接收装置标识和对应所述每一接收装置标识是否需要回复确认包的值;所述接收装置根据所述ACK索引表字段判断是否需要回复确认包,若需要回复,则随机延时后向发送装置回复确认包。
其中,所述接收装置根据所述ACK索引表字段判断是否需要回复确认包,若不需要回复,则不回复确认包。
其中,所述ACK索引表为一张映射表,存储若干接收装置标识与对应是否需要回复确认包值的对应关系。
其中,所述接收装置接收数据包之前,还包括:所述发送装置与所述接收装置相互交换并存储对方的软件地址,所述软件地址指示所述发送装置与所述接收装置配对成功。
其中,所述确认包中包括目标ID(G_ID)字段,用于写入发送装置的软件地址;以及,源ID(S_ID)字段,用于写入接收装置的软件地址;所述发送装置根据所述源ID(S_ID)字段中接收装置的软件地址过滤接收到的确认包,当所述源ID(S_ID)字段中接收装置的软件地址,与所述发送装置存储的接收装置的软件地址不同,过滤掉对应的确认包。
本发明实施方式采用的另一个技术方案是:提供一种多对多无线数据接收装置,包括:收发单元,用于接收数据包,所述数据包中包括ACK索引表字段,所述字段包括若干接收装置标识和对应所述每一接收装置标识是否需要回复确认包的值;处理器,用于根据所述ACK索引表字段判断是否需要回复确认包,若需要回复,则随机延时后触发所述收发单元向发送装置回复确认包。
其中,所述处理器还用于根据所述ACK索引表字段判断不需要回复确认包时,则不回复确认包。
其中,所述ACK索引表为一张映射表,存储若干接收装置标识与对应是否需要回复确认包值的对应关系。
本发明实施方式的有益效果是:发送装置发送的数据包中包括ACK索引表字段,该字段可以指示接收到数据包的接收装置是否需要回复确认包,无需所有的接收装置回复确认包,减少确认包冲突,减少2.4GHz射频信号干扰,提高确认包接收的成功率。另外,接收装置可以根据数据包中的ACK索引表字段判断是否需要回复确认包,当需要回复确认包时,可以随机延时后再发送确认包。减少了同一时段的确认包冲突问题,同时也提高了确认包接收的成功率。发送装置能够准确接收确认包,也减少了数据包重复的次数。
附图说明
图1是现有技术多对多无线数据包通信逻辑示意图;
图2是本发明实施方式提供的数据包格式定义示意图;
图3是本发明实施方式提供的发送装置发送无线数据包的方法流程示意图;
图4是本发明实施方式提供的接收装置接收无线数据包的方法流程示意图;
图5是本发明实施方式提供的多对多无线数据包通信逻辑示意图;
图6是本发明实施方式提供的发送装置的组成结构示意图;
图7是本发明实施方式提供的接收装置的组成结构示意图。
具体实施方式
本发明实施方式中,发送装置广播数据包给多个接收装置,所述数据包采用了如图2所示的数据包格式。该数据包包括如下字段:包头(Header)、目标地址(G_Id)、源地址(S_Id)、帧号(SeqNum)、包号(PacNum)、包类型(PackType,包括DATA和ACK)、ACK索引表(AckTable)、data域长度(Len)、data域内容(Data)、G_Id到Data的异或结果(Xor)、包尾(End)。
其中,ACK索引表(AckTable)字段包括若干接收装置标识和对应所述每一接收装置标识是否需要回复确认包的值,可以为映射表形式。每个接收装置标识对应一个值,占一个比特位。如果接收装置标识对应的值为1,说明该接收装置标识对应的接收装置需要回复确认包;或者如果接收装置标识对应的值为0,说明该接收装置标识对应的接收装置不需要回复确认包。这样发送装置即使一直在广播数据包,但是限制已收到确认包的接收装置不回复确认包,所以即使有多个接收装置,也可在多次广播中逐渐减少因回复确认包产生的无线数据碰撞问题,提高数据包的成功发送率。
其中,包类型字段用于指示该数据包为数据包或者确认包。
其中,目标地址字段用于存储接收该数据包的所有接收装置的软件地址。
其中,源地址字段用于存储发送该数据包的发送装置的软件地址。
如下将结合图3至7所示的实施方式,进一步说明所述数据包中各个字段的用途。
如图3所示,为本发明实施方式提供的发送装置广播数据包给接收装置的方法流程示意图。
在发送装置广播数据包之前,需要发送装置与接收装置之间交互并存储对方的软件地址,以实现发送装置与接收装置成功配对。
步骤S101:发送装置广播数据包给接收装置;
发送装置广播数据包,所述数据包中包括ACK索引表字段,所述字段包括若干接收装置标识和对应所述每一接收装置标识是否需要回复确认包的值。
步骤S102:发送装置接收到所述数据包的接收装置回复的确认包;
步骤S103:发送装置判断接收到的确认包,是否是已匹配的接收装置发送的确认包;若否,执行步骤S104;若是,执行步骤S105;
所述确认包中包括目标ID(G_ID)字段,用于写入发送装置的软件地址;以及,源ID(S_ID)字段,用于写入接收装置的软件地址;所述发送装置根据所述源ID(S_ID)字段中接收装置的软件地址过滤接收到的确认包,当所述源ID(S_ID)字段中接收装置的软件地址,与前述配对过程发送装置存储的接收装置的软件地址不同,过滤掉对应的确认包。
步骤S104:发送装置过滤掉不是已配对成功的接收装置发送的确认包;
步骤S105:当确认包是已配对成功的接收装置发送的,记录对应的接收装置接收数据包成功;
步骤S106:发送装置会预设等待接收确认包的时间,若等待时间超过了预设时间;
步骤S107:发送装置根据所有接收到的确认包,判断是否所有接收装置均返回确认包;若是,执行步骤S108;若否,执行步骤S110;
步骤S108:发送装置记录全部接收装置接收数据包成功;
步骤S109:发送装置上报全部接收装置接收数据包成功的发送结果;
步骤S110:发送装置判断是否达到最大重发次数;若是,执行步骤S111;若否,执行步骤S113;
当发送装置等待时间达到预设的等待确认包的时间时,会重新广播数据包,直到达到预设的最大重发次数,或全部的接收装置均收到数据包,则会停止重新广播数据包。
步骤S111:发送装置记录非全部接收装置接收数据包成功;
步骤S112:发送装置上报非全部接收装置接收数据包成功的发送结果;
步骤S113:发送装置统计所有返回确认包的接收装置;
步骤S114:发送装置更新数据包中的ACK索引表字段;
发送装置根据确认包对应的接收装置,更新数据包的ACK索引表字段,将已收到数据包的接收装置标识对应的值修改为不需要回复确认包。
采用本发明的实施方式,发送装置以广播形式发送数据包,会通过数据包中的ACK索引表字段告知对应的接收装置是否需要回复确认包,已收到确认包的接收装置,就告知其无需回复确认包。每广播一次数据包,都会对返回的确认包做统计,已收到确认包的接收装置会被发送装置通知不需要回复确认包,所以在一次次广播过程中,空中确认包的无线数据会越来越少,碰撞也会越来越小。
可选地,在本发明的其它实施方式中,在多对多通信时,为了减少硬件成本,给发送装置和接收装置配置相同的物理地址,同时,给发送装置配置唯一的软件地址,接收装置也配置唯一的软件地址。发送装置通过该物理地址广播数据包,所有具有该同一物理地址的接收装置均能够接收到所述数据包。而发送装置和接收装置通过交互和存储对方的软件地址实现配对,并且通过对方的软件地址过滤接收到的数据包或确认包。
如图4所示,为本发明实施方式提供的接收装置接收数据包并返回确认包的方法流程示意图。
步骤S201:接收装置接收数据包;
所述数据包中包括ACK索引表字段,所述字段包括若干接收装置标识和对应所述每一接收装置标识是否需要回复确认包的值。
步骤S202:接收装置判断接收到的数据包,是否是已匹配的发送装置发送的数据包;若否,执行步骤S203;若是,执行步骤S204;
所述数据包中包括目标ID(G_ID)字段,用于写入接收装置的软件地址;以及,源ID(S_ID)字段,用于写入发送装置的软件地址;所述接收装置根据所述源ID(S_ID)字段中发送装置的软件地址过滤接收到的数据包,当所述源ID(S_ID)字段中发送装置的软件地址与所述接收装置存储的发送装置的软件地址不同,过滤掉对应的数据包。
步骤S203:接收装置过滤掉不是已成功配对的发送装置发送的数据包;
步骤S204:接收装置根据数据包中的ACK索引表字段判断是否需要回复确认包;若是,执行步骤S205;若否,不需要回复确认包,该流程结束;
步骤S205:接收装置随机延时后向发送装置回复确认包。
通常情况下,接收装置的随机延时时间要小于发送装置预设的等待确认包回复的时间。该随机延时时间是为了防止大量接收装置同时回复确认包,产生的数据严重碰撞。
如图5所示,为本发明实施方式提供的多对多无线数据包通信逻辑实示意图。
假设网络中有2个发送装置和6个接收装置,用实线表示发送装置发送数据包,虚线表示接收装置回复确认包。
在通信前,相互通信的发送装置和接收装置需先相互配对。其中,发送装置1与接收装置3、接收装置4、接收装置5和接收装置6配对成功;发送装置2与接收装置1和接收装置2配对成功。
送装置1需要发送数据包时,会以广播的形式广播数据包,因为硬件地址相同,所有的接收装置都能收到数据包。但因为发送装置1只与接收装置3、接收装置4、接收装置5和接收装置6进行了软件地址配对,所以接收装置1和接收装置2虽然能收到数据包,但会通过发送装置的软件地址过滤数据包,即接收装置1和接收装置2并没有存储发送装置1的软件地址,接收装置1和接收装置2对所述接收到的数据包不做处理。
接收装置3、接收装置4、接收装置5和接收装置6收到广播数据包后,若检查是其成功配对的发送装置1发来的,并根据数据包中的ACK索引表字段判断是否需要回复确认包,若需要,再随机延时后回复确认包。
假设发送装置1第一次广播数据包后收到了来自接收装置3和接收装置5的确认包,没收到接收装置4和接收装置6回复的确认包。发送装置1重发数据包时,就会在数据包的ACK索引表字段里标识接收装置3和接收装置5已无需再回复确认包,接收装置4和接收装置6需要回复确认包。这样接收装置3、接收装置4、接收装置5和接收装置6就能做相应的处理,每次重发后能逐步减少空中确认包的碰撞情况。
如图6所示,为本发明实施方式提供的发送装置的组成结构示意图。
发送装置10包括:收发单元110、处理器120、记录单元130和时钟单元140。
收发单元110,用于广播数据包,所述数据包中包括ACK索引表字段,所述字段包括若干接收装置标识和对应所述每一接收装置标识是否需要回复确认包的值,以及,接收到所述数据包的接收装置回复的确认包。
处理器120,用于根据所述确认包对应的接收装置,更新所述数据包的ACK索引表字段,将已收到数据包的接收装置标识对应的值修改为不需要回复确认包。
记录单元130,用于根据所述收到确认包,记录所述确认包对应的接收装置已经收到所述数据包。
时钟单元140,用于计时等待返回确认包的时间,当等待超时,触发处理器根据收到的确认包,判断是否全部接收装置接收所述数据包成功。时钟单元140,还用于统计所述数据包的重发次数,当未达到最大重发次数时,触发处理器统计返回确认包对应的接收装置。
如图7所示,为本发明实施方式提供的接收装置的组成结构示意图。
接收装置20包括:收发单元210、处理器220和时钟单元230。
收发单元210,用于接收数据包,所述数据包中包括ACK索引表字段,所述字段包括若干接收装置标识和对应所述每一接收装置标识是否需要回复确认包的值;
处理器220,用于根据所述ACK索引表字段判断是否需要回复确认包,若需要回复,则根据时钟单元230提供的时间信息,随机延时后触发所述收发单元210向发送装置回复确认包。
本发明实施方式的有益效果是:发送装置发送的数据包中包括ACK索引表字段,该字段可以指示接收到数据包的接收装置是否需要回复确认包,无需所有的接收装置回复确认包,减少确认包冲突,减少2.4GHz射频信号干扰,提高确认包接收的成功率。另外,接收装置可以根据数据包中的ACK索引表字段判断是否需要回复确认包,当需要回复确认包时,可以随机延时后再发送确认包。减少了同一时段的确认包冲突问题,同时也提高了确认包接收的成功率。发送装置能够准确接收确认包,也减少了数据包重复的次数。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。