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

原网址:https://www.cnblogs.com/visionfeng/p/5614066.html

COMMTIMEOUTS:COMMTIMEOUTS主要用于串口超时参数设置。COMMTIMEOUTS结构如下:

typedef struct _COMMTIMEOUTS { 
DWORD ReadIntervalTimeout; 
DWORD ReadTotalTimeoutMultiplier; 
DWORD ReadTotalTimeoutConstant; 
DWORD WriteTotalTimeoutMultiplier; 
DWORD WriteTotalTimeoutConstant; 
} COMMTIMEOUTS,*LPCOMMTIMEOUTS;

间隔超时=ReadIntervalTimeout
总超时   =   ReadTotalTimeoutMultiplier   * 字节数   +   ReadTotalTimeoutConstant

串口读取事件分为两个阶段(我以Win32 API函数ReadFile读取串口过程来说明一下)
第一个阶段是:串口执行到ReadFile()函数时,串口还没有开始传输数据,所以串口缓冲区的第一个字节是没有装数据的,这时候总超时起作用,如果在总超时时间内没有进行串口数据的传输,ReadFile()函数就返回,当然 没有读取到任何数据。而且,间隔超时并没有起作用。
第二阶段:假设总超时为20秒,程序运行到ReadFile(),总超时开始从0 计时,如果在计时到达10秒时,串口开始了数据的传输,那么从接收的第一个字节开始,间隔超时就开始计时,假如间隔超时为1ms,那么在读取完第一个字节后,串口开始等待1ms,如果1ms之内接收到了第二个字节,就读取第二个字节,间隔超时重置为0并计时,等待第三个字节的到来,如果第三个字节到来的时间超过了1ms,那么ReadFile()函数立即返回,这时候总超时计时是没到20秒的。如果在20秒总计时时间结束之前,所有的数据都遵守数据间隔为1ms的约定并陆陆续续的到达串口缓冲区,那么就成功进行了一次串口传输和读取;如果20秒总计时时间到,串口还陆陆续续的有数据到达,即使遵守字节间隔为1ms的约定,ReadFile()函数也会立即返回,这时候总超时就起作用了。
总结起来,总超时在两种情况下起作用
第一:串口没进行数据传输,等待总超时时间那么长ReadFile()才返回。非正常数据传输
第二:数据太长,总超时设置太短,数据还没读取完就返回了。读取的数据是不全的
间隔超时触发是有条件的
第一:在总超时时间内。
第二:串口进行了数据的传输。
成功的进行一次串口数据的传输和读取,只有总超时和间隔超时相互参与配合才能完成

(SAW:Game Over!)

