读写超时是在   调用  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设置相关推荐

  1. 串口设置波特率linux函数接口,Linux下串口编程之一:基础设置函数

    1,串口操作需要的头文件 #include /* 标准输入输出定义 */ #include /* 标准函数库定义 */ #include /* Unix 标准函数定义 */ #include #inc ...

  2. 串口通讯超时的设置与含义(COMMTIMEOUTS)

    --------------------------------------------- -- 时间:2018-12-26 -- 创建人:Ruo_Xiao -- 邮箱:xclsoftware@163 ...

  3. Linux——Linux系统编程之串口编程总结(串口的初始化、读写操作实践)

    目录 0 引言 1 串口编程的流程 1.1 打开串口 1.2 初始化串口 1.2.1 termios结构体 1.2.2 关键函数 1.2.3 初始化串口代码 2 串口的读写测试例程 0 引言 串口大家 ...

  4. linux 下串口编程VTIME和VMIN的设置

    VTIME定义要求等待的时间量(取值不能大于cc_t). VMIN定义了要求等待的最小字节数. options.c_cc[VTIME] = X; //设置从获取到1个字节后开始计时的超时时间 opti ...

  5. linux 下串口编程VTIME和VMIN的设置(转)

    VTIME定义要求等待的时间量(取值不能大于cc_t). VMIN定义了要求等待的最小字节数. options.c_cc[VTIME] = X; //设置从获取到1个字节后开始计时的超时时间 opti ...

  6. HXU1861系列超高频RFID读写器|读卡器|一体机的串口网口及相关参数设置操作说明与指南

    超高频读写器参数设置界面操作 1.打开串口 在打开端口之前,请将读写器与串口.天线正确连接,再接通电源.选择 (1)自动打开可用端口: 读写器地址等于FF时,为广播方式,与该串口连接的读写器均会响应. ...

  7. Wince C++串口编程

    C# 串口操作系列:http://blog.csdn.net/wuyazhe/article/category/695097 在windows程序设计与开发过程中,特别是涉及到开发嵌入式软硬件系统时, ...

  8. 基于MFC串口编程和曲线图绘制(visual studio2008,Teechart绘图控件)的程序总结

    前言 今年刚进入公司按经理的要求为底盘测控机写了一个小小的console.这也是第一次教认真的完成整个程序的编写.程序不大,所用技术比较基础也不前卫,属于初级程序员的练手程序(知识的整理和搬运).虽然 ...

  9. Win32 API串口编程

    在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信方便易行,应用广泛. 一般情况下,工控机和各智能仪表通过RS485总线进行通信.RS485的通信方式是半 ...

最新文章

  1. 摘:C/C++中时间类time.h
  2. Numpy求均值、中位数、众数的方法
  3. WinForm中Partial部分类的使用
  4. blender, 创建多边形面片
  5. java 冒泡排序_Java冒泡排序详解
  6. Java二十三种设计模式 之代理(proxy)
  7. Mysql 索引(学习笔记十二)
  8. Java-bug记录【1】
  9. javascript数据结构——栈
  10. matlab定积分上界求解,定积分问题的数值求解及Matlab实现
  11. 如何快速实现自定义sql分页?若不会,我便手把手教你【详细】
  12. 交换机生成树相关实验
  13. vot toolkit的超详细使用(多图)
  14. win7计算机属性里面的图标变白,Win7系统桌面图标白边如何解决
  15. Axure RP Extension for Chrome的安装
  16. 点击button没有反应
  17. Node学生管理案例
  18. 单词快速记忆day40
  19. Typora护眼绿和夜色两种背景
  20. 福神喜神贵神财神方位查询

热门文章

  1. 谷歌母公司投资成绩:4大机构各有侧重,投资2个马斯克项目
  2. 如何把gcc编译工具使用到linux全局
  3. python装饰器简单理解
  4. 学习BeetlSQL总结(2)——查询API,更新API
  5. ECMAScript6变量的解构赋值
  6. BEM 实战之微信个人页面
  7. 如何为 Flask Web 应用配置 Nginx
  8. Matlab绘图高级部分
  9. mysql权限表整理
  10. Python模块包中__init__.py文件的作用