[发明专利]一种串口通信方法有效
申请号: | 201510362905.8 | 申请日: | 2015-06-26 |
公开(公告)号: | CN104881379B | 公开(公告)日: | 2018-08-21 |
发明(设计)人: | 张权;邹雄伟;蔡志 | 申请(专利权)人: | 力合科技(湖南)股份有限公司 |
主分类号: | G06F13/28 | 分类号: | G06F13/28;G06F13/42 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 罗满 |
地址: | 410205 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 串口 通信 方法 | ||
本发明公开了一种串口通信方法,包括:依次接收上位机发送的组成同一个指令的多个指令字节;每接收一个指令字节,则判断所述指令的多个指令字节是否接收完毕,如果是,则将所述指令发送至主程序以供其对该指令进行处理,如果否,则等待接收该指令的下一个指令字节。本发明对上位机发送的指令的实时性无要求,而是依次接收上位机发送的同一个指令的多个指令字节,并在接收到一个指令字节后,如果接收完毕,则将指令发送至主程序,否则,则继续等待接收该指令的下一个字节,从而解决了指令的字节与字节间可能存在时间间隔的问题,能够有效获取并识别上位机发送的指令,保证了上位机和下位机之间实现可靠和稳定的通信。
技术领域
本发明涉及数据通信技术领域,更具体地说,涉及一种串口通信方法。
背景技术
模块化的水质监测系统一般由上位机和若干实现某种功能的功能模块(下位机)组成,而水质监测系统的功能实质上是上位机和下位机之间通过通信的方式来实现的。因此,一种理想的下位机通信方式或算法能够保证上位机和下位机之间实现可靠和稳定的通信。
现有技术的上位机和下位机的串口通信过程中,上位机每发完一帧指令,下位机则在规定时间内(若干毫秒)使用DMA(Direct Memory Access,直接内存访问)方式接收,对接收到的指令进行相关处理;并且在经过规定时间后进行DMA清零,即清除接收到的指令。其中,规定时间不可设置的太长,因为那样会影响上位机和下位机之间通信的实时性、通信速度及通信效率等。
但是,上位机在进行多任务处理时经常会影响发送指令的实时性,导致发送出来的指令的字节与字节间偶尔出现不确定时间的中断,由此不能在规定时间内将一帧指令发送完毕,此时,下位机则对该指令不予以处理或认为该指令是错误帧而直接进行DMA清零。最终导致上位机和下位机间的通信缺乏稳定性和可靠度。综上所述,现有技术中存在上位机与下位机之间的通信缺乏稳定性和可靠度的问题。
发明内容
本发明的目的是提供一种串口通信方法,以解决现有技术中上位机与下位机之间的通信缺乏稳定性和可靠度的问题。
为了实现上述目的,本发明提供如下技术方案:
一种串口通信方法,包括:
依次接收上位机发送的组成同一个指令的多个指令字节;
每接收一个指令字节,则判断所述指令的多个指令字节是否接收完毕,如果是,则将所述指令发送至主程序以供其对该指令进行处理,如果否,则等待接收该指令的下一个指令字节。
优选的,所述方法还包括:
每接收一个指令字节,则按照先入先出原则将所述指令字节加入至暂存器存储的具有一定长度的字节队列中,如果有字节从所述字节队列中溢出,则将溢出的字节移至指定存储器中。
优选的,所述方法还包括:
每接收一个指令字节,则判断该指令字节的地址码、功能码是否正确,如果是,则执行判断所述指令的多个指令字节是否接收完毕的步骤。
优选的,所述方法还包括:
如果所述指令字节的功能码和地址码正确,则将该指令字节取出并存储至指定存储器中。
优选的,所述方法还包括:
如果所述指令的多个指令字节接收完毕,则树校验标志。
优选的,所述方法还包括:
所述主程序接收所述指令,并对所述指令进行校验,如果校验成功,则对该指令进行预设处理;
如果校验不成功,则清空所述校验标志。
优选的,所述上位机对所述指令进行预设处理,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于力合科技(湖南)股份有限公司,未经力合科技(湖南)股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510362905.8/2.html,转载请声明来源钻瓜专利网。