如果memo1中的数据如下: BF 02 28 21 22 23 20 FF BF 02 28 21 A2 6F 20 FF BF 02 28 21 A3 6F 20 FF BF 02 28 21 A3 6F 20 FF BF 02 28 21 A4 6F 20 FF BF 02 28 21 A4 6F 20 FF BF 02 28 21 25 56 20 FF 同时还会有数据进入格式同上:以BF开头,以FF结尾。 不知道如何编写语句实现在以BF开头,以FF结尾的数据中查找当第三个数据为21时,将值赋给memo2?

解决方案 »

  1.   

    如果是数据不定时进来的话,你也只能是查询后,赋值给memo2,删除查询的数据,在进行新的一轮查询,或者在memo1中固定接收一定长度的字符传,然后查询,要是memo2实时增长的话,运算效率就很低了。及时方法能实现,使用上也是问题。
      

  2.   

    memo里一般是可见字符,你是把16进制数据转为hex字符串再加入memo?
      

  3.   

    var s:string;
        i,j:integer;
    const ds='BF 02 28 21';
    begin
      s:=StringReplace(memo1.Text,#13,'',[rfReplaceAll]);//删除回车符
      s:=StringReplace(s,#10,'',[rfReplaceAll]);//删除换行符
      i:=pos('BF',s);
      s:=copy(s,i,length(s));
      j:=(length(s)div 24)*24;
      memo1.Text:=copy(s,j+1,length(s));//将处理过部分的字符从memo1删除
      i:=pos(ds,s);
      while i>0 do
      begin
        memo2.Lines.Append(copy(s,i,24));//把BF 02 28 21的数据加入到memo2
        s:=copy(s,i+24,length(s));
        i:=pos(ds,s);
      end;
    end;
      

  4.   

    希望楼主不要像http://topic.csdn.net/u/20110825/14/0ce16c9a-343e-4c7d-9607-2264fd8784b3.html这里,不满意答案也不给个解析就结了。
      

  5.   

    我用delphi做了一个串口调试精灵,用它可以接收到来自传感器节点的数据包,用memo1进行显示,另外我的是两个温度节点用于发送,一个节点用于接收。接收到的连续数据包格式如下:
    这是分别接收时的数据:
    这是来自于第一个节点的数据:BF 02 28 20 A1 22 20 FF BF 02 28 20 21 22 20 FF BF 02 28 20 22 22 20 FF BF 02 28 20 22 22 20 FF BF 02 28 20 23 22 20 FF BF 02 28 20 A3 50 20 FF BF 02 28 20 A4 50 20 FF BF 02 28 20 A4 50 20 FF BF 02 28 20 A5 50 20 FF BF 02 28 20 A5 50 20 FF BF 02 28 20 26 22 20 FF BF 02 28 20 A6 50 20 FF BF 02 28 20 A7 50 20 FF BF 02 28 20 A7 50 20 FF BF 02 28 20 20 22 20 FF BF 02 28 20 A0 50 20 FF BF 02 28 20 21 50 20 FF BF 02 28 20 21 50 20 FF   
    这是来自第二个节点的数据:BF 02 28 21 22 23 20 FF BF 02 28 21 A2 6F 20 FF BF 02 28 21 A3 6F 20 FF BF 02 28 21 A3 6F 20 FF BF 02 28 21 A4 6F 20 FF BF 02 28 21 A4 6F 20 FF BF 02 28 21 25 56 20 FF BF 02 28 21 A5 24 A0 FF BF 02 28 21 A6 24 A0 FF BF 02 28 21 26 24 A0 FF BF 02 28 21 A7 95 30 FF BF 02 28 21 A7 95 30 FF BF 02 28 21 20 95 30 FF BF 02 28 21 20 95 30 FF BF 02 28 21 21 95 30 FF   
    两个都是温度节点,发送数据的时候放置的位置很近!  不知道当单击串口调试精灵保存数据按钮时,如何将数据分析保存到SQL的data数据库表中。data表的字段属性为(节点号,温度,时间),不知数据包怎么解析,接收时间如何确定,哪个值表示节点号,哪个什表示温度值?
    我想着按照我原贴所描述的,当我实现数据保存后,在把memo2中的数据通过adoquery添加到表中相应字段。