D
doby_li
Unregistered / Unconfirmed
GUEST, unregistred user!
请问我用spcomm控件连续发送了4条指令,现在我想每发一条指令就要收到该条指令的反馈指令,但我现在只能收到第一条指令的反馈指令,其它三条反馈指令都收不到。
相关代码:
procedure TFCOMM.btninitClick(Sender: TObject);
var
sinit1,sinit2,sinit3,sinit4:string;
begin
//初始化 1
sinit1:=HexToStr('6899999999999968050161CD16');
if Comm1.WriteCommData(Pchar(sinit1),Length(sinit1)) then
else
messagedlg('初始化卡的指令1发送失败!',mterror,[mbyes],0);
sleep(2);
//写数据初始化 2
sinit2:=HexToStr('68999999999999680301016B16');
if Comm1.WriteCommData(Pchar(sinit2),Length(sinit2)) then
else
messagedlg('初始化卡的指令2发送失败!',mterror,[mbyes],0);
sleep(2);
//写返写区初始化 3
sinit3:=HexToStr('68999999999999680301026C16');
if Comm1.WriteCommData(Pchar(sinit3),Length(sinit3)) then
else
messagedlg('初始化卡的指令3发送失败!',mterror,[mbyes],0);
sleep(2);
//返写区清零 4
sinit4:=HexToStr('6899999999999968040A353332323232323232326C16');
if Comm1.WriteCommData(Pchar(sinit4),Length(sinit4)) then
else
messagedlg('初始化卡的指令4发送失败!',mterror,[mbyes],0);
end;
以上是在一个“初始化”的按纽中连续发送4条指令。
procedure TFCOMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var s:string;
begin
SetLength(S,BufferLength); //接收RS232的数据并显示Memo1上。
Move(Buffer^,PChar(S)^,BufferLength);
Memo1.Lines.Add(StrToHex(S));
Memo1.Invalidate;
//if StrToHex(S)='68 FF FF FF FF FF FF 68 C5 01 62 F2 16' then
// showmessage('初始化卡的操作成功!');
end;
以上代码只能收到第一条发送指令的反馈指令,请问应如何改才能实现:每发送一条指令就收到一条反馈指令.
打个比方:
发送A指令,收到A1指令。
发送B指令,收到B1指令。
发送C指令,收到C1指令。
发送D指令,收到D1指令。
先谢各位了。
相关代码:
procedure TFCOMM.btninitClick(Sender: TObject);
var
sinit1,sinit2,sinit3,sinit4:string;
begin
//初始化 1
sinit1:=HexToStr('6899999999999968050161CD16');
if Comm1.WriteCommData(Pchar(sinit1),Length(sinit1)) then
else
messagedlg('初始化卡的指令1发送失败!',mterror,[mbyes],0);
sleep(2);
//写数据初始化 2
sinit2:=HexToStr('68999999999999680301016B16');
if Comm1.WriteCommData(Pchar(sinit2),Length(sinit2)) then
else
messagedlg('初始化卡的指令2发送失败!',mterror,[mbyes],0);
sleep(2);
//写返写区初始化 3
sinit3:=HexToStr('68999999999999680301026C16');
if Comm1.WriteCommData(Pchar(sinit3),Length(sinit3)) then
else
messagedlg('初始化卡的指令3发送失败!',mterror,[mbyes],0);
sleep(2);
//返写区清零 4
sinit4:=HexToStr('6899999999999968040A353332323232323232326C16');
if Comm1.WriteCommData(Pchar(sinit4),Length(sinit4)) then
else
messagedlg('初始化卡的指令4发送失败!',mterror,[mbyes],0);
end;
以上是在一个“初始化”的按纽中连续发送4条指令。
procedure TFCOMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var s:string;
begin
SetLength(S,BufferLength); //接收RS232的数据并显示Memo1上。
Move(Buffer^,PChar(S)^,BufferLength);
Memo1.Lines.Add(StrToHex(S));
Memo1.Invalidate;
//if StrToHex(S)='68 FF FF FF FF FF FF 68 C5 01 62 F2 16' then
// showmessage('初始化卡的操作成功!');
end;
以上代码只能收到第一条发送指令的反馈指令,请问应如何改才能实现:每发送一条指令就收到一条反馈指令.
打个比方:
发送A指令,收到A1指令。
发送B指令,收到B1指令。
发送C指令,收到C1指令。
发送D指令,收到D1指令。
先谢各位了。