您的位置 首页 芯闻

根据MFC串口接连通讯的简易完成

摘要 设计了一种在MFC中实现与串口连续通信的简易方法,利用微软提供的MSComm控件,仿照MODBUS-RTU协议,并根据数据包之间的时间间隔T1,将间隔串口通信适用于长距离控制与数据传输,许多单

摘要 规划了一种在MFC中完成与串口接连通讯的简易办法,运用微软供给的MSComm控件,模仿MODBUS-RTU协议,并依据数据包之间的时刻距离T1,将距离

串口通讯适用于长距离操控与数据传输,许多单片机在内部均集成了串口通讯模块,而计算机的操作体系也内嵌有对串口通讯的支撑。在现代各工业操控和数据传输等通讯体系领域中,单片机与计算机的串口通讯得到了广泛应用。因而,在Windows操作体系下完成串口通讯,开发与单片机通讯软件显得尤为重要。MFC(Microsoft Foundation Classes),是微软公司供给的一个类库(Class Libraries),以C++类的办法封装了Windows的API,且包含一个应用程序结构,减少了应用程序开发人员的工作量,因而依据VC++的MFC渠道开发串口通讯界面程序的办法深受程序员喜爱。

传统串口通讯软件选用两种办法处理接连传输的数据包。一种是选用固定字节长度的数据包协议,该办法灵活性差,即便传输很少字节的数据也有必要运用固定长度的数据包。另一种办法是参加数据包包头,该办法有必要先对接收到的每个字节进行判别,然后造成了CPU的很多糟蹋。本文选用微软的MSComm控件,规划了一种简洁的办法,有用弥补了以上两种办法的缺点。

1 数据包接连串口通讯原理

单片机的时钟频率远小于计算机CPU,如常用单片机C8051F02频率为25 MHz,低于计算机CPU上GHz的处理速度。单片机传给上位机的数据,每个数据包均独立反映硬件对上位机的一个呼应状况或硬件处理完的一个使命。因而,单片机接连传送数据包时,数据包之间存在必定的时刻距离,而每个数据包中相邻字节是衔接传送的,时刻距离远小于数据包之间的距离。

模仿MODBUS-RTU协议,运用数据包之间的时刻距离T作为是否去读写串口缓存的判别依据,其只需满意以下两个条件:(1)独自数据包本身发送时,数据包内部数据字节之间发送时刻距离小于时刻T;(2)不同的数据包之间发送时刻距离>T,便可完成从串口缓存中衔接读取接收到的数据包。

2 依据MFC的软件规划方案

计算机串口通讯界面软件包含串口初始化、Comm事情呼应、时刻距离判别、读取串口数据和数据处理,其详细流程如图1所示。

依据MFC串口接连通讯的简易完成

3 软件代码完成

翻开VS2008软件开发渠道,新建一个MFC程序,并刺进一个MSComm串口控件。增加了控件呼应函数,数据包时刻距离T此处暂设为20 ms。为调试便利,参加时刻溢出标志m_time_out_flag变量。

m_time_out_flag=0;//时刻溢出标志设为0,标明数据已处理完

为了便利测验,此处增加的数据处理函数是在一个大的编辑框中,将串口接收到的衔接数据包悉数显示出来。

4 软件验证与成果剖析

在单片机开发板中,烧入每隔25 ms向串口发送数据包“Xidian University”的小程序,成功后衔接到计算机,并翻开编写的MFC串口通讯软件以及单片机开发板电源,详细作用如图2所示。

依据MFC串口接连通讯的简易完成

设置时刻距离T为不同的值,相应地修正单片机的数据包发送时刻距离,并在不同CPU类型计算机下进行屡次测验,测出成果平均值如表1所示。

依据MFC串口接连通讯的简易完成

从表1中可得出结论,计算机CPU的处理速度越快,数据包长度越短,时刻距离T可设的值也越小。别的,经测验,当数据处理函数变杂乱时,最小时刻距离T可设的值也会相应增大。

5 结束语

文中办法,充分运用了数据包内部数据字节间发送时刻距离小,数据包之间发送时刻距离大的特色。选用微软供给的MSComm控件,在Comm事情中设置定时器,并依据计算机CPU处理速度、数据包长度、数据处理函数杂乱程度,选取恰当的T值。当定时器时刻T溢出时,读取并处理串口缓冲区中的数据。由所以依据数据包之间发送的时刻距离T来判别数据包,所以数据包长度可不固定,也无需对每个数据字节进行判别,故有用处理了计算机与串口间的衔接数据包传输处理问题。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/282057.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部