t.amp Quadro 500 DSP - 计算校验和

逆向工程 串行通讯
2021-07-08 20:07:37

我正在尝试解码协议以控制 PA amp t.amp Quadro 500 DSP(也称为 FiveO AR4)。串行接口由 PL2303 接口提供,波特率 57600 8N1。

要在通道 1 上设置音量,我可以使用这些命令从 0h00 增加到例如 0h3F:

0120 0300 15 00000000000200 00 000000000000 75 40
0120 0300 15 00000000000200 01 000000000000 74 40
0120 0300 15 00000000000200 02 000000000000 77 40
0120 0300 15 00000000000200 03 000000000000 76 40
0120 0300 15 00000000000200 2D 000000000000 58 40
0120 0300 15 00000000000200 2E 000000000000 5B 40
0120 0300 15 00000000000200 3F 000000000000 4A 40

每隔几秒发送一次 Keepalive 命令:

0120 0300 17 00000000000E00 00 0000000000000000 7B 40

前 4 个字节是起始字节,最后一个是终止命令,0h15 是命令长度。0h2D-3F 是增益。

我没有得到的是在结束字节之前计算校验和字节。

你知道如何正确计算吗?

亲切的问候

1个回答

最终使用 dotPeek 我找到了(非常简单的)解决方案:

int crcIndex = numArray.length - 2;
buffer[crcIndex];

for (int index = 1; index < buffer.length; ++index) {
    if (index != crcIndex)
    buffer[crcIndex] ^= buffer[index];
}

基本上它的 XOR 遍历每个字节,跳过 CRC 字节本身但包括最后一个字节。

问候