我正在为NewTek LiveControl LC-11编写OS X驱动程序,如此处所示。
newtek.com/addons/livecontrol.php
在我的逆向工程过程中,我发现它正在使用串行到USB转换器,并且当按下按钮或模拟值改变时,它与十六进制输出通信。使用此输出我已经能够插入每个按钮,数字旋钮和模拟滑块,但目前仍然在解释两个模拟操纵杆和控制背光LED。 这是各个位置的操纵杆输出值表。
(很抱歉,我无法嵌入图像,但是因为我刚刚注册,所以堆栈溢出不会让我。)
Left Center Right
Top ^529DC ^587FF ^5D6DA
Center ^50883 ^58181 ^5F280
Bottom ^51E2F ^57C00 ^5BC1F
或
http://i28.tinypic.com/217vbr.png
我认为'^'是某种标记(其他一些按钮的代码以'〜'开头,而某些发布事件除了来自消息的'\ r'之外没有任何标记之前我完全没有在这些标记中解释任何模式,但我认为它不一定重要。)我知道每个操纵杆都有自己独特的输出值范围。如果有人能对这个谜团有所了解,我们将不胜感激。 :d
答案 0 :(得分:2)
有趣的谜题!
第一个(十六进制)数字总是5.让我们忽略那一个。 (也许它是操纵杆的标识符?)
左列中的第二个和第三个低(29,08,1E)。它们位于中间柱(87,81,7C)的一半范围内。它们在右栏(D6,F2,BC)中很大。所以这必须是X坐标。
顶行的最后两位数字很大(DC,FF,DA)。中间行的最后两个是范围的一半(83,81,80)。底行的最后两个是低(2F,00,1F)。所以这显然是Y坐标。从外部两个值远离极端的方式来判断,我猜测操纵杆在一个圆圈中移动(而不是方形)?
长话短说,格式似乎是:
^5xxyy
这里,xx
是描述X位置的一个字节(以十六进制表示法写入),左边是0,中心是80,右边是FF。类似地,yy
是Y位置,底部是0,中心是80,顶部是FF。
答案 1 :(得分:1)
看起来数据包以两个字节开头:^ 5后跟四个十六进制数字,代表两个字节。像这样:
^5 left/right up/down
单独查看数字:
居中顶部和底部:
left: ^5 08(8) dont_care
center: ^5 81(129) dont_care
right: ^5 F2(242) dont_care
左右中心:
top: ^5 dont_care FF(255)
center: ^5 dont_care 81(129)
bottom: ^5 dont_care 00(0)
所以这意味着理想情况下,操纵杆的极左或底部值应为0,极端顶部或右侧的值应为255(0xFF)。
当然,物理上操纵杆看起来向右偏移一位(129而不是128)并且无法达到左右的最大值(8和242而不是0和255)。 / p>