FD-110A型涡轮分子泵控制器串口通信的实现与应用.docVIP

FD-110A型涡轮分子泵控制器串口通信的实现与应用.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
FD-110A型涡轮分子泵控制器串口通信的实现与应用

  本文基于串口通讯的原理,并以DF-110A型涡轮分子泵控制器为模型,介绍了使用CSerialPort类实现串口通讯的步骤,分析和讨论了计算机与单片机进行通讯的协议,且在VC++6.0的基础上运用多线程串口编程工具CSerialPort类实现PC机与单片机之间的串口通讯编程。通过协议改变时,模型做很小的修改就能够很方便的移植到不同的应用系统中,具有很好的扩展性。同时,模型中利用多线程技术设计了一个串口监视的线程,能实时的监视串口状态和数据,因此具有很好的实时性。   在现代工业控制中,串口通信的应用越来越广泛。单片机和PC机之间的串口通信在进行数据交换时经常被使用。在串行通信时,要求通信双方都采用一个标准接口,RS-232C接口是单片机和PC机进行通信最常用的一种接口。单片机与PC机进行串口通信最简单的三线制法,即接收数据针脚(RxD)与发送数据针脚(TxD)相连,彼此交叉,信号地(GND)对应相接,如图1所示。   为了实现单片机和PC机之间的串口通信,采用VC++6.0来实现编程,VC++6.0是一种功能强大的面向对象的Windows编程开发平台。与以   往DOS下串行通信不同,Windows不提倡应用程序直接控制硬件,而是通过Windows系统提供的设备驱动程序来进行数据传递。串口在Win32中是作为文件来处理的,而不是直接对端口进行操作。本文采用多线程串口编程工具CSerialPort类来实现PC机与单片机之间的通讯。 图1 RS-232端接口 1、使用CSerialPort类实现串行通信  CSerialPort类是由RemonSpekreijse提供的串口类,该类支持线连接(非MODEM)的串口编程操作。   CSerialPort类是基于多线程的,其工作流程如下:首先设置好串口参数,再开启串口监测工作线程,串口监测工作线程监测到串口接收到的数据、流控制事件或其他串口事件后;就以消息方式通知主程序,激发消息处理函数来进行数据处理,这是对接收数据而言的;发送数据可直接向串口发送。具体实现如下:   1.1、添加类文件(SerialPort.h和SerialPort.cpp)并定义类对象m_SerialPort,(若要操作多个串口,则要为每个串口均定义一个类对象)。   1.2、串口的初始化   串口的初始化代码一般在OnInitDialog()函数中实现,下面给出了主要代码以及定义了一个布尔变量m_bSerialPortOpened用来标志串口是否打开。   if(m_SerialPort.InitPort(this,nPort,4800,’D’,8,1,EV_RXFLAG|EV_RXCHAR,512))   {m_SerialPort.StartMonitoring();//启动监测辅助线程   m_bSerialPortOpened=TRUE;   }   else   {AfxMessageBox(AB800080解释如下   AB:包头-同步码   80:命令字   00:参数长度,无参数时填零   80:异或效验码   2.3、单片机上传数据   当启动分子泵时,随着分子泵旋转速度的增加,4位LED数码显示数字随之增加,当显示稳定在704HzAB810081   constCStringCLOSEMOTOR=AB800080   constCStringSET430Hz=AB820082   constCStringSET704Hz=AB830083   constCStringWORKSTATUS=AB840084   constCStringBACKDATA=A  //当前运动状态   constintStartMotor=0;   constintCloseMotor=1;   constintSet430HZ=2;   constintSet704HZ=3;   constintWorkStatus=4;   //启动分子泵   CStringstr;//临时变量   str=m_strSendData;   m_strSendData=STARTMOTOR;   StrtoHex(m_strSendData);   CountDisplay(m_strSendData);   m_strSendData=str;   CurrentControlStatus(0);   hellip;hellip;hellip;hellip;hellip;   //关闭分子泵   CStringstr;//临时变量   str=m_strSendData;   m_strSendData=CLOSEMOTOR;   StrtoHex(m_strSendData);   CountDis

文档评论(0)

骨干 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档