当前位置: 首页 > 产品中心 > lcd显示屏-总成

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

发表时间: 2024-01-25 作者: lcd显示屏-总成
产品详情

  的支撑。在现代各工业操控和数据传输等通讯体系领域中,单片机与计算机的串口通讯得到了广泛应用。因而,在Windows操作体系下完成串口通讯,开发与单片机通讯软件显得很重要。(Microsoft Foundation Classes),是微软公司供给的一个类库(Class Libraries),以C++类的方式封装了Windows的API,且包含一个应用程序结构,减少了应用程序研制人员的工作量,因而依据VC++的

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

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

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

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

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

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

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

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

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

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