本发明新型涉及数据传输方法,特别是涉及低功耗无线通信的数据传输方法。
背景技术:
现有技术蓝牙芯片提供一帧一应答机制,对系统性能要求低,但是时延较高,导致数据传送效率非常低。仅能利用空口能力的3%左右,在做较大数据量传输时存在瓶颈。
技术实现要素:
本发明要解决的技术问题在于避免现有技术的不足之处而提出适应蓝牙低功耗系统要求,能够确保数据传输效率的数据传输方法
本发明解决所述技术问题可以通过采用以下技术方案来实现:
提出一种适于蓝牙低功耗无线通信系统的轻量级数据传输方法,所述蓝牙低功耗无线通信系统包括发送端和接收端,所述方法按照如下设定执行:
对于建立蓝牙无线通信连接的发送端和接收端,发送端向接收端传输数据,发送端以写命令的方式进行通信,接收端以通知的方式进行通信;
数据以分割成包的数据包的形式从发送端向接收端传输,每个数据包包括反映数据包的数量和本数据包的序号的基本信息数据域;
发送端传输数据包括如下步骤s1至步骤s7,
s1.开始发送数据,按照基本信息数据域中的数据包的序号依序发送数据包,同时启动发送端超时定时器;
s2.在发送数据过程中,
如果接收到临时响应或重传响应指令通知,就进行步骤s3;
如果接收到数据丢包响应指令通知,就进行步骤s4;
在发送最后一个数据包后,如果收到结束包应答指令通知,就进行步骤s7;
s3.重置发送端超时定时器,继续发送后续数据包,返回步骤s2;
s4.重置发送端超时定时器,根据数据丢包响应指令通知中记录的丢失的数据包的序号,重发丢失的数据包,返回步骤s2;
s7.判定数据传输结束,关闭发送端超时定时器;
接收端接收数据包包括如下步骤r1至步骤r8,
r1.收到第一个数据包,启动接收端超时定时器;
r2.在接收数据包的过程中,
如果收到一个数据包,就进行步骤r3;
如果累计收到n个数据包,就进行步骤r4;
如果判断数据包丢失,就进行步骤r5;
如果接收到重传的数据包时,就进行步骤r6;
如果完成对最后一个数据包的接收,就进行步骤r8;
r3.重置接收端超时定时器,返回步骤r2;
r4.向发送端回传临时响应或重传响应指令通知,将累计接收数据包的变量清零,返回步骤r2;
r5.判断丢失数据包的基本数据信息域中的数据包的序号,向发送端回传数据丢包响应指令通知,通知发送端丢失数据包,返回步骤r2;
r6.向发送端回传临时响应或重传响应指令通知,返回步骤r2;
r8.向发送端回传结束包应答指令通知。
具体地,所述数据包还包括控制字及数据容量数据域,数据内容数据域,以及校验数据域。
本发明为发送端提供未响应处理方案,所述步骤s2还包括,
如果发送端超时定时器超时时,并且未收到临时响应或重传响应指令通知,就进行步骤s5;
那么发送端传输数据还包括步骤s5,
s5.主动断开传输链路。
本发明为接收端提供未响应处理方案,所述步骤r2还包括,
如果接收端超时定时器超时时,就进行步骤r7;
那么接收端传输数据还包括步骤r7,
r7.接收状态复位。
本发明为结束数据包提供专用流程,以便数据传输顺利结束,步骤s2中,
在发送最后一个数据包后,启动发送结束超时定时器,屏蔽发送端超时定时器,清零结束超时未响应计数器,进行步骤s6;
那么发送端传输数据还包括步骤s6,
s6.包括如下分步骤,
s61.如果收到结束包应答指令通知,就进行步骤s7;
如果发送结束超时定时器超时,并且未收到结束包应答指令通知,重发最后一个数据包,结束超时未响应计数器递增一次;
如果结束超时未响应计数器小于3,返回步骤s61;
如果结束超时未响应计数器等于3,判定数据传输失败。
同现有技术相比较,本发明“适于蓝牙低功耗无线通信系统的轻量级数据传输方法”的技术效果在于:
本发明基于蓝牙无线通信系统低功耗的需求,在提高数据传输效率的同时确保数据传输的可靠性和稳定性,实现在低功耗系统中完成轻量级数据高效传输。
附图说明
图1是本发明“适于蓝牙低功耗无线通信系统的轻量级数据传输方法”优选实施例的基本流程示意图;
图2是所述优选实施例在数据传输超时时的流程示意图;
图3是所述优选实施例在结束数据包出现超时时的处理流程示意图。
具体实施方式
以下结合附图所示实施例作进一步详述。
本发明基于蓝牙低功耗系统的以下特征进行设计:
1.单帧数据传输可靠性高。蓝牙底层有基本的跳频,简称crc校验的循环冗余校验cyclicredundancycheck,以及重传机制,虽然可能丢包,但整体可靠性在连接建立后可达95%以上。
2.能够保证帧序。因为是点对点连接,简称ble系统的蓝牙低能耗bluetoothlowenergy系统自身的底层机制可以保证先发的帧比后发的帧先到达接收端。
3.时延大。ble系统为省电采用周期数据传送,兼容性较好的参数配置下,收发间隔时延一般在40ms以上。
4.功耗敏感。ble系统一般用于低功耗设备,如手环等,因此协议复杂性不能太高,以免影响设备寿命。
本发明发送端持续数据发送,无需对已发数据确认。接收端仅周期响应握手信号,表示收端正常,使发送端能够保持连接。接收端依次接收数据,因为蓝牙能够保证帧序号,接收端在发现帧序号不连续时主动请求发送端从该帧序号后开始重传。之后,发送端跳回该帧序号,并继续连续发送。本发明所述方法适于轻量级数据传输,在发端和收端均没有复杂状态机,当ble系统能够保证一定的数据传输成功率和顺序时,能够在很少的额外开销下,实现高速、可靠的数据传输。
本发明提出一种适于蓝牙低功耗无线通信系统的轻量级数据传输方法,所述蓝牙低功耗无线通信系统包括发送端和接收端,所述方法按照如下设定执行:
对于建立蓝牙无线通信连接的发送端和接收端,发送端向接收端传输数据,发送端以写命令的方式进行通信,接收端以通知的方式进行通信。
数据以分割成包的数据包的形式从发送端向接收端传输,每个数据包包括反映数据包的数量和本数据包的序号的基本信息数据域ctl。具体地,所述数据包还包括控制字及数据容量数据域st,数据内容数据域data,以及校验数据域bcc。
数据包应符合如下规定格式:
数据包中各数据域的说明:
例如:
当应用数据帧长度超过15字节时,发送端应采用分包发送,接收端应采用组包接收。
那么假设待发送的数据(hex)如下,共20个字节:
0102030405060708090a0b0c0d0e0f1112131415
每包数据一次最多传输15个字节,20个字节需要分包传输:
第一个包:
ctl字段为0x800x02,转化成二进制为1000000000000010,[bit:15]=1表示当前包为第一个包;[bit:14~0]=2表示总包数为2。
第二个包:
ctl数据域字段为0x000x02,转化成二进制为0000000000000010,[bit:15]=0表示当前包为延续包;[bit:14~0]=2表示当前包的序号为2。
接收端收到这两帧数据后再组包成原始数据。
主机和从机,即发送端和接收端建立连接后,主机,即发送端以writecommand的方式进行通信,从机,即接收端以notification的方式进行通信,发送端和接收端之间的数据通信遵循以下流程。
如图1所示,发送端传输数据包括如下步骤s1至步骤s7,
s1.开始发送数据,按照基本信息数据域中的数据包的序号依序发送数据包,同时启动发送端超时定时器t1;
s2.在发送数据过程中,
如果接收到临时响应或重传响应指令通知f1,就进行步骤s3;
如果接收到数据丢包响应指令通知f2,就进行步骤s4;
在发送最后一个数据包后,如果收到结束包应答指令通知f3,就进行步骤s7;
s3.重置发送端超时定时器t1,继续发送后续数据包,返回步骤s2;
s4.重置发送端超时定时器t1,根据数据丢包响应指令通知f2中记录的丢失的数据包的序号,重发丢失的数据包,返回步骤s2;
s7.判定数据传输结束,关闭发送端超时定时器t1;
接收端接收数据包包括如下步骤r1至步骤r8,
r1.收到第一个数据包,启动接收端超时定时器t2;
r2.在接收数据包的过程中,
如果收到一个数据包,就进行步骤r3;
如果累计收到n个数据包,就进行步骤r4;
如果判断数据包丢失,就进行步骤r5;
如果接收到重传的数据包时,就进行步骤r6;
如果完成对最后一个数据包的接收,就进行步骤r8;
r3.重置接收端超时定时器t2,返回步骤r2;
r4.向发送端回传临时响应或重传响应指令通知f1,将累计接收数据包的变量清零,返回步骤r2;接收数据包的变量在接收端开始接收数据时也被清零,用于统计累计接收数据包的数量;
r5.判断丢失数据包的基本数据信息域ctl中的数据包的序号,向发送端回传数据丢包响应指令通知f2,通知发送端丢失数据包,返回步骤r2;
r6.向发送端回传临时响应或重传响应指令通知f1,返回步骤r2;
r8.向发送端回传结束包应答指令通知f3。
本发明优选实施例,如图1所示,上述方法的具体实现如下,
1)发送端开始发送数据,同时启动发送端超时定时器t1;
2)接收端收到p1后启动接收端超时定时器t2,之后每收到新的数据则重置t2,若t2超时仍未收到新的数据包,则接收端判定数据接收失败,接收状态复位;
3)接收端在连续收到30个包以内需至少回复一次临时响应或重传响应指令通知f1,显然此处将n设置为30;
4)发送端收到f1后,重置发送端超时定时器t1;
5)接收端若判断数据有丢包,则回复数据丢包响应指令通知f2;
6)发送端收到f2后重置发送端超时定时器t1,重传丢失包,并等待临时响应或重传响应指令通知f1;
7)接收端收到重传包,回复临时响应或重传响应指令通知f1;
8)发送端收到f1后判断是否为重传包的响应,若该f1是重传包的响应,则继续发送后续包,否则t1超时后继续重发,三次重发失败则判定链路断开;
9)接收端对于丢失包的后续包(如图1的p7、p8),接收端可以选择接收,也可以选择不接收,协议不作强制要求;
10)发送端发出最后一个数据包,等待结束包应答指令通知f3,接收端判断接受完所有数据后,回复结束包应答指令通知f3;
11)发送端收到结束包应答指令通知f3,判定数据传输结束,关闭发送端超时定时器t1。
本发明为发送端提供未响应处理方案,所述步骤s2还包括,
如果发送端超时定时器超时t1时,并且未收到临时响应或重传响应指令通知f1,就进行步骤s5;
那么发送端传输数据还包括步骤s5,
s5.主动断开传输链路。
本发明优选实施例,如图2所示,也就是发送端持续发送数据,若超时未收到f1或f2,则主动断开传输链路。
本发明为接收端提供未响应处理方案,所述步骤r2还包括,
如果接收端超时定时器t2超时时,就进行步骤r7;
那么接收端传输数据还包括步骤r7,
r7.接收状态复位。
本发明优选实施例,如图2所示,也就是接收端超时未收到数据,则接收状态复位。
本发明为结束数据包提供专用流程,以便数据传输顺利结束,步骤s2中,
在发送最后一个数据包后,启动发送结束超时定时器t3,屏蔽发送端超时定时器t1,清零结束超时未响应计数器,进行步骤s6;
那么发送端传输数据还包括步骤s6,
s6.包括如下分步骤,
s61.如果收到结束包应答指令通知f3,就进行步骤s7;
如果发送结束超时定时器t3超时,并且未收到结束包应答指令通知f3,重发最后一个数据包,结束超时未响应计数器递增一次;
如果结束超时未响应计数器小于3,返回步骤s61;
如果结束超时未响应计数器等于3,判定数据传输失败。
本发明优选实施例,如图3所示,也就是如下过程,
1)发送端发送最后一个包,并启动发送结束超时定时器t3,屏蔽发送端超时定时器t1。这种场景下即使t1超时也不会导致数据传输断开;
2)若t3超时仍未收到任何响应,则重发结束包,如此重复三次,如果还是没有收到任何响应,则判定数据传输失败。
本发明优选实施例所述方法中的指令通知采用以下设定,
临时响应或重传响应指令通知f1示例:
数据丢包响应指令通知f2示例:
结束包应答指令通知f3示例:
本发明所述方法存在极大的可扩展性。在收端功耗问题不关键的时候,收端发现丢帧后向发端请求该帧开始的数据重传,同时可以接收发端在启动重传前发送的的后续数据。并在发端重传丢失帧后,再次发送f2帧,跳过之前已接收保存过的数据帧内容,从而进一步提高效率。