一种串口数据的收发方法技术

技术编号:24683120 阅读:28 留言:0更新日期:2020-06-27 07:54
本发明专利技术涉及串口数据收发机制技术领域,尤其是指一种串口数据的收发方法,其包括以下步骤:步骤A,采集数据,对数据序列进行封装;步骤B,对封装后的数据序列的前端填入包头标识形成数据包头;步骤C,在数据包头和封装后的数据序列之间填入数据长度值;步骤D,对封装后的数据序列的末端填入校验值;步骤E,对填入了数据包头、数据长度以及校验值的数据序列进行接收解析。本发明专利技术设计新颖,既能保证通讯速率,又保证了数据的完整可靠性,非常适合在嵌入式、工控等领域使用;保证数据传输完整、顺序性、和可靠性,提高可靠性和通讯速率,降低数据解析出错概率。

A method of receiving and sending serial data

【技术实现步骤摘要】
一种串口数据的收发方法
本专利技术涉及串口数据收发机制
,尤其是指一种串口数据的收发方法。
技术介绍
串口通讯在单片机、传感器、智能设备、工业控制等领域大量使用,因此通讯的可靠性就非常重要。其中,Zigbee:一种无线近距离通讯协议,这里举例引入作为应用场景。Mt7688:一种常见的互联网网关处理器,这里举例引入作为应用场景。如图1为一种串口通讯的实际应用场景,zigbee控制器通过无线方式收集传感器数据。用户如果想要在远程或者集中展示查看,那就需要把这些数据上传至APP或者云端后台服务器。首先zigbee控制器使用串口把数据发送给mt7688主控MCU,再由mt7688把数据进行存储或者通过互联网发送到后台是比较合适的数据传输流程。常见串口通讯逻辑如图2所示:mt7688主控cpu通过串口在接受数据时,如果zigbee控制器上报数据时频率较低,例如规定每隔5秒上报一次64字节,mt7688间隔小于5秒读一次,每次读128字节就可以一次把整包数据读完。这种情况下不会出现数据粘连、或只读到一部分数据的现象。但如果发送频率比较高(1秒或几百毫秒发一次),每次数据量较大(超过128甚至更多)就会出现一次读不完一包数据,或者上一帧数据和下一帧数据连在一起导致解析错误的情况。所以需要一种方法来保证数据传输完整、顺序性、和可靠性。
技术实现思路
本专利技术针对现有技术的问题提供一种串口数据的收发方法,设计新颖,既能保证通讯速率,又保证了数据的完整可靠性,非常适合在嵌入式、工控等领域使用;保证数据传输完整、顺序性、和可靠性,提高可靠性和通讯速率,降低数据解析出错概率。为了解决上述技术问题,本专利技术采用如下技术方案:本专利技术提供的一种串口数据的收发方法,包括以下步骤:步骤A,采集数据,对数据序列进行封装;步骤B,对封装后的数据序列的前端填入包头标识形成数据包头;步骤C,在数据包头和封装后的数据序列之间填入数据长度值;步骤D,对封装后的数据序列的末端填入校验值;步骤E,对填入了数据包头、数据长度以及校验值的数据序列进行接收解析。优选地,所述步骤B中,在封装后的数据序列的前端填入一个字节的包头标识形成数据包头。优选地,所述步骤C中,在数据包头和封装后的数据序列之间填入一个字节的数据长度值。优选地,所述步骤D中,对封装后的数据序列的末端填入一个字节的校验值。其中,所述步骤E中对数据进行接收解析的方法包括:步骤E1,对数据的数据包头进行读取;步骤E2,对数据的数据长度进行读取;步骤E3,根据数据长度对数据的数据序列进行一次性读取;步骤E4,读取完数据序列后提取校验值,然后校验所述数据包头、数据长度以及校验值的正确性。优选地,所述步骤E1和E2中,对数据进行逐个字节读取。优选地,所述数据包头选取为十六进制数值。其中,在进行步骤E1前,先判断读取的第一个字节是否为数据包头,若否,则继续读取下一个字节,若是,则进入步骤E1。本专利技术的有益效果:本专利技术设计新颖,在读取数据前,对数据序列进行封装,并且在数据前端依次填入数据包头和数据长度值,在数据末端填入校验值,发送数据至接收端,接收端对数据进行接收时,读取数据的数据包头以及数据长度,判断数据的完整性,并且保证数据的顺序性,再通过校验值进行校验,确保数据的正确性;本专利技术连同数据包头部分一起校验的好处是能确定这是发送方要发送的一个完整数据包,而不是误读到了和数据包头标志相同的数值,校验完成后就可以把传感器数据拿出来保存或者上报后台服务器,保存完成后就可以继续去读下一帧的数据;这种组合机制既能保证通讯速率,又保证了数据的完整可靠性,非常适合在嵌入式、工控等领域使用;保证数据传输完整、顺序性、和可靠性,提高可靠性和通讯速率,降低数据解析出错概率。附图说明图1为现有技术中的一种串口通讯的实际应用场景示意图。图2为现有技术中的常见串口通讯逻辑的示意图。图3为本专利技术的数据封装过程的流程示意图。图4为本专利技术的数据接收解析的流程示意图。具体实施方式为了便于本领域技术人员的理解,下面结合实施例与附图对本专利技术作进一步的说明,实施方式提及的内容并非对本专利技术的限定。以下结合附图对本专利技术进行详细的描述。一种串口数据的收发方法,如图3至图4所示,包括以下步骤:步骤A,采集数据,对数据序列进行封装;步骤B,对封装后的数据序列的前端填入包头标识形成数据包头;步骤C,在数据包头和封装后的数据序列之间填入数据长度值;步骤D,对封装后的数据序列的末端填入校验值;步骤E,对填入了数据包头、数据长度以及校验值的数据序列进行接收解析。具体地,本专利技术设计新颖,在读取数据前,对数据序列进行封装,并且在数据前端依次填入数据包头和数据长度值,在数据末端填入校验值,发送数据至接收端,接收端对数据进行接收时,读取数据的数据包头以及数据长度,判断数据的完整性,并且保证数据的顺序性,再通过校验值进行校验,确保数据的正确性;本专利技术连同数据包头部分一起校验的好处是能确定这是发送方要发送的一个完整数据包,而不是误读到了和数据包头标志相同的数值,校验完成后就可以把传感器数据拿出来保存或者上报后台服务器,保存完成后就可以继续去读下一帧的数据;这种组合机制既能保证通讯速率,又保证了数据的完整可靠性,非常适合在嵌入式、工控等领域使用;保证数据传输完整、顺序性、和可靠性,提高可靠性和通讯速率,降低数据解析出错概率。优选地,所述步骤B中,在封装后的数据序列的前端填入一个字节的包头标识形成数据包头。优选地,所述步骤C中,在数据包头和封装后的数据序列之间填入一个字节的数据长度值。优选地,所述步骤D中,对封装后的数据序列的末端填入一个字节的校验值。其中,所述数据序列支持数据长度自定义可变,支持二进制和ASCII字符串方式的数据传输。本实施例所述的一种串口数据的收发方法,所述步骤E中对数据进行接收解析的方法包括:步骤E1,对数据的数据包头进行读取;步骤E2,对数据的数据长度进行读取;步骤E3,根据数据长度对数据的数据序列进行一次性读取;步骤E4,读取完数据序列后提取校验值,然后校验所述数据包头、数据长度以及校验值的正确性。具体地,在选取校验值进行校验算法时可以采用CRC8的校验方式。因为现在串口通讯硬件误码率已经非常低,使用CRC8既能满足校验需求,又可以做到减小不必要的数据长度,因为CRC8的校验码只占用一个字节。优选地,所述步骤E1和E2中,对数据进行逐个字节读取。在进行步骤E1前,先判断读取的第一个字节是否为数据包头,若否,则继续读取下一个字节,若是,则进入步骤E1;对数据进行逐个字节读取实现精确读取包头和数据长度,先读一个字节,再一次性读完一帧数据剩下的部分,最后加上校验值,保证了数据序列中即使出现了和包头标志一样的数值,也可以完全被正本文档来自技高网...

