掌桥专利:专业的专利平台
掌桥专利
首页

一种简易链路报文传输方法及系统

文献发布时间:2023-06-19 19:28:50


一种简易链路报文传输方法及系统

技术领域

本发明涉及通讯技术领域,特别是涉及一种简易链路报文传输方法及系统。

背景技术

通讯协议称为通信系统的软体,与硬体(各种通信设备)一起完成通信信息的传递,是现代通信系统中必不可少的、非常重要的组成部分。现在有非常多的通讯协议,但是基本上都是针对高端复杂场景的,没有现成的简单实用的底层通讯协议可供使用。

申请号为CN201710656499.5的中国专利公开了一种通讯协议的数据传输方法及系统,该数据传输方法包括:转发节点数据流,对数据流进行分类,得到多个数据流片段;为每个数据流片段配置唯一身份标签,调用预设数据流协议进行预处理,同时将身份标签的信息发送给中心处理器;中心处理器分配存储区域,并向转发节点发送反馈信息;转发节点调用预设转移通道将数据流片段发送至对应的存储区域。还涉及一种系统,该系统包括:服务器、转发节点、中心处理器。通过该发明可以避免发送的时候数据流丢失,当发生数据流丢失现象时可以通过身份标签快速查找,存储区域进行分区,这样有利于有序地接收数据流片段,大大减少了数据流片段发送混乱的现象,提高了数据流的传输速率。

申请号为CN201610413632.X的中国专利公开了一种可变报头的中继通讯协议方法,该方法包括:将传输数据按照一定的数据格式进行封装,根据报文类型分为请求报文和响应报文,根据报文模式分为开关量报文和数字量报文,根据报文请求或者响应方式不同,完成不同类型的封装,每个字段表示不同的含义,能有效减少无效数据的传输,数据报文附加校验码,对报文数据传输进行校验,保证数据传输过程的正确率。该发明发明简单易行,能工作于多种通讯协议,不受平台限制,能减少通讯流量,节约电能,并且可以将异构无线传感网系统之间的数据交互进行有效集成。

上述均属于成熟的协议,过于复杂,占用资源较多,执行效率略低,特别是在嵌入式资源受限系统中有各种局限。但是每个项目编写专用协议,不够稳定和全面,重复开发和测试浪费人力物力。因此需要提供一种通用性比较强的通讯协议和数据传输方法,利用简单的传输控制机制,在其基础上搭载不同的应用。

发明内容

基于以上问题,本发明公开了一种简易链路报文传输方法及系统。

为实现上述目的,本发明提供如下技术方案:

一种简易链路报文传输方法,步骤包括:

S1、建立链路链接;

所述发送方和所述接收方每隔时间段T

S2、基于所述链路连接状态,进入工作状态和待机状态中的至少一种;

所述待机状态为:每隔T

S3、若进入工作状态,此时发送方发送数据报文,等待接收方响应,等待响应时间为T

S4、接收方回复响应报文,发送方针对所述响应报文进行处理。

优选地,接收方针对接收到的所述数据报文进行响应的方法为:

若接收到连接报文,则响应ACK报文,其中ACK报文的ID与所述连接报文的ID相匹配;

若接收到普通数据报文,则响应ACK报文,其中ACK报文的ID与所述普通数据报文的ID相匹配,并根据应用协议处理App报文载荷功能;

若数据报文正确性存在错误,则响应具有错误信息的NAK报文。

优选地,接收方查看数据报文正确性的方法按照下述报文正确性检查步骤进行:

检查报文校验和:验证报文长度计算的校验和必须跟报文内部的校验和是否字段相同,若不同,则响应NAK报文,并指定错误原因为校验和错误;如果相同,则记录该报文的ID,继续检查报文类型;

检查报文类型:验证报文的类型是否支持,若属于是不支持的类型,则响应NAK报文,并指定错误原因为:未知类型错误;否则继续检查报文ID;

检查报文ID:判断在T

优选地,若发送方接收到NAK报文且错误原因为校验和错误,则发送方尝试重新发送相同的数据报文;

若发送方接收到NAK报文且错误原因为未知类型错误或重复ID错误,则发送方停止发送该数据报文,进入下一个数据报文的发送流程。

优选地,发送方针对所述响应报文进行处理的方法为:

若接收到ACK报文,判断该ACK报文的ID与所发送的数据报文的ID字段是否匹配,若不匹配,则忽略该ACK报文,继续等待接收响应报文,若匹配,则停止等待;

若接收到NAK报文,则判断该NAK报文的ID与所发送的数据报文的ID字段是否匹配,若不匹配,则忽略该NAK报文,继续等待接收响应报文,若匹配,则获取NAK报文中的错误信息,并采取对应措施。

