一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于蓝牙的端到端通信协议实现方法和系统与流程

2021-10-24 06:30:00 来源:中国专利 TAG:蓝牙 端到 通信协议 通信 方法


1.本发明涉及蓝牙通信技术领域,具体地,涉及一种基于蓝牙的端到端通信协议实现方法和系统。


背景技术:

2.在蓝牙通信过程中不可避免会存在分组包的过程。mtu(maximum transmission unit)是包或帧的最大传输单元。由于mtu的限制,在通信过程中,如果一个数据包的长度大于mtu,就需要将数据包拆分。既然有拆分,就有组合,这便是分组包。
3.在蓝牙通信过程中存在丢包问题。由于环境、距离等影响,在蓝牙通信过程中存在丢包的情况。如何将需要传输的数据包分成一个一个的分包并将所有分包都传输到目标端上,然后又如何将接收到的一个一个的分包组成一个完整的数据包,便成为一个必须解决的问题。
4.专利文献cn106487632b(申请号:cn201510537477.8)公开了一种端到端通信方法和系统,涉及通信领域。其中,本发明的端到端通信方法包括:第一终端在与第二终端进行通信时,向注册服务器发送通信请求;若注册服务器判断第一终端和第二终端处于不同的域,则分别向终端所属域的中转选择设备发送数据中转申请;中转选择设备分别在所属域中为终端选择数据中转设备并通过注册服务器交换选择结果;中转选择设备向数据中转设备下发映射表;数据中转设备利用映射表,在数据中转设备之间建立隧道,以便第一终端利用隧道与第二终端进行通信。


技术实现要素:

