我在使用SpComm時不會觸發onReceiveData 事件,我的RS232連接在DOS下測試過了,沒有問號?Comm1.StartComm; // 運行正常// 不會運行onReceiveData 事件,我的RS232連接在DOS下測試過了,沒有問號。
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
var
s: string;
begin
Showmessage('aa');  // 調試語句
SetLength(S, BufferLength); 
Move(Buffer^, PChar(S)^, BufferLength);
Memo1.Lines.Add(S);
Memo1.Invalidate;
end;----------------------------------------------------------------

解决方案 »

  1.   

    pDataToWrite:array[1..20] of char; // 要发送的,转化为字符      pDataToWrite[1]:=chr(byte($D1));
        Len:=1;//长度    Comm1.Inx_XonXoffFlow:=false;
        Comm1.Outx_XonXoffFlow:=false;
        flag:=Comm1.WriteCommData(@(pDataToWrite),Len);    dtTmp:=Now;
       while ((not (flag)) and ((Now-dtTmp)<(1000 /(24*60*60*1000))))  do //等待1秒试试
        begin
          Application.ProcessMessages;//处理缓冲区数据
        end;
      

  2.   


    建议接收函数为:  sRece1:string; //接收到的字符串
      rbuf:array[1..20] of byte;//把接收到的二进制转化为整数,存储在数组里procedure TForm_Set_TiQianLiang.Comm1ReceiveData(Sender: TObject;
      Buffer: Pointer; BufferLength: Word);
    var
       i:integer;
    begin
       sRece1:='';
       move(buffer^,pchar((@rbuf)^),bufferlength);
       for i:=1 to bufferlength do
       begin
         sRece1:=sRece1+ inttohex(rbuf[i],2);
       end;
    end;
      

  3.   

    我以前編過不少串口通訊類軟件, 你遇到的問題, 我感覺不是接收的問題, 而是, 你的發送的問題! 檢查你的發送代碼, 發送格式, 在Windows下是否禁用了Com???
      

  4.   

    我的數據源是單片機,在Dos下用Basic寫的程序運行都沒問題。
    我也想是串口初始化的問題,就是找不出原因,請大家給個意見參考一下。
      

  5.   

    忘了聲名一下,我的程序是在Windows2000 中編譯,win98 系統上運行,這樣
    會有影響嗎?
      

  6.   

    win98 系統上運行可能会有问题