博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
COMMTIMEOUTS主要用于串口超时参数设置
阅读量:6905 次
发布时间:2019-06-27

本文共 2349 字,大约阅读时间需要 7 分钟。

hot3.png

private struct COMMTIMEOUTS

        {
            public int ReadIntervalTimeout;
            public int ReadTotalTimeoutMultiplier;
            public int ReadTotalTimeoutConstant;
            public int WriteTotalTimeoutMultiplier;
            public int WriteTotalTimeoutConstant;
        }

ReadIntervalTimeout:两字符之间最大的延时,当读取串口数据时,一旦两个字符传输的时间差超过该时间,读取函数将返回现有的数据。设置为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对象

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

//   读取每字节的超时

comTimeOut.ReadTotalTimeoutMultiplier   =   3;

//   读串口数据的固定超时

//   总超时   =   ReadTotalTimeoutMultiplier   *   字节数   +   ReadTotalTimeoutConstant
comTimeOut.ReadTotalTimeoutConstant   =   2;

//   写每字节的超时

comTimeOut.WriteTotalTimeoutMultiplier   =   3;

//   写串口数据的固定超时

comTimeOut.WriteTotalTimeoutConstant   =   2;

//   将超时参数写入设备控制

SetCommTimeouts(handlePort_,&comTimeOut);
ReadIntervalTimeout

指定通讯线上两个字符到达的最大时延,以毫秒为单位。在ReadFile操作期间,时间周期从第一个字符接收到算起。如果收到的两个字符之间的间隔超过该值,ReadFile操作完毕并返回所有缓冲数据。如果ReadIntervalTimeout为0,则该值不起作用。

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

ReadTotalTimeoutMultiplier

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

ReadTotalTimeoutConstant  

指定以毫秒为单位的常数。用于计算读操作时的超时总数。对于每次读操作,ReadTotalTimeoutMultiplier与所要读的字节数相乘后与该值相加。

如果ReadTotalTimeoutMultiplier和ReadTotalTimeoutConstant都为0,则在读操作时忽略总超时数。

WriteTotalTimeoutMultiplier  

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

WriteTotalTimeoutConstant

指定以毫秒为单位的常数。用于计算写操作时的超时总数。对于每次写操作,   WriteTotalTimeoutMultiplier与所要写的字节数相乘后与该值相加。

如果   WriteTotalTimeoutMultiplier   和   WriteTotalTimeoutConstant都为0,则在写操作时忽略总超时数。

提示:用户设置通讯超时后,如没有出错,串口已经被打开

转载于:https://my.oschina.net/u/3874841/blog/3000070

你可能感兴趣的文章
vue[源码]生命周期钩子的实现
查看>>
2 KD-Tree的构造与搜索
查看>>
Java POI处理大量数据导入导出
查看>>
(JS基础)DOM:遍历 与 范围
查看>>
MacBook Pro 安装 Windows 10
查看>>
如何Spring Cloud Zuul作为网关的分布式系统中整合Swagger文档在同一个页面上
查看>>
1分钟做出一个可爱鬼畜动图!
查看>>
实现一个炫酷的随机标签排列效果(颜色随机,大小随机,成菱形排列的列表)...
查看>>
flex 布局
查看>>
数字资产交易所开发:平台币快速吸金的背后
查看>>
Java线程安全和锁Synchronized概念
查看>>
mac app开发试玩(续)
查看>>
【译】提高 JavaScript 开发效率的高级 VSCode 扩展!
查看>>
npm script 钩子的使用
查看>>
产品经理爬取《人人都是产品经理》的5万篇文章,学习如何通过数据找到业务推进重点...
查看>>
基于Git生成开发周报或项目版本change log
查看>>
小程序自定义音频组件,带滚动条,IOS循环失效问题
查看>>
junit测试方法执行顺序
查看>>
Swift开发之粒子动画的实现
查看>>
我学Java我傲娇
查看>>