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

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

ReadIntervalTimeout:两字符之间最大的延时,当读取串口数据时,一旦两个字符传输的时间差超过该时间,读取函数将返回现有的数据。设置为0表示该参数不起作用。 指定通讯线上两个字符到达的最大时延,以毫秒为单位。在ReadFile操作期间,时间周期从第一个字符接收到算起。如果收到的两个字符之间的间隔超过该值,ReadFile操作完毕并返回所有缓冲数据。如果ReadIntervalTimeout为0,则该值不起作用。

如果值为MAXDWORD,   并且ReadTotalTimeoutConstant和ReadTotalTimeoutMultiplier两个值都为0,   则指定读操作携带已经收到的字符立即返回,即使没有收到任何字符。

ReadTotalTimeoutMultiplier:读取每字符间的超时。 指定以毫秒为单位的累积值。用于计算读操作时的超时总数。对于每次读操作,该值与所要读的字节数相乘。

ReadTotalTimeoutConstant:一次读取串口数据的固定超时。所以在一次读取串口的操作中,其超时为 ReadTotalTimeoutMultiplier乘以读取的字节数再加上 ReadTotalTimeoutConstant。将ReadIntervalTimeout设置为MAXDWORD,并将 ReadTotalTimeoutMultiplier 和ReadTotalTimeoutConstant设置为0,表示读取操作将立即返回存放在输入缓冲区的字符。

WriteTotalTimeoutMultiplier:写入每字符间的超时。

WriteTotalTimeoutConstant:一次写入串口数据的固定超时。所以在一次写入串口的操作中,其超时为WriteTotalTimeoutMultiplier乘以写入的字节数再加上 WriteTotalTimeoutConstant。 
******************************************************************************************************************
一般都会做以下设置: 
TimeOuts.ReadIntervalTimeout=MAXDWORD; // 把间隔超时设为最大,把总超时设为0将导致ReadFile立即返回并完成操作 
TimeOuts.ReadTotalTimeoutMultiplier=0; //读时间系数 
TimeOuts.ReadTotalTimeoutConstant=0; //读时间常量 
TimeOuts.WriteTotalTimeoutMultiplier=50; //总超时=时间系数*要求读/写的字符数+时间常量 
TimeOuts.WriteTotalTimeoutConstant=2000; //设置写超时以指定WriteComm成员函数中的

COMMTIMEOUTS   comTimeOut;//   COMMTIMEOUTS对象    
comTimeOut.ReadIntervalTimeout   =   3;//   接收时,两字符间最大的时延

comTimeOut.ReadTotalTimeoutMultiplier   =   3;//   读取每字节的超时

//   读串口数据的固定超时 
//   总超时   =   ReadTotalTimeoutMultiplier   *   字节数   +   ReadTotalTimeoutConstant 
comTimeOut.ReadTotalTimeoutConstant   =   2;

comTimeOut.WriteTotalTimeoutMultiplier   =   3;//   写每字节的超时

comTimeOut.WriteTotalTimeoutConstant   =   2;//   写串口数据的固定超时

SetCommTimeouts(handlePort_,&comTimeOut); //   将超时参数写入设备控制

本文转载自:https://blog.csdn.net/wangshubo1989/article/details/47746617

