第一次做通讯,不怎么明白!
我写的接收数据如下:
setLength(mget,mscomm1.InBufferCount);  //mget是一个array of byte
mget:=AComm.Input;
现在这个mget里面的数据是不是就是接收到的16进制的一串数据呢?如果是的话,我应该怎么把他们转成string呢?
比如说mget的数据是300AFF,即mget[0]=$30,mget[1]=$31,mget[2]=$32,我要全部转成一个string 就是'303132',而不是'012'三个字符。

解决方案 »

  1.   

    s :='';
    for i := 1 to High(mGet) do
    s := s + intToHex(mget[i-1], 2);http://lysoft.7u7.net
      

  2.   

    我要实现的是把接收到的数据一字不变的完全转成string。
    例如收到303132,就转成'303132',而不是'012'三个字符组成的string。
    按照上面的写法还是有问题,代码如下:
          AComm.Output:=mbuffer;                  //mbuffer是一个array of byte
          sleep(350);
          setLength(mget,AComm.InBufferCount);
          mget:=AComm.Input;
          str:='';                                 //str是一个string
          for i:=1 to High(mget) do
            str:=str+intToHex(mget[i-1],2);   
          result:=str;   
    这样写就会出现Invalid argument错误,为什么???
    若写成如下:
          AComm.Output:=mbuffer;                  //mbuffer是一个array of byte,发送没问题
          sleep(350);
          str:=AComm.Input;   
          result:=str;
    结果收到的就是由三个字符组成的string,即'012',而不是我想要的'303132'。
    正确的写法应该是怎么样的???很急!!!