用spcomm串口编程的时候,发送的的字符在buffer中保存的是对应的ascii码,比如我发送1,保存的就是49.在接收时候接收的也是49,。请问怎么让其转换成1呢显示在memo里呢??还有就是如果我想发送100,接收显示出100该怎么办?第一次做串口的东西,这个一直都弄不明白怎么搞。procedure TForm1.Button4Click(Sender: TObject);
begin
  FComm.WriteCommData(PChar(edit1.Text),length(edit1.Text));
end;procedure TForm1.FCommReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
var
viewstring:string;
rbuf:array[0..7] of byte;
i:integer;
begin
  viewstring:='';
  move(buffer^,PChar(@rbuf)^,bufferlength);
  for i := 0 to bufferlength-1 do
    viewstring:=inttohex(rbuf[i],2);
  memo1.Lines.Add(viewstring);
end;

解决方案 »

  1.   

    这要看串口通信协议,串口一般常用的传送数据编码就是ASCII或二进制,或者二者混合,你这例子是传送字符串,接收按数字处理了如果是传送字符串:
    viewstring:='';
    for i := 0 to bufferlength-1 do
        viewstring:=viewstring+Chr(rbuf[i]);如果是传送数字(类似这样处理)
    首先把数打包成字节数组(注意高低字节)
    FComm.WriteCommData(//字节数组,//长度);没用spcomm,不知道有没有发送字符串的方法和发送一般数据方法的区别
    CPORT控件有WriteStr()和Write(),比较方便
      

  2.   

    可以dowmload cport library 來用看看..