2010-08-01 93 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)。