串口通讯超时的设置与含义(COMMTIMEOUTS)相关推荐

  1. 串口通讯编程一日通3(COMMTIMEOUTS DCB整理)

    上一篇看了Overlapped IO模型后,接下来看剩下两个重要结构:  2.COMMTIMEOUTS结构 超时设置 COMMTIMEOUTS:COMMTIMEOUTS主要用于串口超时参数设置.COM ...

  2. STM32入门教程——串口通讯

    目录 1.认识串口 2.stm32串口介绍 2.1 查询方式 2.1 中断方式 2.2 DMA方式 3.使用stm32串口实现printf 串口作为嵌入式设备最常用的外设之一,被广泛的应用.本文介绍S ...

  3. 串口 通讯 顶尖电子秤_顶尖通讯秤设置(os2 PS1)

    相关视频教程 顶尖OS2系列通讯秤连接与使用 顶尖OS2X com口连接(老用户) ③分别连接好电子称的电源线和串口线,如若电脑/收银机没有串口,建议使用转接头连接. ④打开文件夹V1.009,打开P ...

  4. STC15W204S串口通讯,设置自动热加载程序代码(自动下载代码)

    stc15w204s体积非常的小,只有8个引脚,非常的迷你,它就是15系列的缩水版,引脚好似从芯片中间横腰切断了一样,定义排序和完全版本是相同的. 如此迷你,对我这种强迫症的人来说就是一个福音啊,网上 ...

  5. 用计算机设置仪表通讯地址,称重传感器配套仪表串口通讯故障诊断四步骤

    原标题:称重传感器配套仪表串口通讯故障诊断四步骤 当前计算机技术的应用越来越广泛,常用称重传感器配套仪表的操作功能正逐渐向计算机端转移,串口通讯作为仪表和计算机信息互通的常用方式,得到了越来越多的运用 ...

  6. pc串口卡和plc怎么接线_想用电脑的串口通过CP340和PLC通讯应该怎么设置?-工业支持中心-西门子中国...

    pc和plc通过串口通讯的话,就跟set pg/pc 无关了 你需要自己在plc和plc都要编程来实现通讯 回答者: 一天到晚游泳的猪 - 中级工程师&nbsp&nbsp第10级 20 ...

  7. linux串口通讯延时,linux下串口通讯参数设置

    6.7.2 设置串口通信参数 串口通信参数指的是波特率.数据位.奇偶校验位和停止位.对串口实现控制的时候同样要用到termio结构体.下面将结合具体的代码说明如何设置这些参数. 1.波特率设置 获得端 ...

  8. 串口通讯编程一日通1(整合资料) .

    本文以VC++为平台进行串口通信编程 串口通讯在VC++下实现方式有很多,控件自然是最简单话的方式了,但由于控件只支持对话框程序,有些场合又不需要对话框,所以用Windows API实现是比较好的方式 ...

  9. c#调api串口通讯

    c#调api串口通讯 原文:c#调api串口通讯 在调试ICU通信设备的时候,由于串口通信老出现故障,所以就怀疑CF实现的SerialPort类是否有问题,所以最后决定用纯API函数实现串口读写. 先 ...

最新文章

  1. CentOS安装crontab
  2. 动态路由协议RIP的基本原理与配置
  3. peewee flask pwiz 中使用模型 过一段时间报错 peewee.InterfaceError: (0, '') 的解决方式
  4. IIS7下 301重定向 添加WWW
  5. 游戏服务器出现问题怎么维护权益,游戏服务器出问题怎么解决
  6. Jmeter===Jmeter中使用CSV Data Set Config参数化不重复数据执行N遍(转)
  7. 不想再被鄙视?那就看进来! 一文搞懂 Python 2 字符编码
  8. MVC3.0与C#截取字符串
  9. 简要解析红外摄像机技术与市场
  10. ios首次加载web_iOS预加载Web页面方案
  11. 思科CCNP培训日记全接触
  12. 【记录贴】Windows连接L2TP
  13. 软路由硬件, 研究了一圈还是J1900 , i211网卡又如何
  14. Mobile移动5G通信技术详解
  15. 别人的域名到期后可以抢注吗
  16. android sms 接收短信,Android SMS 短信操作
  17. 小鸟 java_java 飞翔小鸟源码
  18. css实现人走路效果,如何使用纯CSS实现一个人独自行走的动画效果(附源码)
  19. C语言数据结构 (清华大学出版社【严蔚敏版】参考)
  20. 外置USB供电与内置锂电池供电自动切换电路

热门文章

  1. server2008中如何关闭internet explorer增强的安全配置
  2. 关于Exchang server 2010 MCITP
  3. 从Windows到Linux
  4. Linux fedora35安装crontab定时任务工具
  5. Linux parted分区工具使用示例
  6. 流式计算框架Storm网站访问来源实时统计及存储到redis代码示例
  7. Java设计模式--使用内部类实现线程安全且懒加载的单例模式
  8. vuetify框架中服务端分页的实现方式(指定初始显示记录数)
  9. 11寸笔记本电脑推荐_3000-20000元高性价比笔记本电脑推荐 含CPU天梯图、显卡天梯图 2020年11月更新...
  10. spring集成redis(ehcache缓存改成redis)