刚安装cport听说很好用,上手就碰到个小问题。
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
  Str: String;
begin
   ComPort.ReadStr(str, count);
   memo.Lines.Add(str);
end;memo显示的事1个字节一个事件,我总共收上10个字节,显示10列。
我想实现类似Comm控件,上来的数据是整体的。
procedure TPublicForm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
begin
memo.lines.add(Pchar(buffer));end;
请问这个组件有没有其他的好方法,另外想找cport的一些帮助(中文的)

解决方案 »

  1.   

    比如说:
    procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
    var
      Str: String;
    begin
       str:='';
       ComPort.ReadStr(str, count);
       comdata:=comdata+str;
       memo.Lines.Add(Comdata);
    end;
    memo显示的是
    0
    01
    010
    0102
    01021
    010212
    0102128
    01021287
    010212876
    010212876D
    010212876D
    其实我最终要的就是最后的010212876D
    读出数据之后上要进行其他操作,现在读数据只是1个字节1个字节的显示,我要执行一个其他操作岂不是要执行 lenght(str) 次吗,
    当然你用判断长度也是可以的,我只想问下关于这个组件的其他功能有没有
      

  2.   

    procedure TForm1.ComPRxChar(Sender: TObject; Count: Integer);
    var
      Str,str1: String;
    begin
      ComP.Readstr(Str, Count);
      str1:=StrToHexStr(Str);
      Memo1.Text := Memo1.Text + str1+ #13#10;
    end;这是我用过的代码。你不能用memo.Lines.Add();肯定会显示成为你说的那样。用Memo1.Text := Memo1.Text + ……;
    我有份cport的中文说明。不知道怎么给你。
      

  3.   

    谢谢楼上,如果在的话发邮件给我吧,
    QQ:[email protected] 
    如果方便的话可以加QQ请教您几个问题吗?
                                    
      

  4.   

    可以在事件里多检测、读一次
    procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
    var
      Str: String;
      newcount:integer;
    begin
      str:='';
      sleep(100);
      newcount:=comport.当前字节数;
      ComPort.ReadStr(str, newcount);
      comdata:=comdata+str;
      memo.Lines.Add(Comdata);
    end;
      

  5.   

    谢谢5楼,终于明白 count是什么意思了,接收的长度,默认的是1。
    不过有一事不明白,为什么去掉 sleep(100)就不会返回数据呢。
    我的代码:
    var
     Str: String;
     begin
       str:='';
       sleep(100);// 为什么不加这句就不能正确返回数据呢??????
       ComPort.ReadStr(str,11);
       comdata:=comdata+str;
       memo.Lines.Add(comdata);
       ComData:=''; //