串行通讯如何设置超时参数
来源:互联网 发布:linux nic link 编辑:程序博客网 时间:2024/05/17 06:53
串行通讯如何设置超时参数
COMMTIMEOUTS:COMMTIMEOUTS主要用于串口超时参数设置。COMMTIMEOUTS结构如下:
typedef struct _COMMTIMEOUTS {
DWORD ReadIntervalTimeout;
DWORD ReadTotalTimeoutMultiplier;
DWORD ReadTotalTimeoutConstant;
DWORD WriteTotalTimeoutMultiplier;
DWORD WriteTotalTimeoutConstant;
} COMMTIMEOUTS,*LPCOMMTIMEOUTS;
ReadIntervalTimeout:两字符之间最大的延时,当读取串口数据时,一旦两个字符传输的时间差超过该时间,读取函数将返回现有的数据。设置为0表示该参数不起作用。指定时间最大值(毫秒),充许接收的2个字节间有时间差。也就 是说,刚接收了一个字节后,等了ReadIntervalTimeout时间后还没有新的字节到达,就 认为本次读串口操作结束(后面的字节等下一次读取操作来处理)。即使你想读8个字节,但读第2个字节后,过了ReadIntervalTimeout时间后,第3个字节还没到。实际上就只读了2个字节。
ReadTotalTimeoutMultiplier:指定比例因子(毫秒),实际上是设置读取一个字节和等待下一个字节所需的时间,这样总的超时时间为读取的字节数乘以该值,同样一次读取操作到达这个时间后,也认为本次读操作己经结束。
ReadTotalTimeoutConstant:一次读取串口数据的固定超时。所以在一次读取串口的操作中,其超时为ReadTotalTimeoutMultiplier乘以读取的字节数再加上 ReadTotalTimeoutConstant。将ReadIntervalTimeout设置为MAXDWORD,并将ReadTotalTimeoutMultiplier 和ReadTotalTimeoutConstant设置为0,表示读取操作将立即返回存放在输入缓冲区的字符。可以理解为一个修正时间,实际上就是按ReadTotalTimeoutMultiplier计算出的超时时间再加上该时间才作为整个超时时间。
WriteTotalTimeoutMultiplier:写入每字符间的超时。
WriteTotalTimeoutConstant:一次写入串口数据的固定超时。所以在一次写入串口的操作中,其超时为WriteTotalTimeoutMultiplier乘以写入的字节数再加上 WriteTotalTimeoutConstant。
一般都会做以下设置:
TimeOuts.ReadIntervalTimeout=MAXDWORD;
// 把间隔超时设为最大,把总超时设为0将导致ReadFile立即返回并完成操作
TimeOuts.ReadTotalTimeoutMultiplier=0;
//读时间系数
TimeOuts.ReadTotalTimeoutConstant=0;
//读时间常量
TimeOuts.WriteTotalTimeoutMultiplier=50;
//总超时=时间系数*要求读/写的字符数+时间常量
TimeOuts.WriteTotalTimeoutConstant=2000;
//设置写超时以指定WriteComm成员函数中的
- 串行通讯如何设置超时参数
- 串行通讯如何设置超时参数
- 如何设置超时参数(串行通讯)
- MSComm串行通讯控件设置 串口、波特率等参数方法
- winsock编程如何设置发送与接收超时参数?
- 串行通讯
- 串行通讯
- 串行通讯
- MapReduce设置参数防止超时
- 异步串行通讯和同步串行通讯
- 如何设置mysql 数据库连接超时
- JDBC如何进行超时设置
- JDBC如何进行超时设置
- JDBC如何进行超时设置
- JDBC如何进行超时设置
- 如何设置connect超时时间
- Java串行端口通讯
- 实战串行通讯
- Pinch-to-zoom专利真相:全是媒体误传 苹果压根就没这个专利!
- 多线程之条件变量
- ASP.NET MVC 教程 - 理解MVC应用程执行过程(C#)
- lua时间加减
- 交互系统的构建之(四)手掌与拳头检测加盟TLD
- 串行通讯如何设置超时参数
- lua操作redis
- DataWindow.net应用介绍(一)
- src-nat参数说明、回流原理
- 测试先知和启发式方法
- Android 图像系列: 将本地图片加载到Drawable
- Android 70道面试题汇总
- iOS开发面试题
- HDU 3018 Ant Trip(一笔画问题)