最近用SPCOMM2.5作串口开发,近是发现一个怪问题:
我用一个成熟的串口调试软件SSCOM32向我用SPCOMM做的串口程序发送一个16进制数据
0A 01 11 11 11 F0
结果其中的11会被SPCOMM的接收方法ReceiveData忽略,只会接收到0A 01 F0,我跟踪过程序,所有11都会被忽略,如果你发送11 11 11 11 11等只有11的数据时,SPCOMM的ReceiveData事件根本不会被触发。说明和我写的ReceiveData事件代码 无关。
但是换调试软件SSCOM32却又能接收正常的0A 01 11 F0,说明此问题是出在SPCOMM控件上,有哪位高手能帮帮看看是什么地方的问题。==============以下是ReceiveData的事件代码===========
procedure TfmMain.SPCommOneReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
tmpArray:array[0..4096] of Byte;
i: DWORD;
ReceiveBuffer:PChar;
begin
ReceiveBuffer:=Buffer;
Dec(ReceiveBuffer);
for i:=0 to BufferLength-1 do
begin
inc(ReceiveBuffer);
tmpArray[i]:=Byte(ReceiveBuffer^);
ReceiveString:=ReceiveString+IntToHEX(Ord(tmpArray[i]),2);
end;
Message_Box(ReceiveString);
ReceiveString:='';
end;
我用一个成熟的串口调试软件SSCOM32向我用SPCOMM做的串口程序发送一个16进制数据
0A 01 11 11 11 F0
结果其中的11会被SPCOMM的接收方法ReceiveData忽略,只会接收到0A 01 F0,我跟踪过程序,所有11都会被忽略,如果你发送11 11 11 11 11等只有11的数据时,SPCOMM的ReceiveData事件根本不会被触发。说明和我写的ReceiveData事件代码 无关。
但是换调试软件SSCOM32却又能接收正常的0A 01 11 F0,说明此问题是出在SPCOMM控件上,有哪位高手能帮帮看看是什么地方的问题。==============以下是ReceiveData的事件代码===========
procedure TfmMain.SPCommOneReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
tmpArray:array[0..4096] of Byte;
i: DWORD;
ReceiveBuffer:PChar;
begin
ReceiveBuffer:=Buffer;
Dec(ReceiveBuffer);
for i:=0 to BufferLength-1 do
begin
inc(ReceiveBuffer);
tmpArray[i]:=Byte(ReceiveBuffer^);
ReceiveString:=ReceiveString+IntToHEX(Ord(tmpArray[i]),2);
end;
Message_Box(ReceiveString);
ReceiveString:='';
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货