我用spcomm组件进行数据的发送,下位机也能及时地返回数据(通过串口精灵观察到)。但是我在一个按钮下写入如下代码(功能为发送数据并且判断接收到的数据)    com.WriteCommData('??',2);
    if s='!' then showmessage('接受') else showmessage('空白'); //s 为接收函数填入数据,定义为公共变量我是想实现 发送数据后,侦测其返回值(下位机会立即返回数据),但是一直没有实现,这是为什么。接收端如下procedure TfrmMain.ComReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);// var
//   s: string; 
begin    //move(Buffer^,ReceiveOrder,BufferLength);    SetLength(S, BufferLength); 。 
    Move(Buffer^, PChar(S)^, BufferLength);// s如果是公共变量,则发送时不能立刻得到返回
end;

解决方案 »

  1.   

    想发送数据后立刻侦测返回的值是多少,可是发送后能立刻显示在  memo中却不能存储到全局的变量中供访问。
      

  2.   

    我是在ComReceiveData中把经转换后数据串在一个全局变量中,并判断数据长度,当长度够了就执行一个过程处理数据.
      

  3.   

    你看一下spcomm的源程序就明白了,
    spcomm commReceiveData中的buff是指向一个指针的,当它接收到的数据后会将数据存到该指针指向的地址内,所以内容是变化的,指向一个全局的pchar变量后,均会指向同一地址,会出现问题.