串口超时参数设置

lixingkai2 2009-06-20 03:04:32
Type COMMTIMEOUTS '串口超时参数设置
ReadIntervalTimeout As Long '以毫秒为单位指定通信线上两个字符到达之间的最大时间。
ReadTotalTimeoutMultiplier As Long '以毫秒为单位指定一个乘数,该乘数用来计算读操作的总限时时间。每个
'读操作的总限时时间等于读操作所需的字节数与该值的乘积。
ReadTotalTimeoutConstant As Long '以毫秒为单位指定一个常数,用于计算读操作的总限时时间。每个操作的
'&总限时时间等于ReadTotalTimeoutMultiplier成员乘以读操作所需字节数再加上该值的和
WriteTotalTimeoutMultiplier As Long '以毫秒为单位指定一个乘数,该乘数用来计算写操作的总限时时间。
WriteTotalTimeoutConstant As Long '以毫秒为单位指定一个常数,用于计算写操作的总限时时间。
End Type

Dim CtimeOut As COMMTIMEOUTS

CtimeOut.ReadIntervalTimeout = 20
CtimeOut.ReadTotalTimeoutConstant = 1
CtimeOut.ReadTotalTimeoutMultiplier = 1
CtimeOut.WriteTotalTimeoutConstant = 10
CtimeOut.WriteTotalTimeoutMultiplier = 1
retval = SetCommTimeouts(ComNum, CtimeOut) '设置通信超时参数
不是这时间计算不是很懂,如上所述那么比如读8个字节需要多少时间,写8个字节需要多少时间呢?
  请指点!!!
...全文
222 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixingkai2 2009-06-22
  • 打赏
  • 举报
回复
嗯,好象有点懂了,正常情况数据传输时间按设置的波特率来计算.如超时的话再按上面的结构来计算.但下面的这个算法对吗?读8个字节如超过下面
CtimeOut.ReadTotalTimeoutConstant*8+CtimeOut.ReadTotalTimeoutMultiplier=9ms
就算超进
写8个字节按照以上的的设置超过CtimeOut.WriteTotalTimeoutConstant*8+CtimeOut.WriteTotalTimeoutMultiplier=81就算超时??
贝隆 2009-06-22
  • 打赏
  • 举报
回复
这个结构起通信超时控制作用。
lixingkai2 2009-06-22
  • 打赏
  • 举报
回复
嗯,看过这样的算法.那么COMMTIMEOUTS结构也是控制通讯设备的读与写那么又起到什么作用呢?
zdingyun 2009-06-20
  • 打赏
  • 举报
回复
LZ:读取8字节数据(实际是串口传输时间)与串口的波特率设置有很大关系,假如波特率设置为9600,按数据位,1停止位,无校验位,1起始位,则每秒可传输960字节,即每字节占1ms略多,那么8字节则大于8ms小于9ms.
lixingkai2 2009-06-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 veron_04 的回复:]
http://download.csdn.net/source/1339593
这是一个用API实现串口通信的代码,里面有关于超时的设置。
[/Quote]

呵呵!想请教的是比如从串口读8个字节数据为例按照以上的的设置读的部总时间是不是CtimeOut.ReadTotalTimeoutConstant*8+CtimeOut.ReadTotalTimeoutMultiplier=9ms
写8个字节按照以上的的设置CtimeOut.WriteTotalTimeoutConstant*8+CtimeOut.WriteTotalTimeoutMultiplier=81?
贝隆 2009-06-20
  • 打赏
  • 举报
回复
http://download.csdn.net/source/1339593
这是一个用API实现串口通信的代码,里面有关于超时的设置。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