WEB开发网
开发学院软件开发VC Win32串口编程 阅读

Win32串口编程

 2007-03-17 22:00:53 来源:WEB开发网   
核心提示: 要查询当前的超时设置应调用GetCommTimeouts函数,该函数会填充一个COMMTIMEOUTS结构,Win32串口编程(4),调用SetCommTimeouts可以用某一个COMMTIMEOUTS结构的内容来设置超时,读写串口的超时有两种:间隔超时和总超时,如果读间隔超时被设置成M

要查询当前的超时设置应调用GetCommTimeouts函数,该函数会填充一个COMMTIMEOUTS结构。调用SetCommTimeouts可以用某一个COMMTIMEOUTS结构的内容来设置超时。

读写串口的超时有两种:间隔超时和总超时。间隔超时是指在接收时两个字符之间的最大时延。总超时是指读写操作总共花费的最大时间。写操作只支持总超时,而读操作两种超时均支持。用COMMTIMEOUTS结构可以规定读写操作的超时。

COMMTIMEOUTS结构的定义为:typedef struct _COMMTIMEOUTS { 
  DWORD ReadIntervalTimeout; //读间隔超时
  DWORD ReadTotalTimeoutMultiplier; //读时间系数
  DWORD ReadTotalTimeoutConstant; //读时间常量
  DWORD WriteTotalTimeoutMultiplier; // 写时间系数
  DWORD WriteTotalTimeoutConstant; //写时间常量
} COMMTIMEOUTS,*LPCOMMTIMEOUTS;
COMMTIMEOUTS结构的成员都以毫秒为单位。总超时的计算公式是:

总超时=时间系数×要求读/写的字符数+时间常量

例如,要读入10个字符,那么读操作的总超时的计算公式为:

读总超时=ReadTotalTimeoutMultiplier×10+ReadTotalTimeoutConstant

可以看出:间隔超时和总超时的设置是不相关的,这可以方便通信程序灵活地设置各种超时。

如果所有写超时参数均为0,那么就不使用写超时。如果ReadIntervalTimeout为0,那么就不使用读间隔超时。如果ReadTotalTimeoutMultiplier 和 ReadTotalTimeoutConstant 都为0,则不使用读总超时。如果读间隔超时被设置成MAXDWORD并且读时间系数和读时间常量都为0,那么在读一次输入缓冲区的内容后读操作就立即返回,而不管是否读入了要求的字符。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Win 串口 编程

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