优选地,若在T

如果该数据报文的发送次数已经达到或超过C

本发明还提供一种简易链路报文传输系统,包括第一处理系统和第二处理系统;

所述第一处理系统包括主处理器和第一应用处理器,所述第二处理系统包括第二应用处理器;

所述主处理器和所述第一应用处理器之间、所述主处理器和所述第二应用处理器之间均通过如上述任意一项所述的一种简易链路报文传输方法进行串口通信。

优选地,所述第一应用处理器为第一低功耗蓝牙处理器;所述第二应用处理器为第二低功耗蓝牙处理器;所述第一低功耗蓝牙处理器和所述第二低功耗蓝牙处理器之间通过蓝牙无线讯连接。

优选地,所述主处理器通过如上述任意一项所述的一种简易链路报文传输方法

调用所述第一低功耗蓝牙处理器/所述第二低功耗蓝牙处理器的蓝牙应用功能;此时主处理器定义为蓝牙使用方,所述第一低功耗蓝牙处理器/所述第二低功耗蓝牙处理器为蓝牙提供方。

优选地,所述蓝牙功能至少包括:打开低功耗蓝牙功能、关闭低功耗蓝牙功能、读取低功耗蓝牙状态、扫描设备、停止扫描、连接指定设备、断开连接、使用定制服务。

与现有技术相比,本发明有以下优势:

本发明提出了一种简易链路报文传输方法及系统,通过提供简单的传输控制机制,其上层可以承载不同的应用。本发明公开的报文传输方法,先进行通信链路的链接状态,所述发送方和所述接收方每隔时间段Tconnect向对方发送连接报文,判断是否接收到响应,若双方均收到正确的响应报文,则判定通信链路处于链路连接状态,验证方式更为简单,降低协议实现的复杂度,通讯流程简单,精炼小巧,对系统资源要求少,能运行于小型嵌入式MCU(微控制器)上,通用性更强,

基于本申请的数据传输方法,可以定义一些常用的应用,用户也可以自定义新的应用,通用性更强。目前已经成功的运用至产品信息交换系统及低功耗蓝牙应用系统。

附图说明

图1是本发明一种简易链路报文传输方法的流程示意图;

图2是本发明一种简易链路报文传输系统的示意图;

图3是本发明一种简易链路报文传输系统中的BLE应用的示意图。

具体实施方式

为使本发明实施例的目的和技术方案更加清楚,下面将结合本发明实施例,对本发明的技术方案进行清楚、完整地描述。

实施例一

本发明提供一种简易链路报文传输方法,适用与嵌入式产品通信使用,其中通用二进制协议(以下简称为JCBP协议),是一个通用的点对点二进制协议。通信的双方称为节点(Node),节点间为全双工通信。通信需要应答来保证可靠性,支持重传和超时机制。协议支持心跳机制,来维护通信双方的虚拟连接。协议支持可选的加密方案来保证数据传输的安全。

JCBP协议的设计目的是提供简单的传输控制机制,其上层可以承载不同的应用。本协议同时定义一些常用的应用,用户也可以自定义新的应用。JCBP协议的主要应用场景为嵌入式资源受限系统,所以其报文大小及复杂程度均受到一定的制约,便于在资源受限的系统中实现。JCBP协议可以运行在不同的链路层之上。如串口、BLE无线等。它可以应用在两个系统之间,也可以运行在一个系统的两个CPU之间。

JCBP协议采用二进制报文,其报文格式如表1所示:

表1JCBP协议二进制报文格式

其中名词解释如下所示:

报文长度(Length):表示报文的整体长度,其单位为字节,1字节长可表示为1byte,报文整体长度的最大长度为256字节;

类型(Type):类型字段,长度为1字节。该字段定义了报文的类型。JCBP协议有两种大的报文类别,一种是控制报文,一种是数据报文。

控制报文包括ACK报文(确认数据报文)和NAK报文(错误反馈报文)。

ACK报文是确认数据报文,用于确认收到的数据报文的正确性;当接收到的数据报文的报文长度、类型、ID、报文载荷、校验和等格式通过检查时,接收方应该发送ACK报文;ACK报文的ID字段应该是其响应的数据报文的ID;ACK报文无报文载荷。NAK报文用于向发送方反馈报文错误。当收到的报文的报文长度、类型、ID、报文载荷、校验和检查失败时,接收方应该发送NAK报文。NAK报文的ID字段是其响应的数据报文的ID。NAK报文的报文载荷字段包含一个字节,为错误字段,用于描述错误的类型,其错误类型可概括为表2所述:

