保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

金刚石合成控制系统中多串口通信技术的设计与实现


etTimeOuts()函数用于获得访问超时值。
  
  (9)ClosePort()函数可用来关闭串口。因为在Windows系统中串口是系统资源,因而在不用时,应将其释放掉,以便于其它进程对该资源的使用。
  
  4基于串口通信的金刚石合成控制
  
  金刚石合成控制系统采用主从式控制方式,上位机为微机、下位机为PLC。上位机的主要功能是对系统进行实时监控,下位机的主要功能是对系统进行实时控制。上位机采用Windows98操作系统,其监控程序可用VC开发,上、下位机之间通过RS-232与RS-485串口进行通信,它们之间采用的通信波特率为9600bps,无奇偶校验,每字节8位,并有1位停止位。上、下位机之间传送的数据格式可自己定义。由于传输数据时可能会引起错误,所以加入了校验算法。该系统通过上位机向下位机发送数据,下位机收到后就把当前系统的状态参数返回给上位机。由于该系统中所控制的参数具有迟滞性,所以应采用定时发送数据的方法来采集现场状态信息。
  
  上位机编程时,可用VC6.0生成一个对话框类型的程序框架,然后将自己编写的CSerialPort类加入到该工程中,并在主界面类?CCrystal?中添加一个CSerialPort类的成员变量serial。当监控系统开始工作时,可用AfxBeginThread??函数创建辅助线程来管理串口通信,当调用CSerialPort类中的WritePort??函数向串口发送数据后,可调用_sleep??函数使辅助线程休眠一段时间,以便使PLC有充分的时间返回数据;接着再调用CSerialPort类中的ReadPort()函数并从串口读数据,然后再调用_sleep()函数使辅助线程再休眠一定的时间。这样设计后,当进行串口通信时,主线程就能继续完成监控功能和处理其他事务。辅助线程函数的主要代码如下:
  
  UINTSerialPro(void*param)
  
  {
  
  Ccrystal*mdlg=(Ccrystal*)param?
  
  CStringstr;
  
  intflag=1;
  
  //如果初始化串口失败返回
  
  if(!InitPort(“com2”))
  
  {AfxMessageBox(“打开串口2失败”);
  
  return0;
  
  }
  
  //循环读写串口,直到结束
  
  while(flag)
  
  {
  
  //这里把要发送的数据传送给变量str
  
  ……
  
  //向串口写数据
  
  mdlg->serial.WritePort(hport,str);
  
  //让辅助线程休眠100ms
  
  _sleep(100);
  
  //从串口读数据并赋给变量str
  
  str=mdlg->serial.ReadPort(hport);
  
  //这里把从串口得到的数据进行处理
  
  ……
  
  5结束语
  
  运用面向对象方法和多线程技术设计的通用串口通信类CSerialPort类,通过对WindowsAPI函数的封装使串口通信变得简单方便、容易维护。目前,该软件系统已成功地应用于金刚石合成控制系统,并成功解决了RS-232与RS-485两种串口通信的问题。经过几个月的运行表明,该串口通信软件工作稳定,出色地完成了系统的实时监控和显示任务。此外,由于采用了面向对象的方法和模块化设计,该软件的维护和升级十分方便;同时该系统具有很好的移植性,按照不同需求稍微改动一些代码就可以应用于其它控制系统中。
 

《金刚石合成控制系统中多串口通信技术的设计与实现(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/165448.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。