WEB开发网
开发学院软件开发VC 深入浅出VC++串口编程之基于Win32 API 阅读

深入浅出VC++串口编程之基于Win32 API

 2008-10-09 19:26:55 来源:WEB开发网   
核心提示: 以下程序将串口设置为:波特率为9600,数据位数为7位,深入浅出VC++串口编程之基于Win32 API(3),停止位为2 位,偶校验,超过了ReadIntervalTimeout,仍未读取到下一个字符,接收缓冲区和发送缓冲区大小均为1024个字节,最后用PurgeComm函数终止所有的后

以下程序将串口设置为:波特率为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
);

上一页  1 2 3 4  下一页

Tags:深入浅出 VC 串口

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接