各位高手:
         你们好,我现在有一事请大家帮忙,比较急。
         现在我的客户有汽车电子计量衡,我要用DELPHI开发一个程序,能通过串口和该计量衡通信读取重量数据,该计量衡提供通信的数据格式为:       起始字符:0x02   结束字符:0x0d  ,中间为命令组合“2UB” 
       在手册中例子 :
           主机请求仪表发送显示重量数据:
           主机发送命令:  <STX>2UB<CR>
           仪表返回数据:  <STX>2UB0010000<CR>
           其中        :  0010000 为重量数据。
       在该手册中用QBASIC 语言编程读取重量、数据的程序段如下:       cls
       locate10,10
       print" DEMO "
       open "com1:9600,N,8,1,CS0,DS0,CD0" for random as #1
       do 
          print#1,chr$(2)+"2UB"+chr$(13)
          line input#1,b$
          w$=mid$(b$,5,6)
          locate 12,10
          print"display weight:";w$;"kg"
          sleep1
       loop until inkey$=chr$(27)
       close #1
       system      我在DELPHI中串口的设置和连接上程序都已经通过,用MODEM测试完全可以通过,但现在费解的是和计量衡通信的发送命令该如何写????也就是"2UB"前后怎么写??请各位高手帮忙,送上100分以表示诚挚感谢。

解决方案 »

  1.   

    var
      buf: array of Byte;
    begin  SetLength(buf,6);
      buf[0] := 0x02;
      buf[1] := Ord('2');
      buf[2] := Ord('U');
      buf[3] := Ord('B');
      buf[4] := 0x0d;
      MSComm.Output := buf;
      ...end;
      

  2.   

    哦,不好意思,Delphi的十六进制用$
     buf[0] := $02;
     buf[4] := $0d;
      

  3.   

    var
      buf: array of Byte;
    begin  SetLength(buf,6);
      buf[0] := 0x02;
      buf[1] := Ord('2');
      buf[2] := Ord('U');
      buf[3] := Ord('B');
      buf[4] := 0x0d;
      MSComm.Output := buf;
      ...end;