//例如AA C0 D4 04 3A 0A A1 60 1D AB
//AA C0是报文头和指令号
//D4 04 3A 0A 是数据
//A1 60是ID
//1D是校验和 AB是报文尾
//4+4+A+A+1=1D
//求算法
#pragma warning(disable:4305 4309)
#include <stdio.h>
char pack[256];
char checksum(int from,int to) {
int j,sum;
sum=0;
for (j=from;j<to;j++) {
sum+=pack[j]&0x0F;
}
return (char)(sum&0xFFu);
}
int main() {
char data[4]={0xD4,0x04,0x3A,0x0A};
int L=4,n,i;
pack[0]=0xAA;
pack[1]=0xC0;
for (i=0;i<L;i++) pack[2+i]=data[i];
pack[2+i]=0xA1; i++;
pack[2+i]=0x60; i++;
pack[2+i]=checksum(2,2+i); i++;
pack[2+i]=0xAB; i++;
n=2+i;
for (i=0;i<n;i++) {
printf("%02X ",(unsigned char)pack[i]);
}
printf("\n");
return 0;
}
//AA C0 D4 04 3A 0A A1 60 1D AB
//