var
pStr:string;
uFact:Uint;
a:integer;
begin
pStr:=char($01);
//呼叫设备(其实就是发送设备的地址码,在这里是"$01")
if not WriteFile(Form1.hCommDev,pStr[1],length(pStr),uFact,nil) then begin
//ShowMessage('失败');
end else begin
//ShowMessage('成功');
end;
//接收缓冲区返回信息
if not ReadFile(form1.hCommDev,pstr,4,uFact,nil) then
showmessage('null')
else
begin
//showmessage(pstr[4]);
//成功接收后发送后续命令包
dcb.Parity :=4; //更改校验码,协议要求,原来是0;
//后续命令包
pStr:=char($7E)+char($02)+char($01)+char($12)+char($34)+char($56)+char($00)+char($63);
if not WriteFile(Form1.hCommDev,pStr[8],length(pStr),uFact,nil) then begin
ShowMessage('null');
end else
begin
//ShowMessage('成功');
//发送命令包后接收缓冲区返回信息
if not ReadFile(form1.hCommDev,pstr,4,uFact,nil) then
showmessage('null')
else
showmessage(pstr[4]);
end;
end;
end;
以上是完整发送一次命令包的过程,但是在第二次发送命令包后设备没有反映,但是缓冲区应该是有信息的,确没有读出来,不知道原因,请各位帮忙看看,谢了