5.针对现有技术中的缺陷,本发明的目的是提供一种基于蓝牙的端到端通信协议实现方法和系统。
6.根据本发明提供的基于蓝牙的端到端通信协议实现方法,包括:
7.步骤1:定义通信信息类型和通信信息id;
8.步骤2:定义长度用于记录通信信息总长度,定义校验值用于校验数据正确性;
9.步骤3:在蓝牙发送端发送通信信息时,根据定义内容进行分包;
10.步骤4:在蓝牙接收端接收分包时,根据定义内容进行分包的正确性判断和组包,并回复响应信息;
11.步骤5:在发送端接收到响应信息时,根据定义内容判断通信信息发送的结果。
12.优选的,所述通信信息类型包括业务信息和响应信息,所述业务信息用于标识业务数据的信息类型,响应信息用于标识接收端回复发送端的所发送的信息类型;
13.定义重发id,用于记录通信信息重发次数,若重发次数超过预设阈值,则停止重发;
14.定义分包id,按顺序标记分包数据。
15.优选的,所述步骤3包括:
16.步骤3.1:在发送端根据业务信息数据长度计算分包个数;
17.步骤3.2:初始分包的包头及业务数据,其中,通信信息类型为业务信息类型;通信信息id一致,初始值为1,下一通信信息id递增;重发id一致,初始值为1;分包id从1开始递增;所有包头长度一致,为业务信息总长度;校验值为从第一包到当前包整个的校验值;
18.步骤3.3:在发送端按照预设时间间隔,将分包数据按顺序发送。
19.优选的,所述步骤4包括:
20.步骤4.1:获取包头中的信息,通过通信信息id判断是新信息还是正在接收的信息;
21.步骤4.2:接收端计算期望的分包id,若是新信息则期望的分包id为1,若是正在接收的信息则期望的目标id为已接收信息的分包id 1,接收端对比期望的分包id与实际收到的分包id,相同则继续处理,否则回复响应信息并停止处理本包数据;
22.步骤4.3:通过拼接已接收业务数据和分包业务数据得出新的已接收业务数据,计算校验值与已获取到的校验值做比较,如果一致,则表示此分包数据正确,否则回复响应信息;
23.步骤4.4:通过将新业务数据的长度与包头中的长度做比较,若一致则表示数据接收完成,回复响应信息。
24.优选的,所述步骤5包括:
25.步骤5.1:获取包头中的信息,通过通信信息id获取正在发送信息的最后一包分包id;
26.步骤5.2:在发送端判断分包id是否为最后一包分包id,若是则表示通信信息发送完成,否则表示某个通信信息发送失败,需要进行重发;
27.步骤5.3:发送端获取重发id,并将此重发id 1得到新的重发id,发送端判断此重发id是否大于最大重发id,若是则表示达到最大重发次数,不再重发且进行失败报错;否则通过分包id获取目标分包,从此分包开始重发。
28.根据本发明提供的基于蓝牙的端到端通信协议实现系统,包括:
29.模块m1:定义通信信息类型和通信信息id;
30.模块m2:定义长度用于记录通信信息总长度,定义校验值用于校验数据正确性;
31.模块m3:在蓝牙发送端发送通信信息时,根据定义内容进行分包;
32.模块m4:在蓝牙接收端接收分包时,根据定义内容进行分包的正确性判断和组包,并回复响应信息;
33.模块m5:在发送端接收到响应信息时,根据定义内容判断通信信息发送的结果。
34.优选的,所述通信信息类型包括业务信息和响应信息,所述业务信息用于标识业务数据的信息类型,响应信息用于标识接收端回复发送端的所发送的信息类型;
35.定义重发id,用于记录通信信息重发次数,若重发次数超过预设阈值,则停止重发;
36.定义分包id,按顺序标记分包数据。
37.优选的,所述模块m3包括:
38.模块m3.1:在发送端根据业务信息数据长度计算分包个数;
39.模块m3.2:初始分包的包头及业务数据,其中,通信信息类型为业务信息类型;通
信信息id一致,初始值为1,下一通信信息id递增;重发id一致,初始值为1;分包id从1开始递增;所有包头长度一致,为业务信息总长度;校验值为从第一包到当前包整个的校验值;
40.模块m3.3:在发送端按照预设时间间隔,将分包数据按顺序发送。
41.优选的,所述模块m4包括:
42.模块m4.1:获取包头中的信息,通过通信信息id判断是新信息还是正在接收的信息;
43.模块m4.2:接收端计算期望的分包id,若是新信息则期望的分包id为1,若是正在接收的信息则期望的目标id为已接收信息的分包id 1,接收端对比期望的分包id与实际收到的分包id,相同则继续处理,否则回复响应信息并停止处理本包数据;
44.模块m4.3:通过拼接已接收业务数据和分包业务数据得出新的已接收业务数据,计算校验值与已获取到的校验值做比较,如果一致,则表示此分包数据正确,否则回复响应信息;
45.模块m4.4:通过将新业务数据的长度与包头中的长度做比较,若一致则表示数据接收完成,回复响应信息。
46.优选的,所述模块m5包括:
47.模块m5.1:获取包头中的信息,通过通信信息id获取正在发送信息的最后一包分包id;
48.模块m5.2:在发送端判断分包id是否为最后一包分包id,若是则表示通信信息发送完成,否则表示某个通信信息分包发送失败,需要进行重发;
49.模块m5.3:发送端获取重发id,并将此重发id 1得到新的重发id,发送端判断此重发id是否大于最大重发id,若是则表示达到最大重发次数,不再重发且进行失败报错;否则通过分包id获取目标分包,从此分包开始重发。
50.与现有技术相比,本发明具有如下的有益效果:
51.(1)本发明定义信息类型区分各个信息,提高了处理信息效率;定义信息id标识每一个信息,通过信息id可以快速获取到目标信息;定义重发id标识当前信息的重发次数,可以快速判断是重发此信息,还是报错,防止出错一直重发;
52.(2)定义分包id标识当前分包是第几包,可以快速定义目标分包,同时在接收信息出错时,可在响应信息中填入此分包id,发送端可根据此分包id,从此分包id 1包开始重发,提高了重发效率;
53.(3)本发明定义长度保存业务数据的总长度,通过判断已接收数据的长度,可判断出当前业务信息是否接收完成;定义校验值,保证了数据收发过程中的正确性及完整性;
54.(4)本发明通过校验值叠加计算的设计,可以快速检查当前已接收的数据是否出错,以尽早开始重发;同时叠加而不是每包单独计算校验的设计,可以帮助识别顺序错乱的错误。
附图说明
55.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
56.图1为本发明通信信息发送流程图。
具体实施方式
57.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
58.实施例:
59.如图1,根据本发明提供的基于蓝牙的端到端的通信协议实现方法,包括:
60.1.定义两种信息类型分别用于标记业务信息和响应信息;
61.2.定义信息id用于标识某个信息;
62.3.定义重发id用于记录重发次数;
63.4.定义分包id用于标识某个分包数据;
64.5.定义长度用于记录信息总长度;
65.6.定义校验值用于数据正确性;
66.7.发送端在要发送信息时,根据以上定义的字段完成分包;
67.8.接收端在接收到分包数据时,根据以上定义的字段判断接收到的数据是否正确及完成组包;
68.9.接收端根据以上定义的字段回复响应信息;
69.10.发送端在接收到的响应信息时,根据以上定义的字段判断信息发送结果:成功、重发、失败。
70.根据本发明提供的基于蓝牙的端到端的通信协议实现系统,包括:
71.信息类型:包括业务信息和响应信息,业务信息用于标识业务数据的信息类型,响应信息用于标识接收端回复发送端的所发送的信息类型。
72.信息id:用于标识某个信息,接收端在接收到分包数据时快速判断当前分包数据是新信息的分包还是已接收到的信息的后续分包,以便完成信息组包。
73.重发id:记录信息重发次数,通过判断重发次数,能轻松知道当前信息重发了多少次,系统可以设定一个最大重发值,在重发次数达到此最大重发值时不再重发。
74.分包id:标识每个分包数据,每个分包按顺序标记编号,通过获取分包id,接收端可以知道当前接收的是第几包,可轻松判断此分包是否是目标分包,发送端可以知道是否需要从此分包id重发。
75.长度:接收端在每次组包时判断此字段长度,可知道信息是否接收完成。
76.校验值:接收端在每次组包时判断此字段校验值,可知道此分包数据是否正确。
77.信息分包:发送端在准备发送一个信息时,需要将信息分包,信息类型为业务信息,得出n(n>0)个分包,每个分包需要在业务数据之前加上以上字段的包头。系统需定义一个时间间隔,发送端按此时间间隔,将分包数据按顺序一一发送。
78.信息组包:接收端在接收到分包数据时,取出包头中的以上字段,通过判断相应的字段,如果判断成功,则将此分包业务数据拼接到目标信息的业务数据中。
79.发送响应信息:接收端根据包头字段,判断是否回复响应信息。如果回复响应信息,则此响应信息的信息类型为响应信息,信息id为此分包信息id,重发id为此分包重发id,分包id为接收端已接收完成的分包id,如果还未开始接收,则分包id为0,长度为0,校验
值为0,无业务数据。
80.处理响应信息:接收端在收到响应信息时,取出包头中的以上字段,根据以上定义的字段判断信息发送结果,如果分包id为当前信息的最后一包分包id,则表示发送成功,否则需要重发,此时重发id递增,如果重发id大于最大重发值,则发送失败,否则从此分包id重发。
81.发送端对要发送的业务信息进行分包并发送,具体为:
82.1.发送端根据业务信息数据长度计算分包个数;
83.2.每个分包都包含包头及业务数据;
84.a)所有分包的包头中的信息类型为业务信息类型;
85.b)所有分包的包头中的信息id一致,初始值为1,下一信息id递增;
86.c)所有分包的包头中的重发id一致,初始值为1;
87.d)每个分包的包头中的分包id从1开始递增;
88.e)所有分包的包头中的长度一致,为业务信息数据总长度;
89.f)每个分包的包头中的校验值为分包业务数据的校验值,即第x包的校验值为第1包、第2包、
……
、第x包的业务数据拼接的crc值;
90.3.系统需定义一个时间间隔,发送端按此时间间隔,将分包数据按顺序一一发送。
91.接收端对要接收的业务信息进行组包并发送响应信息,具体为:
92.1.接收端获取包头中的各个字段信息;
93.2.接收端通过信息id判断此分包是新信息还是正在接收信息的后续分包;
94.3.接收端判断分包id是否为目标分包id,如果是新信息则目标分包id为1,如果是正在接收的信息,则目标id为已接收的信息的分包id 1。如果是则继续处理分包数据,否则回复响应信息;
95.4.接收端通过拼接已接收业务数据和分包业务数据得出新的已接收业务数据,并根据此业务数据计算校验值,通过将此校验值与已获取到的校验值做比较,如果一致,则表示此分包数据正确,否则回复响应信息;
96.5.通过将新业务数据的长度与包头中的长度做比较,如果一致,则表示数据接收完成,回复响应信息。
97.发送端根据接收到的响应信息判断业务信息的发送结果,具体为:
98.1.发送端获取包头中的各个字段信息;
99.2.发送端通过信息id获取正在发送信息的最后一包分包id;
100.3.发送端判断分包id是否为此分包id,如果是表示信息发送完成,否则发信息发送失败,需要重发;
101.4.发送端获取重发id,并将此重发id 1得到新的重发id,发送端判断此重发id是否大于最大重发id,如果是则表示达到最大重发次数,不再重发,失败报错,否则通过分包id获取目标分包,从此分包开始重发。
102.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为
是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
103.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