下面介绍的程序主要完成了含多串口的上位机监控程序所涉及到的无阻塞通信后台运行、数据
的实时接收、处理和显示等功能。
2
设置站点属性
2. 1
设定各站点处理数据的参数
虽然之前准备了很多串口,但未必都是作为数据通信之用,
所以要求对每个站点占用的串口,采用的通信方式,以及下位机
采集数据需要用到的参数进行设置。如图
1
。
2. 2
配置串口并确定其可用
CommConfigDialog
是弹出系统内置串口设置对话框的
API
,我们利用其在设备管理器中设置串口参数对话框。使用此
API
时不用先打开端口,它并不针对一个已打开的端口,而仅
仅是把
DCB
的内容填写到对话框中,当按确定后把输入的结
果存回到
DCB
数据结构中。本文用到该函数,除了要完成以上的功能外,还增加了检验该串口是
图
1
站点通信属性设置
否存在,是否被占用的功能。如图
2
。具体实现代码如下:
void CSerialComm::CommConfig(CString strPort)
{
…………………
HANDLE h_CommDev;//2005-5-18
h_CommDev=CreateFile(sCommName, GENERIC_READ|GENERIC_WRITE,0,
NULL,OPEN_EXISTING,0,NULL);
if(h_CommDev!=(HANDLE)-1)
{
DWORD dwSize; COMMCONFIG sCommConfig;
dwSize=sizeof(COMMCONFIG);
GetCommConfig(h_CommDev,&sCommConfig,&dwSize);
sCommConfig.dcb.BaudRate
=lpApp->GetProfileInt(sCommName,"BaudRat