请问各位高手:
   我在获取串口数据的时候,用串口调试控件来获得串口数据,能得到标准数据.如55 aa 01 ff ff 7f 7f,但是我自己在编辑得到数据时却老是得这个数据,也就是说我从来没有找到过55 aa 这样类型的数据.请问这是怎么回事.

解决方案 »

  1.   

    在Readcomm里做了转换吧,把byte数组的数据转成了以十六进制表示的数据了。
      

  2.   

    我也是转成了十六进制的.
    var
    s:String;
    i:integer;
    a:array[1..12] of byte;
    begin
      for  i := 1 to 12 do
      Begin
      s := s  + inttohex(a[i],2);
      End;
    end;
      

  3.   

    完全是数据转换的问题,我现在也在做串口通讯的东西,用的是spcomm
      

  4.   

    我用的是CPort。得到的是一个字符串,就看你自己怎么转换成需要的方式显示出来了
      

  5.   

    问题已经解决,但是又出现新的问题.我首先把buffer中的数据一个一个取出(设置bufferLength=1,就能一个一个取).但是现在我想把它放在一个循环队列中,却发生了数据顺序不一致的问题.我写的是:
    var 
      rxdbuf : array[1..64] of byte;
      rxdptr : integer;
      ptr:integer;
      i :integer;
    Begin
      rxdptr :=0;
      bufferLength := 1;
      move(buffer^,rxdbuf[rxdptr],bufferLength);
      ptr := ((rxdptr-11) mod 64);
      if  rxdbuf[ptr] = ($55) then
          i := i +1; //能找到55
      if  rxdbuf[(ptr+1)] = ($aa) then
          i := i+1;  //这里却找不到aa,用memo1显示是ff,或者7f,它的第三位才是aa,而从串口调试工具里面看到的是55 aa ff 01
    End;  
    请高手帮我写一个合要求的队列以让我放数据进去.
      

  6.   

    如果有相关代码,可以发在[email protected]
      

  7.   

    奇怪的事?我在用spcomm时,把readintervaltimeout时间设定为15数据显示的飞快,但是为16以上,速度就慢了很多?这是什么原因? 
    还有,程序脱开delphi环境,就不出错.但在delphi环境下.老是发生
    canvas does not allow drawing  这又是什么原因? 我也想过不改readintervaltimeout这个参数.也不却设定bufferLength的大小值.但那每个buffer的大小大约为 1024吧.所累积的数据太多,不能实时反映我的功能.数据包得到的间隙时间为3.15秒左右,我想要达到0.5秒左右就处理一次数据.
      

  8.   

    用什么控件写的,
      或用API写的?
      

  9.   

    http://www.56kc.net/web/commwatch.aspx参考把