用VC进行试验数据的采集
?牐犜谖⑷砉就瞥龅腣isual C++中,即可利用MFC CFile类来实现串行通讯。首先利用VC++中的向导建立一个支持MFC类的工作台工程,并在XXX.cpp(XXX为工程名)文件中函数int _tmain(int argc,TCHAR* argv[],TCHAR* envp[])中命令行:
?牐燙String strHello;
?牐爏trHello.LoadString(IDS_HELLO);?牔?
?牐燾out <<(LPCTSTR)strHello << endl;
?牐牶竺婕尤肴缦麓爰纯墒迪执型ㄑ丁?
?牐燙File file;
?牐燙FileException e;
?牐?//以读写方式打开串口
?牐爁ile.Open(“COM1”,CFile::modeReadWrite,&e);?牔?
?牐?//配置串口
?牐燚CB dcb;??
?牐?::GetCommState( (HANDLE)file.m_hFile,&dcb); ?牔?
?牐燿cb.BaudRate=4800;//波特率
?牐燿cb.ByteSize=7;//数据位
?牐燿cb.StopBits=2;//停止位
?牐燿cb.Parity=2;//奇偶校验位
?牐?::SetCommState((HANDLE)file.m_hFile,&dcb);??
?牐?//数据采集
?牐燾har m_ReadBuff[2];?牔?
?牐燾har m_WriteBuff[2];?牔?
?牐爉_WriteBuff[0]= 'a';
?牐爄nt dbyte;
?牐?//读串口数据
?牐燿byte=file.Read (&m_ReadBuff,1);?牔?
?牐?//写串口数据
?牐燿byte=file.Write (&m_WriteBuff,1);?牔?
?牐犜诮型ㄑ妒菥?理后可以利用函数printf或cout实现类似于DOS状态下的输出格式。这对长期使用DOS应用程序的工程人员也较易接受。
?牐犖烁玫乜刂贫丝诳梢岳媒峁笴OMMTIMEOUTS打开或关闭超时功能,具体代码如下:
?牐?//设置超时功能
?牐燙OMMTIMEOUTS cto;
?牐?::GetCommTimeouts((HANDLE)file.m_hFile,&cto);
?牐燾to.ReadIntervalTimeout=0;??
?牐燾to.ReadTotalTimeoutMultiplier=20;
?牐燾to.ReadTotalTimeoutConstant =20;
?牐燾to.WriteTotalTimeoutMultiplier=0;??
?牐燾to.WriteTotalTimeoutConstant =0;
?牐?::SetCommTimeouts ((HANDLE)file.m_hFile,&cto);?牔?
?牐犃硗猓梢越杉氖匝槭萃ü鼵file类存储在磁盘文件中留待进一步数据处理。
?牐牪捎蒙厦娣椒ǎ肕FC CFile类进行串行通讯,不仅代码简单、编程量小而且原有DOS下的代码容易移植,稍加改进即可应用于在线监测、自动化控制等各个方面,对科研、生产有着广泛的实用价值。