表2NAK报文描述错误的类型

数据报文包括普通数据报文,除此之外还会扩充支持其他类型的报文,比如加密的数据报文等。常用的数据报文能有以下三种:

连接报文用于心跳机制,它不携带任何其他数据。报文载荷字段为空。连接报文需要接收方确认。

普通数据报文用于传输无加密的数据,传输的数据内容在报文载荷字段。普通数据报文需要接收方确认。

加密数据报文用于传输加密的数据,传输的数据内容在报文载荷字段。加密数据报文需要接收方确认。

ID:所有的数据报文都包含有一个ID字段,ID字段作为发送方的一个流水号,用于在一定时间内标识发送的数据报文的唯一性。ID字段为1字节,取值为1到255。发送方从1开始,每尝试发送一个新报文时增加1。到255后,从1重新开始结束;控制报文中的ID字段为其响应的数据报文的ID值。

报文载荷(Payload):报文载荷字段是报文的载荷,长度为0到250字节。报文载荷字段用于承载应用数据,其内容可能是加密后的。对于加密后的,首先需要解密。解密后的报文载荷字段的格式如下表3所示:

表3报文载荷字段格式

其中,AppID为应用ID,用于标识App报文载荷的数据用途。字段为1个字节,取值为1到255。其中1到127表示系统应用,由本协议规定。用户可以使用128到255定义自己的应用,只要通信双方能达成一致即可。App报文载荷表示应用数据,长度通常为0到249字节。

