在SetCommTimeouts和GetCommTimeouts功能中使用COMMTIMEOUTS结构来设置和查询通讯设备的超时参数。参数确定设备上的ReadFile,WriteFile,ReadFileEx和WriteFileEx操作的行为。
typedef struct _COMMTIMEOUTS { //商标局
DWORD ReadIntervalTimeout;
DWORD ReadTotalTimeoutMultiplier;
DWORD ReadTotalTimeoutConstant;
DWORD WriteTotalTimeoutMultiplier;
DWORD WriteTotalTimeoutConstant;
} COMMTIMEOUTS,*LPCOMMTIMEOUTS;
会员
ReadIntervalTimeout
指定在通信线路上两个字符到达之间允许经过的最长时间(以毫秒为单位)。在ReadFile操作期间,时间段从接收到第一个字符开始。如果任意两个字符到达之间的间隔超过此量,则ReadFile操作完成,并返回任何缓冲数据。值为零表示不使用间隔超时。
MAXDWORD的值与ReadTotalTimeoutConstant和ReadTotalTimeoutMultiplier成员的零值组合指定即使没有接收到字符,读取操作将立即返回已接收到的字符。
ReadTotalTimeoutMultiplier
指定用于计算读取操作的总超时周期的乘数(以毫秒为单位)。对于每个读取操作,该值乘以要读取的所请求的字节数。
ReadTotalTimeoutConstant
指定用于计算读取操作的总超时周期的常数(以毫秒为单位)。对于每个读取操作,该值将添加到ReadTotalTimeoutMultiplier成员和请求的字节数的乘积中。
ReadTotalTimeoutMultiplier和ReadTotalTimeoutConstant成员的值为零表示总计超时不用于读取操作。
WriteTotalTimeoutMultiplier
指定用于计算写入操作的总超时周期的乘数(以毫秒为单位)。对于每个写入操作,该值乘以要写入的字节数。
WriteTotalTimeoutConstant
指定用于计算写入操作的总超时周期的常数(以毫秒为单位)。对于每个写入操作,该值被添加到WriteTotalTimeoutMultiplier成员的乘积和要写入的字节数。
WriteTotalTimeoutMultiplier和WriteTotalTimeoutConstant成员的值为零表示总共超时不用于写入操作。
备注
如果应用程序将ReadIntervalTimeout和ReadTotalTimeoutMultiplier设置为MAXDWORD,并将ReadTotalTimeoutConstant设置为大于零且小于MAXDWORD的值,则会在调用ReadFile函数时发生以下情况之一:
*如果输入缓冲区中有任何字符,ReadFile将立即返回缓冲区中的字符。
*如果输入缓冲区中没有字符,ReadFile等到字符到达,然后立即返回。
*如果ReadTotalTimeoutConstant指定的时间内没有字符到达,则ReadFile超时。
也可以看看
GetCommTimeouts, ReadFile, ReadFileEx, SetCommTimeouts, WriteFile, WriteFileEx