解码Spaceball 5000轴——如何以非标准方式将两个字节转换为int

问题描述 投票:0回答:0

我正在尝试解码来自旧串行 Spaceball 5000 的串行数据包,尽管进行了搜索,但我找不到可靠的代码段来翻译我得到的数据(是的,我已经查看了表示5000 使用麦哲伦协议,但在我的麦哲伦上运行的相同代码由于某种原因在这里不起作用)。

如果有人知道该协议,那就太好了,但如果不知道,我可以报告“零”似乎是“0xe0 0x80”(0b11100000 0b10000000)

关注第一个字节,较低的半字节看起来正在稳步增加,但较高的半字节......很奇怪,几乎就像顶部两位是底部位的奇偶校验:

    # a1 1010 0001
    # a2 1010 0010
    # 63 0110 0011 
    # a4 1010 0100
    # 65 0110 0101
    # 66 0110 0110

将轴推向另一个方向,我再次看到下半字节减少,而顶部正在做一些奇怪的事情:

    # 5f 0101 1111
    # 9e 1001 1110
    # 9d 1001 1101
    # dc 1101 1100
    # 9b 1001 1011
    # 5a 0101 1010

如果其余位的计数为偶数,则几乎就像前两位为“10”,如果其余位的计数为奇数,则前两位为“01”,至少在第一组中......第二,这并不完全正确。

每对的第二个字节具有类似的奇数级数,但变化如此之快,我无法很好地阅读它。

这是任何人都熟悉的某种非标准编码吗?或者有人有处理此编码的 Spaceball 5000 代码的正确副本吗?

serial-port bit-manipulation input-devices
© www.soinside.com 2019 - 2024. All rights reserved.