2010-08-01 89 views
3

我正在为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

+1

我知道这个问题很安静。但是我正在为NewTek LiveControl LC-11寻找OS X驱动程序。你完成了它,它在工作吗? – 2014-01-24 19:55:21

回答

2

有趣的谜题!

第一个(十六进制)数字总是5.让我们忽略那一个。 (也许它是操纵杆的标识符?)

第二个和第三个在左栏低(29,08,1E)。他们在中间列(87,81,7C)范围的一半。而且它们在右栏中很大(D6,F2,BC)。所以这必须是X坐标。

第一行的最后两位数字很大(DC,FF,DA)。中间行的最后两个在范围的一半(83,81,80)。最后一行的最后两位是低位(2F,00,1F)。所以这显然是Y坐标。从外部两个值远离极端的方式来看,我猜测操纵杆是围绕一个圆圈(而不是正方形)移动?

长话短说,格式似乎是:

^5xxyy 

这里,xx是(用16进制)描述的X位置,以左为0,中心为80,右为FF一个字节。同样,yy是Y位置,底部是0,中心是80,顶部是FF。

+0

太棒了!这听起来是正确的,我会实施它,并在我得到它的时候回到这里。谢谢您的帮助! :D – MadMod 2010-08-01 16:33:28

+0

很好的答案... – Mark 2010-08-01 21:25:40

+0

我能够实现我的自定义驱动程序!感谢您的帮助! :d – MadMod 2010-08-03 06:27:57

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,极值顶或r值为255(0xFF)飞行。

当然,操纵杆在物理上看起来偏右右一位(129而不是128),不能达到左右最大值(8和242而不是0和255)。