[发明专利]一种基于状态机和环形队列的串口命令解析方法在审

专利信息
申请号: 201710462136.8 申请日: 2017-06-19
公开(公告)号: CN107302531A 公开(公告)日: 2017-10-27
发明(设计)人: 王在义;王启叶;韩大伟 申请(专利权)人: 青岛华潞佳电子科技有限公司
主分类号: H04L29/06 分类号: H04L29/06;H04L12/879;H04L12/861;H04L1/00
代理公司: 青岛中天汇智知识产权代理有限公司37241 代理人: 史文樊,刘晓
地址: 266000 山*** 国省代码: 山东;37
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 状态机 环形 队列 串口 命令 解析 方法
【说明书】:

技术领域

发明涉及串口通讯技术领域,具体涉及一种基于状态机和环形队列的串口命令解析方法。

背景技术

目前在很多工程化应用控制中都采用了上位机和多台下位机构成的主从系统。下位机主要作为数据采集,驱动执行机构;上位机则通过对下位机进行集中管理,完成信息显示,数据运算并作出决策下发命令。上位机与下位机之间通过通讯的方式完成数据交互,在众多的通讯方式中,串口通讯应用比较普遍。

传统的串口通讯的上位机和下位机的串口通讯过程中,上位机下发数据后,下位机通过串口中断,不仅要接收数据、进行数据的拷贝,还要进行帧头、帧长度、校验和、帧尾的判断。这样就会增大中断函数中程序的运算量和中断执行时间,因为在程序中中断函数的优先级要高于正常的函数,所以中断函数的运算量和执行时间增加不仅会影响其它函数的正常运行,并且还会因为中断函数中运算量和执行时间的增加甚至影响下一数据的接收,造成数据的丢失。这样的处理方式不仅冗余还缺乏稳定性和实时性。

发明内容

本发明的目的在于提供一种基于状态机和环形队列的串口命令解析方法,能够提高系统的实时性。

为了实现上述目的,本发明采用如下技术方案:一种基于状态机和环形队列的串口命令解析方法,包括如下步骤:

S1:定义串口通信协议;

S2:定义状态机的状态;

S3:设置先进先出的环形循环数据缓冲区;

S4:当上位机下发数据后,下位机采用DMA的方式将接收到的数据从外设读取到接收数组中,同时在程序主函数中不停地检测DMA是否接收到新的数据,当检测到新入的数据时则立即将新入的数据写入到环形数据缓冲区中;当环形数据缓冲区中有数据时,在程序的主函数中同时进行数据的读出,读出时依照状态机的状态进行数据的解析。

进一步地,所述步骤S1中,定义串口通信协议包含以下几个域:(1)帧头;(2)帧长度;(3)功能码;(4)帧数据体;(5)校验和。

进一步地,所述数据帧头设置两个。

进一步地,所述步骤S2中,定义状态机有以下几种状态:(1)数据帧头检查接收状态;(2)数据帧长检查接收状态;(3)功能码检查接收状态;(4)帧数据体接收状态;(5)数据帧校验和检查状态。

进一步地,先进先出的环形循环数据缓冲区的设置方法为:

设置一个大小为SIZE的线性数据缓冲区,用Tail指针指向该缓冲区中接收到的有效数据位置即写入数据的位置,用Head指针指向该缓冲区中已经处理的有效数据位置即读出的数据位置,初始化时,Head指针和Tail指针都指到0的位置;当串口接收到数据存放到缓冲区后,Tail就加1,当Tail大于SIZE-1时,将Tail更新为0;当系统从缓冲区取出一个数据进行分析,Head就加1,当Head大于SIZE-1时,将Head更新0。

进一步地,按照下列步骤对读出的数据进行解析:

S61:状态机的初始状态为数据帧头检查接收状态,依次对读出的数据进行帧头检查,若该数据与通信协议中预设的第一个帧头不相等则该数据无效,继续读取下一个数据,直到读取的两个数据与预设的两个帧头数据相等,此时帧头数据读取成功,更改状态机的状态为数据帧长检查接收状态;

S62:继续读取下一个数据进行帧长度检查,如果该数据满足通信协议中对数据体长度的要求,则得到帧长度数据的同时更改状态机的状态为功能码检查接收状态;否则则表明该数据无效,更改状态机的状态为帧头检查接收状态,返回步骤S61;

S63:继续读取下一个数据进行功能码检查,如果该数据满足通信协议中对功能码的要求,则更改状态机的状态为帧数据体接收状态;否则则表明该数据无效,更改状态机的状态为帧头检查接收状态,返回步骤S61;

S64:根据步骤S2获得的帧长度数据,连续读取帧长度所要求的长度的数据作为帧数据体数据,然后更改状态机的状态为数据帧校验和检查状态,进入步骤S65;

S65:对步骤S4获得的帧数据体进行校验和检查,若校验和正确则执行功能码规定的相应操作,否则则表明该数据无效,更改状态机的状态为帧头检查接收状态,返回步骤S61。

进一步地,状态机在接收时,在字节与字节之间设置接收时间阈值,如果超过该时间阈值则该数据无效,返回步骤S61。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于青岛华潞佳电子科技有限公司,未经青岛华潞佳电子科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201710462136.8/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top