金刚石合成控制系统中多串口通信技术的设计与实现
生成一个对话框类型的程序框架,然后将自己编写的CSerialPort类加入到该工程中,并在主界面类?CCrystal?中添加一个CSerialPort类的成员变量serial。当监控系统开始工作时,可用AfxBeginThread??函数创建辅助线程来管理串口通信,当调用CSerialPort类中的WritePort? ?函数向串口发送数据后,可调用_sleep? ?函数使辅助线程休眠一段时间,以便使PLC有充分的时间返回数据;接着再调用CSerialPort类中的ReadPort()函数并从串口读数据,然后再调用_sleep()函数使辅助线程再休眠一定的时间。这样设计后,当进行串口通信时,主线程就能继续完成监控功能和处理其他事务。辅助线程函数的主要代码如下:
UINT SerialPro(void* param)
{
Ccrystal* mdlg=(Ccrystal*)param?
CString str;
int flag=1;
//如果初始化串口失败返回
if(!InitPort("com2"))
{AfxMessageBox("打开串口2失败");
return 0;
}
//循环读写串口,直到结束
while(flag)
{
//这里把要发送的数据传送给变量str
……
//向串口写数据
mdlg->serial.WritePort(hport,str);
//让辅助线程休眠100ms
_sleep(100);
//从串口读数据并赋给变量str
str=mdlg->serial.ReadPort(hport);
//这里把从串口得到的数据进行处理
……
5 结束语
运用面向对象方法和多线程技术设计的通用串口通信类CSerialPort类,通过对Windows API函数的封装使串口通信变得简单方便、容易维护。目前,该软件系统已成功地应用于金刚石合成控制系统,并成功解决了RS-232与RS-485两种串口通信的问题。经过几个月的运行表明,该串口通信软件工作稳定,出色地完成了系统的实时监控和显示任务。此外,由于采用了面向对象的方法和模块化设计,该软件的维护和升级十分方便;同时该系统具有很好的移植性,按照不同需求稍微改动一些代码就可以应用于其它控制系统中。
- 一种柴油发电机组远程监控平台的实现(09-05)
- 讲述如何实现单片机与触摸屏的通信(02-06)
- 以光速洞察世界(03-13)
- 【技术周刊】通信黑科技之——华为/运营商力挺的NB-IoT(08-28)
- 集崭新的超宽带(UWB)无线通信技术(02-11)
- 车载通信技术在智能交通系统中发挥的作用(07-02)