大家,早安,
我正在为 OpenGTS(concox gt06n 设备)编写设备通信服务器。处理完登录包后,我没有收到 GPS 数据包。我认为问题出在我的 CRC 计算上,任何人都可以帮助确保我的 CRC 计算是正确的。
// 这是来自服务器的响应,使用来自设备的数据处理
if(b[3]==0x01 || b[3]==0x13){
tdata[0]=0x05;
tdata[1]=b[3];
tdata[2]=b[b[2]-6+5];
tdata[3]=b[b[2]-5+5];
// recieved packet
// 78 78 0D 01 03 53 70 10 97 16 60 58 00 01 20 FE 0D 0A
// response from server
// 78 78 05 01 00 01 D9 DC 0D 0A
`
crcc.set(tdata);
short x=crcc.get();
fdata[0]=0x78;
fdata[1]=0x78;
fdata[2]=0x05;
fdata[3]=b[3];
fdata[4]=b[b[2]-6+5];
fdata[5]=b[b[2]-5+5];
fdata[6]=(byte)((x >> 8) & 0xff);
fdata[7]=(byte)(x & 0xff);
fdata[8]=0x0d;
fdata[9]=0x0a;
// 下面你找到 CRC 计算表
public short get() {
short c;
int y;
y=~crc;
c = (short)y;
return c;
}
public void set(byte[] bytes) {
crc = 0xffff;
for (byte b : bytes) {
crc = (crc >> 8) ^ table[(crc ^ b) & 0xff];
}
}