Win32串口编程
2007-03-17 22:00:53 来源:WEB开发网在用重叠方式读写串口时,虽然ReadFile和WriteFile在完成操作以前就可能返回,但超时仍然是起作用的。在这种情况下,超时规定的是操作的完成时间,而不是ReadFile和WriteFile的返回时间。
配置串口的示例代码: SetupComm(hCom,1024,1024); //输入缓冲区和输出缓冲区的大小都是1024
在读写串口之前,还要用PurgeComm()函数清空缓冲区,该函数原型:
COMMTIMEOUTS TimeOuts;
//设定读超时
TimeOuts.ReadIntervalTimeout=1000;
TimeOuts.ReadTotalTimeoutMultiplier=500;
TimeOuts.ReadTotalTimeoutConstant=5000;
//设定写超时
TimeOuts.WriteTotalTimeoutMultiplier=500;
TimeOuts.WriteTotalTimeoutConstant=2000;
SetCommTimeouts(hCom,&TimeOuts); //设置超时
DCB dcb;
GetCommState(hCom,&dcb);
dcb.BaudRate=9600; //波特率为9600
dcb.ByteSize=8; //每个字节有8位
dcb.Parity=NOPARITY; //无奇偶校验位
dcb.StopBits=TWOSTOPBITS; //两个停止位
SetCommState(hCom,&dcb);
PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR);BOOL PurgeComm(
参数dwFlags指定要完成的操作,可以是下列值的组合:
HANDLE hFile, //串口句柄
DWORD dwFlags // 需要完成的操作
); PURGE_TXABORT 中断所有写操作并立即返回,即使写操作还没有完成。
(3)、读写串口
PURGE_RXABORT 中断所有读操作并立即返回,即使读操作还没有完成。
PURGE_TXCLEAR 清除输出缓冲区
PURGE_RXCLEAR 清除输入缓冲区
我们使用ReadFile和WriteFile读写串口,下面是两个函数的声明:
更多精彩
赞助商链接