DELPHI SPCOMM 串口超时参数设置

Delphi 7 Spcomm
插拔串口后,不传数据,必需开关软件后才可正常传输问题的解决办法
办法如下:
如果ReadIntervalTimeout设置为相应数值,
ReadTotalTimeoutMultiplier设置为零,就可以避免插拔后数据不能正
常传输
原因如下:
Spcomm属性含意
如果想读写可靠,要根据不同的速率和应用实际情况设置合适的
值。和同步模式和异步模式、 不同的通信协议无关。
COMMTIMEOUTS: COMMTIMEOUTS 主要用于串口超时参数
设置。COMMTIMEOUTS结构如下:
typedef struct_ COMMTIMEOUTS {
DWORD ReadIntervalTimeout;
DWORD ReadTotalTimeoutMultiplier;
DWORD ReadTotalTimeoutConstant;
DWORD WriteTotalTimeoutMultiplier;
DWORD WriteTotalTimeoutConstant;
. } COMMTIMEOUTS,*LPCOMMTIMEOUTS;
1
ReadIntervalTimeout:两字符之间最大的延时
注:当读取串口数据时,一-旦两个字符传输的时间差超过该时间,读取函数将返回现有的数据。设置为0表示该参数不起作用。指定时间最大值(毫秒),充许接收的2个字节间有时间差。也就是说,刚接收了一个字节后,等了ReadIntervalTimeout时间后还没有新的字节到达,就认为本次读串口操作结束(后面的字节等下一-次读取操作来处理)。即使你想读8个字节,但读第2个字节后,过了ReadIntervalTimeout时间后,第3个字节还没到。实际上就只读了2个字节。
2 ReadTotalTimeoutMultiplier:指定比例因子(毫秒),实际上是设置读取一一个字节和等待下-一个字节所需的时间,这样总的超时时间为读取的字节数乘以该值,同样一次读取操作到达这个时间后,也认为本次读操作已经结束。

3 ReadTotalTimeoutConstant: - -次读取串口数据的固定超时。所以在- -次读取串口的操作中,其超时为ReadTotalTimeoutMultiplier乘以读取的字节数再加上ReadTotalTimeoutConstant。将ReadIntervalTimeout设置为MAXDWORD,并将ReadTotalTimeoutMultiplier
ReadTotalTimeoutConstant设置为0,表示读取操作将立即返回存放在输入缓冲区的字符。可以理解为-一个修正时间,实际上就是按ReadTotalTimeoutMultiplier计算出的超时时间再加上该
时间才作为整个超时时间。

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝈蝈(GuoGuo)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值