【技术保护点】
1.一种串口数据的收发方法,其特征在于,包括以下步骤:/n步骤A,采集数据,对数据序列进行封装;/n步骤B,对封装后的数据序列的前端填入包头标识形成数据包头;/n步骤C,在数据包头和封装后的数据序列之间填入数据长度值;/n步骤D,对封装后的数据序列的末端填入校验值;/n步骤E,对填入了数据包头、数据长度以及校验值的数据序列进行接收解析。/n

【技术特征摘要】
1.一种串口数据的收发方法,其特征在于,包括以下步骤:
步骤A,采集数据,对数据序列进行封装;
步骤B,对封装后的数据序列的前端填入包头标识形成数据包头;
步骤C,在数据包头和封装后的数据序列之间填入数据长度值;
步骤D,对封装后的数据序列的末端填入校验值;
步骤E,对填入了数据包头、数据长度以及校验值的数据序列进行接收解析。


2.根据权利要求1所述的一种串口数据的收发方法,其特征在于:所述步骤B中,在封装后的数据序列的前端填入一个字节的包头标识形成数据包头。


3.根据权利要求1所述的一种串口数据的收发方法,其特征在于:所述步骤C中,在数据包头和封装后的数据序列之间填入一个字节的数据长度值。


4.根据权利要求1所述的一种串口数据的收发方法,其特征在于:所述步骤D中,对封装后的数据序列的末端填入一个字节的校验...

【专利技术属性】
技术研发人员:程国亮
申请(专利权)人:东莞市峰谷科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1