串口之COMMTIMEOUTS结构体相关推荐

  1. 串口之COMMTIMEOUTS结构体详解

    在用ReadFile和WriteFile读写串行口时,需要考虑超时问题.如果在指定的时间内没有读出或写入指定数量的字符,那么ReadFile或WriteFile的操作就会结束.要查询当前的超时设置应调 ...

  2. 串口编程DCB结构体参数配置详细说明

    序号 字段 释义 1 DWORD DCBlength.: sizeof(DCB) 2 DWORD BaudRate; current baud rale指定当前的波特率 3 DWORD fBinary ...

  3. 串口流控制DCB结构体解析及设置

    一.串口通信结构体意义解析: typedef struct _DCB { DWORD DCBlength; DWORD BaudRate; //波特率 DWORD fBinary :1; DWORD ...

  4. 串口之DCB结构体详解

    DCB结构详细说明: typedef struct _DCB { DWORD DCBlength; DWORD BaudRate; DWORD fBinary: 1; DWORD fParity: 1 ...

  5. 串口之OVERLAPPED结构体详解

    typedef struct _OVERLAPPED {  DWORD Internal;  DWORD InternalHigh;  DWORD Offset;  DWORD OffsetHigh; ...

  6. Linux串口通信之termios结构体

    转 termios结构体的详细设置 2012年08月20日 23:42:47 阅读数:5210 termios结构体内容: 查看全文 http://www.taodudu.cc/news/show-4 ...

  7. STM32(HAL库)模拟车库进出系统—按键/结构体数组

    目录 一.情况说明 二.Cube_MX配置设置 1.首先查看电路原理图: 2.配置Cube_MX: 三.代码详情 1.按键消抖: 2.串口通信及结构体数组储存 一.情况说明 本次实验代码只有重要部分, ...

  8. 串口初始化结构体和固件库讲解

    串口初始化结构体和固件库讲解 常用的6个函数,结构体: USART 初始化结构体(USART_InitTypeDef) USART 时钟初始化结构体(USART_ClockInitTypeDef) 串 ...

  9. STM32串口的使用(原理、结构体、库函数、串口发送字符(串)、重定向printf串口发送、串口中断接收控制灯)

    参考:串口的结构体 重定向printf串口发送stm32等博文 作者:点灯小哥 发布时间: 2021-03-06 21:46:33 网址:https://blog.csdn.net/weixin_46 ...

  10. c++串口配置及DCB结构体

    typedef struct _DCB { DWORD DCBlength; DWORD BaudRate; //波特率设置 DWORD fBinary :1; //是否允许二进制模式 DWORD f ...

最新文章

  1. JS 关闭window.open的窗体,并刷新父页面
  2. json.dumps()和json.loads()
  3. P2024 食物链 (补集)
  4. BZOJ2647 : [Neerc2011]Journey
  5. 198道K8sDocker面试真题大汇总,全网最全八股!
  6. bootstrap样式
  7. c语言编写pdf,编写并运行C语言程序.pdf
  8. 狗窝里的小日子- 6 ...
  9. HP DVD-ROM TS-L663M ATA Devices
  10. LeetCode刷题(7)
  11. Linux下的MySQL主主复制
  12. 2019 蓝桥杯省赛 A 组模拟赛(一)阶乘位数
  13. vue 父刷新子_vue.js从父级中更新子组件数据
  14. matlab polyfit次数上限_新年重磅福利!全国21座城市酒店、民宿不限次数免费住!1000+景区免费玩!...
  15. bat生成exe总结
  16. asp获取用户坐标,通过微信公众号的js-sdk功能实现获取用户地址坐标
  17. js实现下载xls文件
  18. 此IP地址不允许调用接口,如有需要请登录微信支付商户平台更改配置
  19. www.51zzl.com
  20. 健身教程APP开发解决方案

热门文章

  1. 互评成绩 c语言,1077 互评成绩计算 (C语言)
  2. oracle判断字符串以什么开头_sql语句判断字符串以什么什么开头
  3. centos7使用kubeadm部署k8s集群(使用containerd做运行时)
  4. 自动售货机支付服务器开发,自动售货机是如何实现移动支付的?
  5. 万年历c语言 输出单月,求帮忙差错,打印万年历,输入某年某月,打印该月日历...
  6. oracle必须配置哪个参数,oracle – 此操作必须将ORA-02069 global_names参数设置为TRUE...
  7. python3基础题目 100例_Python3.x 基础练习题100例(51-60)
  8. 大疆水弹机器人_现身央视的大疆机甲大师 S1 备受瞩目的教育机器人圆了儿时机甲梦...
  9. 安卓手机反应慢又卡怎么办_安卓手机出现卡顿反应慢的具体处理方法
  10. JAVA基础(2/17)-基本语法_数据类型