最近用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;