+ -
当前位置:首页 → 问答吧 → delphi 与 232 串口的 问题

delphi 与 232 串口的 问题

时间:2011-11-08

来源:互联网

rbuf:array[1..MaxByte] of byte;
  mmx:array[1..32] of byte;

  s : byte ;  
  s1 : byte ;  
  s2 : byte ;  
  s3 : byte ;  
  s4 : byte ;  
  s5 : byte ;  
  s6 : byte ;  
  s7 : byte ;  
  s8 : byte ; 
  s9 : string ;

mmx[1]:=rbuf[1];
if mmx[1] = 165 then
begin
mmx[2]:=rbuf[2];
if mmx[2] = 35 then
  Edit28.Text := '前行' ;
if mmx[2] = 50 then
  Edit28.Text := '后行' ;

mmx[3] := rbuf[3] ;
mmx[4] := rbuf[4] ;
s := rbuf[3] + rbuf[4] ;
Edit5.Text := IntToStr(s)+'km' ;

mmx[5] := rbuf[5] ;
mmx[6] := rbuf[6] ;
s1 := rbuf[5] + rbuf[6] ;
Edit3.Text := IntToStr(s1) +'km/h' ;

mmx[7] := rbuf[7] ;
mmx[8] := rbuf[8] ;
s2 := rbuf[7] + rbuf[8] ;
Edit18.Text := IntToStr(s2) + 'r/min' ;

mmx[9] := rbuf[9] ;
mmx[10] := rbuf[10] ;
s3 := rbuf[9] + rbuf[10] ;

mmx[11] := rbuf[11] ;
mmx[12] := rbuf[12] ;
s4 := rbuf[11] + rbuf[12] ;

mmx[13] := rbuf[13] ;
mmx[14] := rbuf[14] ;
s5 := rbuf[13] + rbuf[14] ;

mmx[15] := rbuf[15] ;
mmx[16] := rbuf[16] ;
s6 := rbuf[15] + rbuf[16];

//保留位
mmx[17] := rbuf[17] ;
mmx[18] := rbuf[18] ;
s7 := rbuf[17] + rbuf[18];
//校验和
mmx[19] := rbuf[19] ;
mmx[20] := rbuf[20] ;
s8 := rbuf[19] + rbuf[20] ;
s9 := IntToStr(rbuf[1]+rbuf[2] + s + s1 + s2 + s3 + s4 + s5 + s6 + s7);
//s9 := IntToStr( rbuf[1]+ rbuf[2]+ rbuf[3]+ rbuf[4]+ rbuf[5]+ rbuf[6]+ rbuf[7]+ rbuf[8]+ rbuf[9]+ rbuf[10]+ rbuf[11]+ rbuf[12]+ rbuf[13]+ rbuf[14]+ rbuf[15]+ rbuf[16]+ rbuf[17]+ rbuf[18]) ;
Edit29.Text := s9;

校验和 怎么算都不对

作者: ll_2363808169   发布时间: 2011-11-08

谁知道你的规则,算不对,就好好看看程序

作者: bdmh   发布时间: 2011-11-08

哪里不对了?

作者: lhylhy   发布时间: 2011-11-08

引用 2 楼 lhylhy 的回复:
哪里不对了?


就是最后的和

作者: ll_2363808169   发布时间: 2011-11-08

协议是什么?

是不是应该是
Delphi(Pascal) code

s:Word;
s := rbuf[3]*256 + rbuf[4];


依次类推。
另外你求和不会用循环么?

作者: lhylhy   发布时间: 2011-11-08