串口通讯超时的设置与含义(COMMTIMEOUTS)
---------------------------------------------
-- 时间: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)相关推荐
- 串口通讯编程一日通3(COMMTIMEOUTS DCB整理)
上一篇看了Overlapped IO模型后,接下来看剩下两个重要结构: 2.COMMTIMEOUTS结构 超时设置 COMMTIMEOUTS:COMMTIMEOUTS主要用于串口超时参数设置.COM ...
- STM32入门教程——串口通讯
目录 1.认识串口 2.stm32串口介绍 2.1 查询方式 2.1 中断方式 2.2 DMA方式 3.使用stm32串口实现printf 串口作为嵌入式设备最常用的外设之一,被广泛的应用.本文介绍S ...
- 串口 通讯 顶尖电子秤_顶尖通讯秤设置(os2 PS1)
相关视频教程 顶尖OS2系列通讯秤连接与使用 顶尖OS2X com口连接(老用户) ③分别连接好电子称的电源线和串口线,如若电脑/收银机没有串口,建议使用转接头连接. ④打开文件夹V1.009,打开P ...
- STC15W204S串口通讯,设置自动热加载程序代码(自动下载代码)
stc15w204s体积非常的小,只有8个引脚,非常的迷你,它就是15系列的缩水版,引脚好似从芯片中间横腰切断了一样,定义排序和完全版本是相同的. 如此迷你,对我这种强迫症的人来说就是一个福音啊,网上 ...
- 用计算机设置仪表通讯地址,称重传感器配套仪表串口通讯故障诊断四步骤
原标题:称重传感器配套仪表串口通讯故障诊断四步骤 当前计算机技术的应用越来越广泛,常用称重传感器配套仪表的操作功能正逐渐向计算机端转移,串口通讯作为仪表和计算机信息互通的常用方式,得到了越来越多的运用 ...
- pc串口卡和plc怎么接线_想用电脑的串口通过CP340和PLC通讯应该怎么设置?-工业支持中心-西门子中国...
pc和plc通过串口通讯的话,就跟set pg/pc 无关了 你需要自己在plc和plc都要编程来实现通讯 回答者: 一天到晚游泳的猪 - 中级工程师  第10级 20 ...
- linux串口通讯延时,linux下串口通讯参数设置
6.7.2 设置串口通信参数 串口通信参数指的是波特率.数据位.奇偶校验位和停止位.对串口实现控制的时候同样要用到termio结构体.下面将结合具体的代码说明如何设置这些参数. 1.波特率设置 获得端 ...
- 串口通讯编程一日通1(整合资料) .
本文以VC++为平台进行串口通信编程 串口通讯在VC++下实现方式有很多,控件自然是最简单话的方式了,但由于控件只支持对话框程序,有些场合又不需要对话框,所以用Windows API实现是比较好的方式 ...
- c#调api串口通讯
c#调api串口通讯 原文:c#调api串口通讯 在调试ICU通信设备的时候,由于串口通信老出现故障,所以就怀疑CF实现的SerialPort类是否有问题,所以最后决定用纯API函数实现串口读写. 先 ...
最新文章
- CentOS安装crontab
- 动态路由协议RIP的基本原理与配置
- peewee flask pwiz 中使用模型 过一段时间报错 peewee.InterfaceError: (0, '') 的解决方式
- IIS7下 301重定向 添加WWW
- 游戏服务器出现问题怎么维护权益,游戏服务器出问题怎么解决
- Jmeter===Jmeter中使用CSV Data Set Config参数化不重复数据执行N遍(转)
- 不想再被鄙视?那就看进来! 一文搞懂 Python 2 字符编码
- MVC3.0与C#截取字符串
- 简要解析红外摄像机技术与市场
- ios首次加载web_iOS预加载Web页面方案
- 思科CCNP培训日记全接触
- 【记录贴】Windows连接L2TP
- 软路由硬件, 研究了一圈还是J1900 , i211网卡又如何
- Mobile移动5G通信技术详解
- 别人的域名到期后可以抢注吗
- android sms 接收短信,Android SMS 短信操作
- 小鸟 java_java 飞翔小鸟源码
- css实现人走路效果,如何使用纯CSS实现一个人独自行走的动画效果(附源码)
- C语言数据结构 (清华大学出版社【严蔚敏版】参考)
- 外置USB供电与内置锂电池供电自动切换电路
热门文章
- server2008中如何关闭internet explorer增强的安全配置
- 关于Exchang server 2010 MCITP
- 从Windows到Linux
- Linux fedora35安装crontab定时任务工具
- Linux parted分区工具使用示例
- 流式计算框架Storm网站访问来源实时统计及存储到redis代码示例
- Java设计模式--使用内部类实现线程安全且懒加载的单例模式
- vuetify框架中服务端分页的实现方式(指定初始显示记录数)
- 11寸笔记本电脑推荐_3000-20000元高性价比笔记本电脑推荐 含CPU天梯图、显卡天梯图 2020年11月更新...
- spring集成redis(ehcache缓存改成redis)