Serial port 黑盒串行协议的逆向工程

Serial port 黑盒串行协议的逆向工程,serial-port,driver,reverse-engineering,device-driver,Serial Port,Driver,Reverse Engineering,Device Driver,我目前正在为NewTek LiveControl LC-11编写OS X驱动程序,如图所示 newtek.com/addons/livecontrol.php 在我的逆向工程过程中,我发现它使用串行到USB转换器,当按下按钮或模拟值改变时,它与十六进制输出进行通信。使用这个输出,我已经能够对每个按钮、数字旋钮和模拟滑块进行交互,但目前我仍停留在解释两个模拟操纵杆和控制背光LED上。 以下是操纵手柄在不同位置的输出值表 (很抱歉,我无法嵌入图像,但堆栈溢出不允许我嵌入,因为我刚刚注册。) 或 我

我目前正在为NewTek LiveControl LC-11编写OS X驱动程序,如图所示

newtek.com/addons/livecontrol.php

在我的逆向工程过程中,我发现它使用串行到USB转换器,当按下按钮或模拟值改变时,它与十六进制输出进行通信。使用这个输出,我已经能够对每个按钮、数字旋钮和模拟滑块进行交互,但目前我仍停留在解释两个模拟操纵杆和控制背光LED上。 以下是操纵手柄在不同位置的输出值表

(很抱歉,我无法嵌入图像,但堆栈溢出不允许我嵌入,因为我刚刚注册。)

我认为“^”是某种标记(其他一些按钮的代码以“~”开头,一些发布事件除了之前消息中的“\r”之外没有任何标记。我完全无法解释这些标记中的任何模式,但我认为这并不一定重要。)我知道每个操纵杆都有自己独特的输出值范围。如果有人能解开这个谜,我们将不胜感激有趣的谜题

第一个(十六进制)数字始终为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。

看起来数据包以两个字节开始:^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)。

!这听起来很正确,我将实现它,并在它工作时发布回这里。谢谢你的帮助!:DI能够实现我的自定义驱动程序!谢谢你的帮助!:我知道这个问题很老了。但我正在为NewTek LiveControl LC-11搜索OS X驱动程序。你完成了吗?它工作了吗?
top:     ^5 dont_care  FF(255)
center:  ^5 dont_care  81(129)
bottom:  ^5 dont_care  00(0)