[发明专利]一种基于通讯协议的可通用RS232/422/485数据接收方法在审
| 申请号: | 201310208820.5 | 申请日: | 2013-05-30 |
| 公开(公告)号: | CN103327012A | 公开(公告)日: | 2013-09-25 |
| 发明(设计)人: | 罗海鹰;张洪宇;刘永安;陈涛;张成标;喻芳;冯燕;徐志龙;袁欢欢 | 申请(专利权)人: | 江西洪都航空工业集团有限责任公司 |
| 主分类号: | H04L29/06 | 分类号: | H04L29/06 |
| 代理公司: | 南昌新天下专利商标代理有限公司 36115 | 代理人: | 施秀瑾 |
| 地址: | 330000 江西省*** | 国省代码: | 江西;36 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 通讯 协议 通用 rs232 422 485 数据 接收 方法 | ||
技术领域
本发明涉及一种基于通讯协议的可通用RS232/422/485数据接收方法,这种接收方法基于一种常用的通讯协议。
背景技术
RS232/422/485通讯被广泛运用于军用、民用电子设备中,为了使通讯内容稳定可靠,通讯双方往往会约定一种通讯协议;最常用的一种通讯协议邮包形式为:
位组长度指的是数据块中命令ID号和数据字的字节数之和。
基于这种通讯协议,有多种数据接收方法,但是这些方法往往受到硬件条件的限制(如要求能够获取硬件状态或者获取接收区已接收字节数等与硬件相关的内容),不同的硬件能够提供的条件也不相同,导致这些方法无法通用。
发明内容
为了克服上述缺陷,发明目的在于提供一种在内存中自建缓冲区的基于通讯协议的可通用RS232/422/485数据接收方法。
为了达到上述目的,本发明采用如下技术方案:
一种基于通讯协议的可通用RS232/422/485数据接收方法,本方法采用一种在内存中自建缓冲区的方式接收数据,如下列步骤完成:
A)、接收到数据后先追加至缓冲区尾部;
B)、然后从缓冲区头部取出数据并根据通讯协议进行重新组包,取数后缓冲区里所有数据前移至头部;
C)、最后对组包后的数据进行解析;
将上述步骤置入定时器中周期性调用可实现数据实时接收。
本发明的有益效果
1、本发明采用这种方法对具体硬件没有要求,任何RS232/422/485通讯设备都能采用此方法接收数据。
2、本发明通讯内容稳定可靠。
附图说明
图1为本发明数据接收工作原理。
具体实施方式
下面结合附图1对本发明进行详细描述:
一种基于通讯协议的可通用RS232/422/485数据接收方法,本方法采用一种在内存中自建缓冲区的方式接收数据,如下列步骤完成:
A)、接收到数据后先追加至缓冲区尾部;
B)、然后从缓冲区头部取出数据并根据通讯协议进行重新组包,取数后缓冲区里所有数据前移至头部;
C)、最后对组包后的数据进行解析;
将上述步骤置入定时器中周期性调用可实现数据实时接收。
程序具体说明:
接收函数( )
{
初始化缓冲区;
接收数据;
if ( 接收到的数据字节数 < 1)
退出函数;
if ( 接收到的数据字节数 > 0)
将接收到的数据追加到缓冲区尾部;
while (缓冲区字节数 >=通讯协议最小邮包长度)
{
去除缓冲区头部非邮包同步字的内容;
将剩余部分移动至缓冲区头部;
if (缓冲区字节数 >通讯协议最小邮包长度)
{
switch (缓冲区[3])
{
case命令ID号1:
从缓冲区取出该邮包并进行解析处理;
将剩余部分移动至缓冲区头部;
case命令ID号2:
从缓冲区取出该邮包并进行解析处理;
将剩余部分移动至缓冲区头部;
……
}
}
}
}
定时器函数( )
{
接收函数( );
}。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于江西洪都航空工业集团有限责任公司,未经江西洪都航空工业集团有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310208820.5/2.html,转载请声明来源钻瓜专利网。





