解码转子编码器报告



我正在对控制台的串行协议进行逆向工程,这一直相对简单,直到我解码由一个小旋钮和一个较大的外旋钮组成的频率控制的报告。

硬件有两个旋转编码器,用于驱动位置事件报告。

控制台使用串行 ack/nak 协议,该协议以具有以下属性的数据包格式连续流式传输报告:

  1. 前导字节是一个0xA5

  2. 有效负载数据字节值不超过 0x7F 值,允许零。

  3. 校验和是通过对有效负载字节进行异或运算来计算的。
  4. 重置控制台后,小旋钮每单击二十次,输出就会重复一次。
  5. 重置控制台后,输出每十次点击大旋钮重复一次。
  6. 输出数据根据另一个旋钮的位置而变化,因此报告适用于两个旋钮。
  7. 逆时针单击同一旋钮,返回上一个事件报告。
  8. 事件报告 ID 值为 0x0C。
  9. 在其他类型的事件报告中,第三个字节是第二个字节的溢出。

控制台重置后仅使用小旋钮:

0C 0C 5B//索引 00 0C 11 5B//索引 01 0C 16 5B//索引 02 0C 1B 5B//索引 03 0C 20 5B//索引 04 0C 25 5B//索引 05 0C 2A 5B//索引 06 0C 2F 5B//索引 07 0C 50 5A//索引 08 0C 55 5A//索引 09 0C 5A 5A//索引 10 0C 5F 5A//索引









11 0C


64 5A//索引 12 0C 69 5A//索引
13 0C 6E 5A//索引 14
0C 73 5A//索引 15
0C 78 5A//索引 16
0C 7D 5A//索引 17 0C 02 5B//索引 18
0C 07
5B//索引 19

主机复位后的大旋钮:

0C 0C 5B//索引 00 0C 70 5B//索引 01 0C 6C 54//索引 02 0C 50 55//索引 03 0C 34 56//索引 04 0C 18 57//索引 05 0C 7C 57//索引 06 0C 60 58//索引 07 0C 44 59//索引 080C


28
5A//索引 09




控制台复位,然后首先逆时针旋转大小旋钮一个位置。然后将大旋钮顺时针旋转一个位置,然后旋转小旋钮。

大旋钮 - 小旋钮 0C 28 5A - 0C 23 5A//索引 -1 逆时针旋转一个位置 0C 07 5B - 0C 0C 5B//索引 00 0C 70 5B - 0C 75 5B//索引 01 0C 71 54 - 0C 76 54//索引 02 0C 5A 55 - 0C 5F 55//索引 03 0C 43 56 - 0C 48 56//索引 04 0C 2C 57 - 0C 31 57//索引 05 0C 15 58 - 0C 1A 58/







/索引 06
0C 7E 58 -0C 03 59//索引 07 0C 67 59 - 0C 08 59//索引 08 0C 6C 59 - 0C 71 59//索引 09 0C 55 5A - 0C 5A 5A//索引 10 0C 3E 5B - 0C 43 5B//索引 11 0C 3F 54 - 0C 44 54//索引 12 0C 28 55 - 0C 2D 55//索引 13 0C 11 56 - 0C 16 56//索引 14 0C 7A 56 - 0C







7F 56//索引 15 0C
63 57 - 0C 68 57//索引 16 0C 4C 58 - 0C 51 58//索引 17 0C 35 59 - 0C 3A 59//索引 18 0C 1E 5A - 0C 23 5A//索引 19 0C 07 5B - 0C 0C 5B//索引 20 0C 70 5B - 0C 75 5B//索引 21 0C 71 54 - 0C 76 54//索引 22 0C 5A 55 - 0C 5F 55//索引 23 0C 43 56 - 0C 48 56//索引 24 0C 2C








57 - 0C 31 57//索引 25
0C15 58 - 0C 1A 58//索引 26 0C 7E 58 - 0C 03 59//索引 27 0C 67 59 - 0C 08 59//索引 28 0C 6C 59 - 0C 71 59//索引 29 0C 55 5A - 0C 5A 5A//索引 30 0C 3E 5B - 0C 43 5B//索引 31 0C 3F 54 - 0C 44 54//索引 32 0C 28 55 - 0C


2D 55//索引 33 0C 11 56 - 0C 16 56/




/索引 34 0C
7A 56 - 0C7F 56//索引 35 0C 63 57 - 0C 68 57//索引 36
0C 4C 58 - 0C 51 58//索引 37 0C 35
59 - 0C 3A 59//索引 38
0C 1E 5A - 0C 23 5A//索引 39
0C 07
5B - 0C 0C 5B//索引 40

好的想通了。

它有助于将结果解码为十进制值,此时模式就位了。

由于有效载荷值翻转0x7f,要考虑的旋转器值有点奇怪。

最新更新