中国开发网: 论坛: 程序员情感CBD: 贴子 813541
haitao
那就可以自己做一个带超时参数的读函数好了。。。。。。。。
使用这个函数,就很简单直观了!

刚刚我搜到的怎么都是 又线程又窗口又消息的,我的程序明明是最简单的命令行的。。。。


SetCommTimeouts

GetCommTimeouts, SetCommTimeouts 用于设置串口接收发送数据的超时参数.

view plaincopy to clipboardprint?
function GetCommTimeouts(hFile: THandle; var lpCommTimeouts: TCommTimeouts): BOOL; stdcall;
function SetCommTimeouts(hFile: THandle; const lpCommTimeouts: TCommTimeouts): BOOL; stdcall;
PCommTimeouts = ^TCommTimeouts;
_COMMTIMEOUTS = record
ReadIntervalTimeout: DWORD;
ReadTotalTimeoutMultiplier: DWORD;
ReadTotalTimeoutConstant: DWORD;
WriteTotalTimeoutMultiplier: DWORD;
WriteTotalTimeoutConstant: DWORD;
end;
TCommTimeouts = _COMMTIMEOUTS;
COMMTIMEOUTS = _COMMTIMEOUTS;
function GetCommTimeouts(hFile: THandle; var lpCommTimeouts: TCommTimeouts): BOOL; stdcall;
function SetCommTimeouts(hFile: THandle; const lpCommTimeouts: TCommTimeouts): BOOL; stdcall;
PCommTimeouts = ^TCommTimeouts;
_COMMTIMEOUTS = record
ReadIntervalTimeout: DWORD;
ReadTotalTimeoutMultiplier: DWORD;
ReadTotalTimeoutConstant: DWORD;
WriteTotalTimeoutMultiplier: DWORD;
WriteTotalTimeoutConstant: DWORD;
end;
TCommTimeouts = _COMMTIMEOUTS;
COMMTIMEOUTS = _COMMTIMEOUTS;

以下这段说明取自CnRs232的注释.写的很好,嘿嘿.
ReadIntervalTimeout:指定通信线路上两个字符到达之间的最大时间.在读取操作期间,从接收到第一个字符时开始计时,若任意两个字符到达之间的时间间隔超过这个最大值,则读取操作完成,返回缓冲数据.如果置0,表示不使用间隔超时.
ReadTotalTimeoutMultiplier:用于设定读总超时时间的系数.读总超时时间 = (总超时系数 X 接收字符数) + 总超时常量.常量和系数可分别为0。如果均为0,则不使用总超时设定.
ReadTotalTimeoutConstant:设定读总超时时间的常量值.读总超时时间 = (总超时系数 X 接收字符数) + 总超时常量.常量和系数可分别为0。如果均为0,则不使用总超时设定.
WriteTotalTimeoutMultiplier:用于设定写总超时时间的系数.写总超时时间 = (总超时系数 X 接收字符数) + 总超时常量.常量和系数可分别为0。如果均为0,则不使用总超时设定.
WriteTotalTimeoutConstant:用于设定写总超时时间的常量值.写总超时时间 = (总超时系数 X 接收字符数) + 总超时常量.常量和系数可分别为0。如果均为0,则不使用总超时设定.

超时设置在多设备采集的上位机上会显得很重要,有些设备是通过RS485连接,一条链路上会串联多个设备,这个时候,设置一个合理的超时时间,可以更快得到采集数据.不同的设备的接收超时参数也不同,需要通过多次试验取得一个合理的数值.
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录