delphi 接收数据的两种方法
(2013-09-25 11:21:20)在使用SPComm接收数据时,要用到指针,函数原型为:
procedure TForm1.commReceiveData(Sender: TObject; Buffer:
Pointer;
begin
end;
其收到数据时,它提供了一个指针Buffer,指向这个存放数据的缓冲区的首地址,长度为BufferLength,这样就知道收到的是什么东东了,可以有两种方法取出其中内容:
var
begin
end;
var
begin
end;
或是
var
begin
end;
或是直接了当的显示出来:
Memo1.Lines.Add('COM接收:' + Copy(string(buffer^),1,BufferLength));
还有一种利用数组,定义一个固定大小的缓冲区,但需要判断接收的长度是否大于定义的大小,如果大于,则要循环存放取出的内容:
var
begin
end;
当接收十六进制字符串时:
Sleep(100);//等待100ms,保证接收到所有数据
这里在Memo里显示字符时,当字符多于显示Memo大于小时,始终显示最后一行有两种方法:
memRec.Text := memRec.Text + hexstr;
memRec.SelStart := memRec.GetTextLen;
memRec.Perform(EM_SCROLLCARET, 0, 0);
或者用:
memRec.SelStart := memRec.GetTextLen;
memRec.SelLength := 0;
memRec.SelText := rstr;