串口的数据包格式:数据包组成: 包头+消息体+包尾包头和包尾 固定不用管消息体由几个字段组成 : Length + COM + Data + Check 消息体字段说明:名称 长度 说明
Length 1 长度,COM+ Data 字节数
COM 1 命令码
Data x 数据,与命令相关
Check 1 校验和,Length+ COM+ Data 所有字节累加和的补码样例: 03+21+01+01+DA
长度=3 ,命令=21,数据=1 , 1 ,校验和=DA
这个 校验和 DA 是怎么算出来的?
用Java如何实现啊?
急急急急急急啊!在线等,各位高手请指教啊
Length 1 长度,COM+ Data 字节数
COM 1 命令码
Data x 数据,与命令相关
Check 1 校验和,Length+ COM+ Data 所有字节累加和的补码样例: 03+21+01+01+DA
长度=3 ,命令=21,数据=1 , 1 ,校验和=DA
这个 校验和 DA 是怎么算出来的?
用Java如何实现啊?
急急急急急急啊!在线等,各位高手请指教啊
?FE是怎么算出来的啊?
* d1 与 d2 进行异或运算
* @param d1
* @param d2
* @return
*/
private static byte xor(byte d1,byte d2){
int temp = d1 ^ d2;
return (byte)temp;
}
/**
* 进行异或校验
* @param data
* @return
*/
public final static byte xor(byte[] data){
return xor(data,0,data.length - 1);
}
/**
* 校验数组部分数据
* beginIndex和endIndex都是从下标为0开始
* @param data
* @param beginIndex
* @param endIndex
* @return
*/
public final static byte xor(byte[] data,int beginIndex,int endIndex){
if(null == data || data.length == 0)
return 0x00;
byte b1 = data[beginIndex];
//System.out.println("byte #" + beginIndex + " : " + data[beginIndex] + " b1 : " + b1);
for(int i = beginIndex + 1;i < endIndex + 1;i++){
b1 = xor(b1,data[i]);
//System.out.println("byte #" + i + " : " + data[i] + " b1 : " + b1);
}
return b1;
}
//将你的数据转成一个Byte[]之后 就OK