使用Win32创建串口通讯程序
2010-06-29 20:42:40 来源:WEB开发网DWORD BaudRate :
波特率 (默认 = 9600)
BYTE StopBits :
0,1,2 = 1, 1.5, 2 (默认 = 0)
BYTE Parity :
0-4= 无, 奇, 偶, 标志, 空格 (默认 = 0)
BYTE ByteSize :
数据位, 4-8 (默认 = 8)
对于典型的通讯,建议程序员使用默认值。图3所示,Watch对话框显示了典型通讯使用的默认值。
图3:串口配置
保存配置
下一步是将已经修改的配置保存到设备控制中。调用SetCommState API函数保存配置。SetCommState函数设备控制块(DCB结构)配置通讯设备。该函数重新初始化所有的硬件控制设定,但不清空输入输出队列。代码如下所示:
if (SetCommState(handlePort_,&config_) == 0)
{
AfxMessageBox("Set configuration port has problem.");
return FALSE;
}
设置通讯超时
开启端口的最后一步是通过使用COMMTIMEOUTS数据结构和调用SetCommTimeouts函数进行通讯超时设置。如下代码所示:
// COMMTIMEOUTS对象
COMMTIMEOUTS comTimeOut;
// 接收时,两字符间最大的时延
comTimeOut.ReadIntervalTimeout = 3;
// 读取每字节的超时
comTimeOut.ReadTotalTimeoutMultiplier = 3;
// 读串口数据的固定超时
// 总超时 = ReadTotalTimeoutMultiplier * 字节数 + ReadTotalTimeoutConstant
comTimeOut.ReadTotalTimeoutConstant = 2;
// 写每字节的超时
comTimeOut.WriteTotalTimeoutMultiplier = 3;
// 写串口数据的固定超时
comTimeOut.WriteTotalTimeoutConstant = 2;
// 将超时参数写入设备控制
SetCommTimeouts(handlePort_,&comTimeOut);
更多精彩
赞助商链接