if f_COM_HWD = INVALID_HANDLE_VALUE then
begin
f_COM_HWD := CreateFile(PCHAR(f_ComportParam.GetData_String('COM_NAME')),GENERIC_READ or GENERIC_WRITE,0,nil,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL ,0);
if f_COM_HWD = INVALID_HANDLE_VALUE then Exit;
SetupComm(f_COM_HWD, BUFFER_MAXNUM, BUFFER_MAXNUM);
GetCommState( f_COM_HWD, DcbInfo );
BuildCommDCB(PCHAR(f_ComportParam.GetData_String('COM_PARAMS')),DcbInfo );
SetCommState( f_COM_HWD, DcbInfo ); CommTimeout.ReadIntervalTimeout := 10;
CommTimeout.ReadTotalTimeoutMultiplier := 10;
CommTimeout.ReadTotalTimeoutConstant := 10;
CommTimeout.WriteTotalTimeoutMultiplier := 10;
CommTimeout.WriteTotalTimeoutConstant := 10;
SetCommTimeouts(f_COM_HWD, CommTimeout);
PurgeComm(f_COM_HWD,PURGE_RXCLEAR or PURGE_TXCLEAR);
IsOpend := TRUE;
end;串口初始化函数如上,设置了Read超时确没有效果,再调用ReadFile时就死住,必须收到消息才能继续(这影响了我的其他操作)请问怎么样才能ReadFile超时就结束啊
begin
f_COM_HWD := CreateFile(PCHAR(f_ComportParam.GetData_String('COM_NAME')),GENERIC_READ or GENERIC_WRITE,0,nil,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL ,0);
if f_COM_HWD = INVALID_HANDLE_VALUE then Exit;
SetupComm(f_COM_HWD, BUFFER_MAXNUM, BUFFER_MAXNUM);
GetCommState( f_COM_HWD, DcbInfo );
BuildCommDCB(PCHAR(f_ComportParam.GetData_String('COM_PARAMS')),DcbInfo );
SetCommState( f_COM_HWD, DcbInfo ); CommTimeout.ReadIntervalTimeout := 10;
CommTimeout.ReadTotalTimeoutMultiplier := 10;
CommTimeout.ReadTotalTimeoutConstant := 10;
CommTimeout.WriteTotalTimeoutMultiplier := 10;
CommTimeout.WriteTotalTimeoutConstant := 10;
SetCommTimeouts(f_COM_HWD, CommTimeout);
PurgeComm(f_COM_HWD,PURGE_RXCLEAR or PURGE_TXCLEAR);
IsOpend := TRUE;
end;串口初始化函数如上,设置了Read超时确没有效果,再调用ReadFile时就死住,必须收到消息才能继续(这影响了我的其他操作)请问怎么样才能ReadFile超时就结束啊
解决方案 »
- 关于C++中的友元函数
- 求MDBGrid控件for delphi7
- 急,菜鸟求助,高手帮帮忙啊~~
- 怎样让Listview1 中的checkbox 不能用鼠标点改变状态,但可以用语句进行改变状态。
- TVASCIIExport,TVHTMLExport是属于哪个第三方控件?哪位能提供信息,很急!!!!
- DBGrid直接操作,只容许新增,不容许修改怎么实现?
- 在DELPHI中能插入GIF动画吗?
- 像金山词霸那种客户区显示的控件是什么?up有分,100
- 新编写一组件,怎么也通不过编译,高手快进来看看
- Paradox7数据库密码验证求助
- 不使用 /install 服务应用程序如何安装
- 求算法,关于删除文本中重复的数据,在线等
begin
RevData := '';
for I := 1 to dwLen do
RevData := RevData+ CHR(RevBuf[I-1]);
Result := RevData;
end;