校验和(CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。校验和可以高比例的纠正信息传输过程中的错误,可以在极短的时间内完成数据校验码的计算,并迅速完成纠错过程,通过数据包自动重发的方式使得计算机的通信速度大幅提高,对通信效率和安全提供了保障。由于校验和算法检验的检错能力极强,且检测成本较低,因此在对于编码器和电路的检测中使用较为广泛。

基于该通信二进制协议的数据传输方法的具体步骤包括:

步骤一、判断通信链路的链接状态;通信双方需要对通信链路有个状态判断。协议开始之初,双方判定链路为断开状态(Disconnected状态)。在断开状态下,每隔T

仅在链路连接状态时,才能向对方发送除连接报文以外的数据报文。当链路连接后,在T

其中T

步骤二、发送方发送数据报文,等待接收方响应,等待响应时间为T

步骤三、接收方查看数据报文正确性,并针对接收到的所述数据报文进行响应;若接收到连接报文,则响应ACK报文,其中ACK报文的ID与所述连接报文的ID相匹配;若接收到普通数据报文,则响应ACK报文,其中ACK报文的ID与所述普通数据报文的ID相匹配,并根据应用协议处理App报文载荷功能;若数据报文正确性存在错误,则响应具有错误信息的NAK报文。

步骤四、接收方回复响应报文,发送方针对所述响应报文进行正确性检查并进行处理。

发送方若接收到ACK报文,判断该ACK报文的ID与所发送的数据报文的ID字段是否匹配,若不匹配,则忽略该ACK报文,继续等待接收响应报文,若匹配,则停止等待;可以继续发送下一个报文。

若接收到NAK报文,则判断该NAK报文的ID与所发送的数据报文的ID字段是否匹配,若不匹配,则忽略该NAK报文,继续等待接收响应报文,若匹配,则获取NAK报文中的错误信息,并采取对应措施。根据对方返回的错误原因,接收方应该采取不同措施:

若发送方接收到NAK报文且错误原因为校验和错误,则发送方尝试重新发送相同的数据报文,如果该报文的发送次数已经达到或超过C

在等待响应的时间T

接收方查看数据报文正确性和发送方针对所述响应报文进行正确性检查的方法均按照下述报文正确性检查步骤进行:

S1、检查报文校验和:校验和的计算包括报文长度、类型、ID、报文载荷的多重计算,验证报文长度计算的校验和必须跟报文内部的校验和是否字段相同,若不同,则响应NAK报文,并指定错误原因为校验和错误;如果相同,则记录该报文的ID,继续S2检查。

S2、检查报文类型:验证报文的类型是否支持,若属于是不支持的类型,则响应NAK报文,并指定错误原因为:未知类型错误;否则继续S3检查。

S3、检查报文ID:判断在T

JCBP协议用于双处理器之间通信时,在低功耗的应用中,接收方的处理器可能会处于低功耗休眠状态,其响应发送方数据的及时性可能会不够。这通常会造成数据丢失,因而不能正常接收数据。通常解决办法就是适当的选取T

实施例二

本实施例基于实施例一提供的简易链路报文传输方法(以下简称JCBP协议)具体的应用,JCBP应用一般是指在JCBP协议的App报文载荷里传输另外一层JCBP协议数据的应用。如图2和图3所示,JCBP协议创新的定义了一种应用模式。在此应用模式下,包括第一处理系统和第二处理系统;所述第一处理系统包括主处理器和第一应用处理器,所述第二处理系统包括第二应用处理器;

所述主处理器和所述第一应用处理器之间、所述主处理器和所述第二应用处理器之间均通过JCBP协议所示的简易链路报文传输方法进行串口通信。在此模式下,可以完成包括产品信息交换、JCBP应用(通过JCBP传输另一层JCBP协议)、BLE应用(通过JCBP控制使用一方提供的BLE功能)等扩展应用方式。特别是JCBP应用和BLE应用,因JCBP协议的简洁性,可实现穿透通信和穿透控制。应用模式还可以扩展至其他方式,如WIFI控制等。

在此举例一种应用场景如下:一个双处理器的系统A,包含一个主处理器和一个BLE(低功耗蓝牙)处理器。主处理和BLE处理器之间通过JCBP协议经过串口通信。系统A跟另外一个使用BLE处理器的系统B通过BLE通信,系统A和系统B的通信终点是系统A的主处理器和系统B的BLE处理器,但是之间必须经过系统A的BLE处理器,这样才能在通过BLE无线通信。

这时系统A的主处理器和系统B的BLE之间也可以使用JCBP通信,它们的通信报文在系统A的主处理器和BLE处理器之间通过JCBP应用来实现。

JCBP应用是作为底层JCBP的App报文载荷传输的,所以其整体大小会收到下层App报文载荷大小的限制。其报文格式就是JCBP的格式。

BLE应用适用于一方通过JCBP控制、使用另一方的蓝牙低功耗(BLE)的功能。通常通信双方是同一系统中的两个处理器,通信双方之间可以通过串口等方式连接。在这样的应用中,提供BLE功能的一方称为BLE提供方,另一方称为BLE使用方。

BLE应用的设计主要针对BLE设备,为了简化使用者的工作,所以BLE提供者隐藏了部分BLE的功能,仅对BLE使用者提供部分功能,其中部分功能使用了BLE设备的特殊服务。所有的BLE设备应该以产品型号和序列号标识,在BLE应用中,这是用来标识BLE设备的,而非传统的MAC地址。BLE提供方通常仅支持一种BLE角色中心设备(Central)或周边设备(Peripheral),仅支持一个BLE连接。

BLE应用的功能主要包括:BLE使用方请求BLE提供方打开BLE功能、关闭BLE功能、读取BLE状态、扫描设备、停止扫描、连接指定设备、断开连接、使用TX服务(一种BLE服务)发送数据。

BLE提供方向BLE使用方主动汇报BLE状态变化、汇报扫描结果、汇报RX服务(一种BLE服务)接收到的数据。

其中BLE应用的报文类型如下表所示:

表4BLE应用的报文类型

其中几个重要的报文类型定义如下:

BLE状态报文:BLE状态报文用于BLE提供方向使用方汇报BLE状态变化。当使用方读取BLE状态时,BLE提供方也是使用该报文回应给对方。其包含若干状态类型,具体如表5所示:

表5BLE状态报文的状态

/>

扫描开启报文:扫描开启报文用于开始扫描。BLE使用方用此报文请求BLE提供方开始扫描设备。请求中可以包含需要扫描的产品型号,甚至产品序列号。如果不提供产品型号,则认为搜索任何产品型号。如果不提供产品序列号,则认为搜索任何产品序列号。

收到扫描开启报文后,BLE提供方如果能够支持扫描,应该立刻开始扫描,并汇报扫描开启报文,状态为扫描。如果BLE提供方不能支持扫描,则应立刻返回扫描停止报文。

在扫描的过程中,BLE提供方负责对比扫描到的设备是否符合使用方要求的产品型号和序列号,仅应该通过扫描结果返回符合条件的扫描结果。当扫描完成后,BLE提供方汇报扫描终止。如果扫描过程中,BLE使用方主动请求停止扫描,则汇报BLE状态报文,状态为连接准备状态。

扫描开启报文的报文格式如表6所示:

表6StartScan报文的报文格式

其中参数的定义为:

扫描持续时间(Time):1字节,无符号整数。从0到255秒。当取值为0时,意味着不停扫描直至BLE使用方明确请求停止扫描。

产品型号(Model):7个字节。内容为‘ ’结束的字符串。包括’ ’不能超过7个字节。

产品序列号(Serial):10个字节。内容为‘ ’结束的字符串。。包括’ ’不能超过10个字节。

扫描结果报文:扫描结果报文BLE提供者用于向BLE使用者汇报扫描到的满足要求的BLE设备。报文格式如表7所示:

表7扫描结果报文的报文格式

其中参数的定义为:

产品型号(Model):7个字节。内容为‘ ’结束的字符串。包括’ ’不能超过7个字节。

产品序列号(Serial):10个字节。内容为‘ ’结束的字符串。。包括’ ’不能超过10个字节。

信号强度(RSSI):1字节。有符号整数,-127到127。

指定设备连接报文:BLE使用方请求BLE提供方连接指定设备。收到该报文后,BLE提供者应该开始尝试连接指定设备,同时返回BLE状态报文,状态为连接中状态。如果当时已经连接了设备,则应该断开该设备并连接新设备。当连接成功后或失败后,应该发送BLE状态报文,状态为已连接或连接准备状态。

报文格式如下:

表8指定设备连接报文的报文格式

其中参数的定义为:

产品型号:产品型号,7个字节。内容为‘ ’结束的字符串。包括’ ’不能超过7个字节。

产品序列号:产品序列号,10个字节。内容为‘ ’结束的字符串。包括’ ’不能超过10个字节。

TX发送报文:TX发送报文供BLE使用方通过BLE提供方的TX服务发送数据到其他蓝牙设备的手段。TX服务提供的是不可靠的数据发送服务,发送的数据在蓝牙层面没有确认的。因此需要使用方通过上层应用来保证数据发送的确认、重传等。如果TX发送报文发送的数据大小超过BLE提供方的最大传输单元(MTU)大小,BLE提供方应该有自动分包的功能,或能够调整最大传输单元的大小以适应TTX发送报文的数据大小。

表9TX发送报文的报文格式

其中参数的定义为:

报文长度:数据长度,1字节,无符号整数。取值1到247字节。

数据:要发送的数据。

RX接收报文:RX接收报文是当BLE提供方通过RX服务收到来自其他蓝牙设备数据时,发送给BLE使用方的报文。RX服务提供的也是不可靠的数据发送服务,发送的数据在蓝牙没有确认的。因此需要使用方通过上层应用来保证数据发送的确认、重传等。

表10RX接收报文的报文格式

其中参数的定义为:

报文长度:数据长度,1字节,无符号整数。取值1到247字节。

数据:要发送的数据。

实施例三

本实施例基于实施例一提供的基于JCBP协议的数据传输方法具体的应用,提供了一种产品信息交换系统。

通信双方经常需要了解对方的产品信息,如:产品型号、序列号、硬件版本、软件版本等。有时这种需要是双向的,有时是单向的,所需交换的信息也不一定完全相同。本产品信息交换系统的目的就是在通信双方间交换这些产品信息。

产品信息通常认为在软件运行过程中不太会变化,所以只需要在连接建立时进行一次。由于通信双方可能对连接状态的判断不一定完全一致,在某些特殊时间段,会出现一方认为连接断开,另一方认为连接成功。

下面描述了产品信息交换的规则:当一方的连接状态从断开状态(Disconnected状态)变化为连接状态(Connected状态)时,主动通过产品信息报文向对方发送自己的产品信息。当一方需要了解对方的产品信息时,可以主动向对方发送产品信息响应报文。收到产品信息响应报文后,接收方应该向对方发送产品信息报文。

具体的报文包括产品信息报文和产品信息响应报文。

其中产品信息报文用于向对方汇报自己的产品信息,其App报文载荷格式如下表中所示:

表11P产品信息报文的App报文载荷格式

其中各参数的定义为:

产品信息:表示本报文是产品信息报文,1字节。固定为0x01。

产品型号(Model):7个字节。内容为‘ ’结束的字符串。包括’ ’不能超过7个字节。

产品序列号(Serial):10个字节。内容为‘ ’结束的字符串。。包括’ ’不能超过10个字节。

硬件版本(HWVer):一个字节。取值为1到255。

软件版本(SWVer):3个字节。第一个字节为主版本,第二个字节为次版本,第三个字节为修订版本。

产品信息响应报文的App报文载荷格式如下表所示:

表12产品信息响应报文的App报文载荷格式

其中各参数的定义为:

产品信息响应:表示本报文是产品信息响应报文,1字节。固定为0x02。后面的产品型号、产品序列号、硬件版本、软件版本表示发送方自己的产品信息,含义及格式跟产品信息报文。

以上仅为本发明的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些均属于本发明的保护范围。

相关技术
  • 多链路隧道报文传输方法及系统
  • 多链路隧道报文传输方法及系统
技术分类

06120115921012