delphi中关于地磅读数的问题:我用SPCOMM写了个读取金鸟XK3130的地磅的数据,地磅的设置传输方式是连续发送,我在超级终端中可以接收到COM1口发送过来的数据,但是用程序怎么写都不行(我没做过,一点都不懂!),波特率:1200,COM1,偶校验,数据位:7位,现贴出代码:
参数设置:
Comm1.BaudRate:=1200;
Comm1.ByteSize:=7;
Comm1.CommName:=com1;
Comm1.ParityCheck:=True;
Comm1.StopBits:=1;procedure TFrmComm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
var
  i:integer;
begin
  Viewstring:='';
  Move(buffer^,pchar(@rbuf)^,BufferLength);
  for i:=4 to 10 do
  begin
    Viewstring:=Viewstring+IntToStr(rbuf[i])+'';
    Viewstring:='接收'+Viewstring;
    Memo1.Lines.Add(Viewstring);
    Memo1.Lines.Add('');
  end;
  Comm1.StopComm;
end;
好像完全都不对,我想要的结果是:当地磅上显示18.4,我取得的数据就是18.4,不知道怎么搞了,请兄弟们帮忙啊!我把我剩余的分全给出去!就剩100分了

解决方案 »

  1.   

    另外,为什么在ReceiveData里面写StopComm?
      

  2.   

    //串口打开: Comm1.StartComm
    //串口关闭:Comm1.StopComm; 
    //串口接受数据:
    procedure TFrmComm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; 
      BufferLength: Word); 
    var 
      i:integer; 
    begin 
      Viewstring:=''; 
      Move(buffer^,pchar(@rbuf)^,BufferLength); //将数据复制到rbuf处
      for i:=4 to 10 do //根据协议解析数据
      begin 
        Viewstring:=Viewstring+IntToStr(rbuf[i])+''; 
        Viewstring:='接收'+Viewstring; 
        Memo1.Lines.Add(Viewstring); 
        Memo1.Lines.Add(''); 
      end; 
      //Comm1.StopComm; 
    end; 
      

  3.   

         SetLength(rbuf,BufferLength);
         Move(buffer^,pchar(@rbuf)^,BufferLength);