深入浅出VC++串口编程之基于Win32 API
2008-10-09 19:26:55 来源:WEB开发网以下程序将串口设置为:波特率为9600,数据位数为7位,停止位为2 位,偶校验,接收缓冲区和发送缓冲区大小均为1024个字节,最后用PurgeComm函数终止所有的后台读写操作并清空接收缓冲区和发送缓冲区:
DCB dcb;
dcb.BaudRate = 9600; //波特率为9600
dcb.ByteSize = 7; //数据位数为7位
dcb.Parity = EVENPARITY; //偶校验
dcb.StopBits = 2; //两个停止位
dcb.fBinary = TRUE;
dcb.fParity = TRUE;
if (!SetCommState(hCom, &dcb))
{
MessageBox("串口设置出错!");
}
SetupComm(hCom, 1024, 1024);
PurgeComm(hCom, PURCE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
超时设置
超时设置是通过改变COMMTIMEOUTS结构体的成员变量值来实现的,COMMTIMEOUTS的原型为:
typedef struct _COMMTIMEOUTS
{
DWORD ReadIntervalTimeout; //定义两个字符到达的最大时间间隔,单位:毫秒
//当读取完一个字符后,超过了ReadIntervalTimeout,仍未读取到下一个字符,就会
//发生超时
DWORD ReadTotalTimeoutMultiplier;
DWORD ReadTotalTimeoutConstant;
//其中各时间所满足的关系如下:
//ReadTotalTimeout = ReadTotalTimeOutMultiplier* BytesToRead + ReadTotalTimeoutConstant
DWORD WriteTotalTimeoutMultiplier;
DWORD WriteTotalTimeoutConstant;
} COMMTIMEOUTS, *LPCOMMTIMEOUTS;
设置超时的函数为SetCommTimeouts,其原型中接收COMMTIMEOUTS的指针为参数:
BOOL SetCommTimeouts(
HANDLE hFile, // handle to communications device
LPCOMMTIMEOUTS lpCommTimeouts // pointer to comm time-out structure
);
更多精彩
赞助商链接