COMMTIMEOUTS
来源:互联网 发布:java wsdl 生成客户端 编辑:程序博客网 时间:2024/05/20 04:31
在用ReadFile和WriteFile读写串行口时,需要考虑超时问题。如果在指定的时间内没有读出或写入指定数量的字符,那么ReadFile或WriteFile的操作就会结束。要查询当前的超时设置应调用GetCommTimeouts函数,该函数会填充一个COMMTIMEOUTS结构。调用SetCommTimeouts可以用某一个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,那么在读一次输入缓冲区中的内容后读操作就立即完成,而不管是否读入了要求的字符。 在用重叠方式读写串行口时,虽然ReadFile和WriteFile在完成操作以前就可能返回,但超时仍然是起作用的。在这种情况下,超时规定的是操作的完成时间,而不是ReadFile和WriteFile的返回时间。
- COMMTIMEOUTS
- COMMTIMEOUTS
- COMMTIMEOUTS
- COMMTIMEOUTS
- COMMTIMEOUTS结构
- COMMTIMEOUTS详解
- COMMTIMEOUTS详解
- COMMTIMEOUTS结构
- COMMTIMEOUTS结构说明
- COMMTIMEOUTS详解(转)
- COMMTIMEOUTS详解(转)
- COMMTIMEOUTS详解(转)
- 串口编程:超时COMMTIMEOUTS结构
- COMMTIMEOUTS详解(读写串口超时)
- 串口编程-读写超时 COMMTIMEOUTS设置
- COMMTIMEOUTS主要用于串口超时参数设置
- 如何设置串口通信中的COMMTIMEOUTS结构?
- 串口编程之二:超时COMMTIMEOUTS结构
- GetCommState 函数
- 超小型C编译器简介——Tiny C Compiler(TCC)
- Eclipse集成NDK开发环境
- fedora下ftp服务器配置
- 如何成功
- COMMTIMEOUTS
- jxl(Java Excel API) 使用方法 【1】
- jxl(Java Excel API) 使用方法 【2】
- USACO / Shaping Regions (矩形分割)
- 数字unicode码
- matlab 批量保存图像的方法
- SQL 获取当前月的最后一天
- extjs curd
- poj 3259 Wormholes