串口编程-读写超时 COMMTIMEOUTS设置
读写超时是在 调用 ReadFile 和 WriteFile 函数读写串口的时候系统提供的超时机制
typedef struct _COMMTIMEOUTS {DWORD ReadIntervalTimeout; /* Maximum time between read chars. */DWORD ReadTotalTimeoutMultiplier; /* Multiplier of characters. */DWORD ReadTotalTimeoutConstant; /* Constant in milliseconds. */DWORD WriteTotalTimeoutMultiplier; /* Multiplier of characters. */DWORD WriteTotalTimeoutConstant; /* Constant in milliseconds. */
} COMMTIMEOUTS,*LPCOMMTIMEOUTS;
读超时 有两只计算方法
1:(间隔超时)ReadIntervalTimeout 指定了在接收字符间的最大时间,如果超过了这个时间,ReadFile立即返回。
2:(总超时)基于要接收的字符数量
ReadTotalTimeoutMultiplier表示平均读一个字节的时间上限
ReadTotalTimeoutConstant表示读数据总时间常量
读数据总超时:ReadTotalTimeoutConstant +(ReadTotalTimeoutMultiplier*要读的字节数)
读数据超时,两种超时同时有效,当出现任何一种超时时,ReadFile都将返回。
写超时:
WriteTotalTimeoutMultiplier表示平均写一个字节的时间上限
WriteTotalTimeoutConstant表示写数据总超时常量
写数据总超时 :WriteTotalTimeoutConstatn +(WriteTotalTimeoutMultiplier *要写的字节数)
具体超时设置
1: 有读间隔超时、读总超时、写总超时,将COMMTIMEOUTS结构5个成员设置为对应值。
2:没有读间隔超时,有读总超时和写总超时,将RealIntervalTimeou设置为0,其他参数设置为对应值。
3:不管是否有数据要读取,ReadFile立即返回,将RealIntervalTimeout设置为MAX_DWORD,
将ReadTotalTimeoutMultiplier和ReadTotalTimeoutConstant都设置为0
(不立即返回的时候,可以在超时时间内等串口中有新的数据?然后读取,直到超时时间)
4:ReadFile没有超时设置,直到有适当的字符数返回或者错误发生,函数才返回。
将 ReadIntervalTimeout、ReadTotalTimeoutMultiplier、ReadTotalTimeoutConstant都设置为0
5:WriteFile没有超时设置:将WriteTotalTimeoutMultiplier和WriteTotalTimeoutConstant设置为0
转载于:https://www.cnblogs.com/ezhong/archive/2011/08/12/2171452.html
串口编程-读写超时 COMMTIMEOUTS设置相关推荐
- 串口设置波特率linux函数接口,Linux下串口编程之一:基础设置函数
1,串口操作需要的头文件 #include /* 标准输入输出定义 */ #include /* 标准函数库定义 */ #include /* Unix 标准函数定义 */ #include #inc ...
- 串口通讯超时的设置与含义(COMMTIMEOUTS)
--------------------------------------------- -- 时间:2018-12-26 -- 创建人:Ruo_Xiao -- 邮箱:xclsoftware@163 ...
- Linux——Linux系统编程之串口编程总结(串口的初始化、读写操作实践)
目录 0 引言 1 串口编程的流程 1.1 打开串口 1.2 初始化串口 1.2.1 termios结构体 1.2.2 关键函数 1.2.3 初始化串口代码 2 串口的读写测试例程 0 引言 串口大家 ...
- linux 下串口编程VTIME和VMIN的设置
VTIME定义要求等待的时间量(取值不能大于cc_t). VMIN定义了要求等待的最小字节数. options.c_cc[VTIME] = X; //设置从获取到1个字节后开始计时的超时时间 opti ...
- linux 下串口编程VTIME和VMIN的设置(转)
VTIME定义要求等待的时间量(取值不能大于cc_t). VMIN定义了要求等待的最小字节数. options.c_cc[VTIME] = X; //设置从获取到1个字节后开始计时的超时时间 opti ...
- HXU1861系列超高频RFID读写器|读卡器|一体机的串口网口及相关参数设置操作说明与指南
超高频读写器参数设置界面操作 1.打开串口 在打开端口之前,请将读写器与串口.天线正确连接,再接通电源.选择 (1)自动打开可用端口: 读写器地址等于FF时,为广播方式,与该串口连接的读写器均会响应. ...
- Wince C++串口编程
C# 串口操作系列:http://blog.csdn.net/wuyazhe/article/category/695097 在windows程序设计与开发过程中,特别是涉及到开发嵌入式软硬件系统时, ...
- 基于MFC串口编程和曲线图绘制(visual studio2008,Teechart绘图控件)的程序总结
前言 今年刚进入公司按经理的要求为底盘测控机写了一个小小的console.这也是第一次教认真的完成整个程序的编写.程序不大,所用技术比较基础也不前卫,属于初级程序员的练手程序(知识的整理和搬运).虽然 ...
- Win32 API串口编程
在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信方便易行,应用广泛. 一般情况下,工控机和各智能仪表通过RS485总线进行通信.RS485的通信方式是半 ...
最新文章
- 摘:C/C++中时间类time.h
- Numpy求均值、中位数、众数的方法
- WinForm中Partial部分类的使用
- blender, 创建多边形面片
- java 冒泡排序_Java冒泡排序详解
- Java二十三种设计模式 之代理(proxy)
- Mysql 索引(学习笔记十二)
- Java-bug记录【1】
- javascript数据结构——栈
- matlab定积分上界求解,定积分问题的数值求解及Matlab实现
- 如何快速实现自定义sql分页?若不会,我便手把手教你【详细】
- 交换机生成树相关实验
- vot toolkit的超详细使用(多图)
- win7计算机属性里面的图标变白,Win7系统桌面图标白边如何解决
- Axure RP Extension for Chrome的安装
- 点击button没有反应
- Node学生管理案例
- 单词快速记忆day40
- Typora护眼绿和夜色两种背景
- 福神喜神贵神财神方位查询