1002  源地址  目的地址  类型  故障 段名  段代码  模式   预留 CRC 1003
 2     1       1        1     1  8      2       1    1 2   2最好能够给写下校验程序,谢谢!

解决方案 »

  1.   

    最近也用到了,首先给你CRC校验函数
    ---------------------------------------
    unit UCRC16;interface
    type
        //CRC的数据结构
        TMyCRC = record                   //position
          Lowbyte: byte;                  //1
          Highbyte:  Byte;                //2
        end;
    Const
      CRCL:array [0..255] of byte=(
            $00,$21,$42,$63,$84,$A5,$C6,$E7,$08,$29,$4A,$6B,$8C,$AD,$CE,$EF,
            $31,$10,$73,$52,$B5,$94,$F7,$D6,$39,$18,$7B,$5A,$BD,$9C,$FF,$DE,
            $62,$43,$20,$01,$E6,$C7,$A4,$85,$6A,$4B,$28,$09,$EE,$CF,$AC,$8D,
            $53,$72,$11,$30,$D7,$F6,$95,$B4,$5B,$7A,$19,$38,$DF,$FE,$9D,$BC,
            $C4,$E5,$86,$A7,$40,$61,$02,$23,$CC,$ED,$8E,$AF,$48,$69,$0A,$2B,
            $F5,$D4,$B7,$96,$71,$50,$33,$12,$FD,$DC,$BF,$9E,$79,$58,$3B,$1A,
            $A6,$87,$E4,$C5,$22,$03,$60,$41,$AE,$8F,$EC,$CD,$2A,$0B,$68,$49,
            $97,$B6,$D5,$F4,$13,$32,$51,$70,$9F,$BE,$DD,$FC,$1B,$3A,$59,$78,
            $88,$A9,$CA,$EB,$0C,$2D,$4E,$6F,$80,$A1,$C2,$E3,$04,$25,$46,$67,
            $B9,$98,$FB,$DA,$3D,$1C,$7F,$5E,$B1,$90,$F3,$D2,$35,$14,$77,$56,
            $EA,$CB,$A8,$89,$6E,$4F,$2C,$0D,$E2,$C3,$A0,$81,$66,$47,$24,$05,
            $DB,$FA,$99,$B8,$5F,$7E,$1D,$3C,$D3,$F2,$91,$B0,$57,$76,$15,$34,
            $4C,$6D,$0E,$2F,$C8,$E9,$8A,$AB,$44,$65,$06,$27,$C0,$E1,$82,$A3,
            $7D,$5C,$3F,$1E,$F9,$D8,$BB,$9A,$75,$54,$37,$16,$F1,$D0,$B3,$92,
            $2E,$0F,$6C,$4D,$AA,$8B,$E8,$C9,$26,$07,$64,$45,$A2,$83,$E0,$C1,
            $1F,$3E,$5D,$7C,$9B,$BA,$D9,$F8,$17,$36,$55,$74,$93,$B2,$D1,$F0);  CRCH:array [0..255] of byte=(
            $00,$10,$20,$30,$40,$50,$60,$70,$81,$91,$A1,$B1,$C1,$D1,$E1,$F1,
            $12,$02,$32,$22,$52,$42,$72,$62,$93,$83,$B3,$A3,$D3,$C3,$F3,$E3,
            $24,$34,$04,$14,$64,$74,$44,$54,$A5,$B5,$85,$95,$E5,$F5,$C5,$D5,
            $36,$26,$16,$06,$76,$66,$56,$46,$B7,$A7,$97,$87,$F7,$E7,$D7,$C7,
            $48,$58,$68,$78,$08,$18,$28,$38,$C9,$D9,$E9,$F9,$89,$99,$A9,$B9,
            $5A,$4A,$7A,$6A,$1A,$0A,$3A,$2A,$DB,$CB,$FB,$EB,$9B,$8B,$BB,$AB,
            $6C,$7C,$4C,$5C,$2C,$3C,$0C,$1C,$ED,$FD,$CD,$DD,$AD,$BD,$8D,$9D,
            $7E,$6E,$5E,$4E,$3E,$2E,$1E,$0E,$FF,$EF,$DF,$CF,$BF,$AF,$9F,$8F,
            $91,$81,$B1,$A1,$D1,$C1,$F1,$E1,$10,$00,$30,$20,$50,$40,$70,$60,
            $83,$93,$A3,$B3,$C3,$D3,$E3,$F3,$02,$12,$22,$32,$42,$52,$62,$72,
            $B5,$A5,$95,$85,$F5,$E5,$D5,$C5,$34,$24,$14,$04,$74,$64,$54,$44,
            $A7,$B7,$87,$97,$E7,$F7,$C7,$D7,$26,$36,$06,$16,$66,$76,$46,$56,
            $D9,$C9,$F9,$E9,$99,$89,$B9,$A9,$58,$48,$78,$68,$18,$08,$38,$28,
            $CB,$DB,$EB,$FB,$8B,$9B,$AB,$BB,$4A,$5A,$6A,$7A,$0A,$1A,$2A,$3A,
            $FD,$ED,$DD,$CD,$BD,$AD,$9D,$8D,$7C,$6C,$5C,$4C,$3C,$2C,$1C,$0C,
            $EF,$FF,$CF,$DF,$AF,$BF,$8F,$9F,$6E,$7E,$4E,$5E,$2E,$3E,$0E,$1E);
        Function BuffCalCulateCRC(InputBuff:Pchar;BuffLen:integer):TMyCRC;//计算CRCimplementation//计算长度为BuffLen,下标从0开始的数组的CRC校验值
    Function BuffCalCulateCRC(InputBuff:Pchar;BuffLen:integer):TMyCRC;//计算CRC
    var
      i,j:integer;
      Charx:array[0..1023] of char;
      btt1,Btmp:byte;
      T1,T2,T3:byte;
      Rt:TMyCRC;
    begin
      for j:=0 to Bufflen-1 do begin
        charx[j]:=inputBuff[j];
      end;
      charx[BuffLen]:=#0;
      Charx[BuffLen+1]:=#0;  T1:=byte(charx[0]);
      T2:=byte(charx[1]);
      for  i:=2 to Bufflen+1  do begin
        T3:=byte(charx[i]);
        Btmp:=T1;
        Btt1:=CRCH[Btmp];
        T1:=Btt1 Xor T2;
        Btt1:=CRCL[Btmp];
        T2:=Btt1 xor T3;
      end;
    //  Result:=(T1 shl 8) +T2;
      Rt.Highbyte:=T1;
      Rt.Lowbyte:=T2;
      Result:=Rt;
    end;end.
      

  2.   

    Function BuffCalCulateCRC(InputBuff:Pchar;BuffLen:integer):TMyCRC;//计算
    ------------------
    计算CRC的,把需要校验的buff的首地址添到inputbuff,bufflen是长度...