
안드로이드 개발 키트(ADT)의 Example을 보면 USB쪽 예제로 USB Missile Launcher 예제가 나옵니다. 현재 아마존에서 구입할 수 있는 모델 중 Dream Cheeky 모델은 Thunder가 들어가는 사진의 모델입니다.
하지만, 안드로이드 앱을 올려서 연결해 보면, 아무 반응이 없습니다.
결론적으로 2가지 문제가 있습니다.
- USB 장치의 종류를 인식하게 해주는 Vendor ID와 Product ID가 바뀌어서(즉, USB device attach 인텐트를 인식할 수 없어서) MissileLauncherActivity가 자동으로 로딩이 안됩니다.
- USB HID의 Interrupt 방식으로 명령이 전송되는데, 예제와 달리 Thunder는 2 bytes로 명령이 이루어져 있습니다. 그러므로, device_filter.xml을 수정해주었다 해도 동작이 안됩니다(다만, 꼽았을 때 한쪽 방향으로 빙~ 돌아가기는 합니다).
http://fivedots.coe.psu.ac.th/~ad/jg/?? 를 들어가서 missile로 찾아보면, USB 명령어를 리버스 엔지니어링하는 관련 기술 문서를 찾을 수 있습니다.
- 유감스럽게도 USBTrace는 더 이상 다운로드가 안되는 것 같습니다. 홈페이지가 접속이 안되거든요.~ 몇 개월 전만해도 되었는데...
어쨌든 이 미사일 발사대를 갖고 다양한 언어로 공부를 해볼 수 있고, 영상 인식에 관한 프로젝트도 연결되어 있음을 알 수가 있습니다. USB HID장치에 대한 이해를 하는 부분은 장치 제어 등의 약간 펌웨어 쪽과 가까운 부분도 있고 해서 흥미롭습니다.
요점은, MissileLauncherActivity.java에서 아래 부분을 수정하시고,
byte[] message = new byte[2]; // changed 2 from 1
message[0] = 0×02; // added
message[1] = (byte)control; // moved from message[0]
device_filter.xml에서 다음을 추가하세요.
<!– vendor and product ID for Dream Cheeky Thunder USB Missle Launcher –>
<usb-device vendor-id=”8483″ product-id=”4112″ />
그러면 잘 제어가 됩니다^^
덧글
근데 저거 미사일 발사 되는 건가요???
귀엽네요 ㅋ