我正在逆向工程AC遥控器。当我发送温度值(从17C到30C)时,我得到以下流。
Temperature - Binary - Hex - Decimal
17C - 00000000 - 0x00 - 0
18C - 00010000 - 0x10 - 16
19C - 00110000 - 0x30 - 48
20C - 00100000 - 0x20 - 32
21C - 01100000 - 0x60 - 96
22C - 01110000 - 0x70 - 112
23C - 01010000 - 0x50 - 80
24C - 01000000 - 0x40 - 64
25C - 11000000 - 0xc0 - 192
26C - 11010000 - 0xd0 - 208
27C - 10010000 - 0x90 - 144
28C - 10000000 - 0x80 - 128
29C - 10100000 - 0xa0 - 160
30C - 10110000 - 0xb0 - 176
他们可以用什么方法对字节中的温度数据进行编码? 有没有方法对流进行逆向工程?
看着它很明显,它们正在增加2的幂,但我无法弄清楚它背后的逻辑。
答案 0 :(得分:9)
前四位形成一个4位Gray code,因为每两个连续的位序列在一个位置上有所不同:
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1001
1000
1010
1011
[1111] (missing, probably 31C)
您的样本没有给出[17,13]范围之外发生的任何迹象。 至于为什么会使用这种模式,Wikipedia provides some examples:
格雷码用于位置编码器(线性编码器和旋转编码器),优先于直接二进制编码。这避免了当一个角度的二进制表示中的几个位发生变化时,一些位在其他位之前发生变化的误读。