2010-08-01 2 views
3

현재 NewTek LiveControl LC-11 용 OS X 드라이버를 작성하고 있습니다.블랙 박스 직렬 프로토콜 리버스 엔지니어링

내 역 설계 과정에서 newtek.com/addons/livecontrol.php

I는 USB 컨버터 직렬를 사용하고 진수 버튼이 눌려 출력하거나 통신하는 것을 발견 아날로그 값이 변경됩니다. 이 출력을 사용하여 모든 버튼, 디지털 노브 및 아날로그 슬라이더를 인터페이싱 할 수 있었지만 현재 두 개의 아날로그 조이스틱을 해석하고 백라이트 LED를 제어해야합니다. 다음은 다양한 위치에서 조이스틱 출력 값의 표입니다.

(I 이미지를 포함하지만, 난 그냥 등록 이후 오버 플로우가 나를 못하게 스택 수 없음을 죄송합니다.)

  Left Center Right 
Top  ^529DC ^587FF ^5D6DA 
Center ^50883 ^58181 ^5F280 
Bottom ^51E2F ^57C00 ^5BC1F 

또는

http://i28.tinypic.com/217vbr.png

나는 있다고 생각 '^'는 어떤 종류의 마커입니다 (다른 버튼 중 일부는'~ '로 시작하는 코드를 가지고 있으며 릴리스 이벤트 중 일부는 이전 메시지의'\ r '이외의 마커가 없습니다.) 해석 할 수있었습니다. 이 표식에는 전혀 무늬가 없지만 필연적이라고 나는 생각하지 않는다. ily 중요합니다.) 각 조이스틱에는 고유 한 출력 값 범위가 있습니다. 누군가가이 수수께끼에 대해 밝힐 수 있다면 크게 감사하겠습니다. : D

+1

나는이 질문이 조용하다는 것을 알고있다. 하지만 저는 NewTek LiveControl LC-11 용 OS X 드라이버를 찾고 있습니다. 당신이 그것을 끝내고 그것을 작동 했습니까? –

답변

2

재미있는 퍼즐!

첫 번째 (16 진수) 숫자는 항상 5입니다. (아마도 조이스틱의 식별자일까요?)

두 번째와 세 번째는 왼쪽 열 (29, 08, 1E)이 낮습니다. 중간 쯤 (87, 81, 7C)의 절반 정도입니다. 그리고 그들은 오른쪽 칸에 있습니다 (D6, F2, BC). 그래서 이것은 X 좌표 여야합니다.

맨 위 줄의 마지막 두 자리 숫자는 큽니다 (DC, FF, DA). 중간 행의 마지막 두 개는 범위의 중간 (83, 81, 80)입니다. 하단 행의 마지막 두 자리는 낮습니다 (2F, 00, 1F). 이것은 분명히 Y 좌표입니다. 바깥 쪽의 두 값이 극한 값에서 멀어지는 방식으로 판단하면 조이스틱이 원으로 움직이는 것을 볼 수 있습니다 (정사각형과 반대). xx 왼쪽이 FF 80 인 0을 중심 인 오른쪽 인 상태의 X 위치를 기술 (16 진수 표기로 작성된) 1 바이트 여기서

^5xxyy 

:

는 는

해서 긴 이야기 형식 보인다 . 유사하게, yy은 Y 위치이며, 하단은 0이고, 중심은 80이며, 상단은 FF이다.

+0

굉장! 그 말이 맞아, 내가 그것을 구현하고 그것을 작동시킬 때 다시 여기에 게시됩니다. 도와 주셔서 감사합니다! : D – MadMod

+0

좋은 답변 ... – Mark

+0

나는 내 사용자 정의 드라이버를 구현할 수있었습니다! 도와 줘서 고마워! :디 – MadMod

1

패킷이 2 바이트로 시작하는 것처럼 보입니다.^5 다음에 2 바이트를 나타내는 네 개의 16 진수가옵니다.분리의 숫자에서

^5 left/right up/down 

봐 : : 이것처럼

을 중심으로 상단과 하단 :

top:  ^5 dont_care FF(255) 
center: ^5 dont_care 81(129) 
bottom: ^5 dont_care 00(0) 

그래서이 이상적 것을 의미한다 :

left: ^5 08(8) dont_care 
center: ^5 81(129) dont_care 
right: ^5 F2(242) dont_care 

왼쪽과 오른쪽을 중심으로 , 조이스틱은 극단적 인 왼쪽 또는 아래쪽에는 0 값을, 극단적 인 위쪽 또는 r에는 255 (0xFF) 값을 가져야합니다 ight.

물론 물리적으로 조이스틱은 1 비트 (128 대신 129)만큼 오른쪽으로 옵셋되어 보이며 왼쪽과 오른쪽의 최대 값 (0과 255 대신 8과 242)에 도달 할 수 없습니다.

관련 문제