일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- soundpool
- 안드로이드 푸쉬
- 자동 생성
- xe
- PHP
- android 효과음
- php 취약점
- 폼메일
- html5
- 우분투
- 안드로이드 gcm
- chart.js
- WebView
- 자바스크립트
- C# IO
- 안드로이드 푸시
- Android
- UML
- 안드로이드
- curl
- php 시큐어코딩
- 설치
- not working
- C#
- mysql
- Mail Server
- FCM
- javascript
- roundcube
- dovecot
- Today
- Total
그러냐
안드로이드와 PC간의 USB 통신 (2) 본문
안드로이드와 PC간의 USB 통신 (2)
안드로이드와 PC간의 USB 통신 (1) 에서 이어집니다.
1편을 유용하게 보셨다는 분이 계셔서 연재를 계속 하려고 했는데, 폰을 업데이트 한 이후로 USB 드라이버가 작동하지 않습니다.
드라이버 문제를 해결 할 때 까지 연재는 잠정 중단(…) 입니다. 대신 대략적인 내용은 이 글 하단을 참조해 주세요.
추가: 누가 LG Vu2용으로 제대로 작동하는 드라이버좀 알려주세요. LG 홈페이지에 있는 드라이버는 설치해도 작동하지 않습니다…ㅠㅠ 내가 다시는 LG 폰 쓰나 봐라…
그래도 기본적인 사항들은
Accessory Mode로 통신을 하려면 USB 케이블이 연결된 이후에 PC측에서 초기화 코드를 전송해 주어야 합니다. 전송해야 할 내용들은 AOA 1.0 Protocol 문서에서 찾아 볼 수 있습니다.
https://source.android.com/devices/accessories/aoa.html
libusb의 usb_control_msg() 함수를 사용 해 초기화 코드를 전송합니다.
초기화 코드가 전송되면 두 가지 일이 발생합니다.
- 안드로이드 장치에서는 USB 연결 모드가 MTP에서 Accessory로 변경됩니다.
- PC에서는 지금까지 연결되어 있던 USB 장치가 사라지고, 새로운 USB 장치가 연결됩니다.
Accessory Mode
안드로이드 기기의 화면 최 상단의 알림 바에 메시지가 출력되기 때문에 곧바로 알 수 있습니다.
Accessory에 연결된 App이 없다면 경고 메시지가 출력되고, 연결된 App이 존재하면 해당 App이 실행됩니다. SDK 문서를 참고해서 App을 Accessory에 연결시킬 수 있습니다.
http://developer.android.com/intl/ko/guide/topics/connectivity/usb/accessory.html
PC쪽의 처리
새 장치가 연결되면 그것을 열어서 안드로이드의 App과 통신할 수 있습니다. 기존의 장치가 각 제조사의 Vendor ID와 Product ID를 가진 것과 달리 Accessory 모드 진입 후 새로 연결되는 장치는 Google의 Vendor ID와 Product ID를 가지고 있습니다.
Google의 VID와 PID는 AOA 1.0 프로토콜 문서에 설명되어 있듯이, VID = 0x18D1, PID = 0x2D00입니다. 안드로이드 기기에 USB Debug가 활성화 되어 있을 경우(개발 중에는 항상 켜져 있겠죠?)에는 PID가 0x2D01입니다. 두 가지 장치 모두 드라이버가 등록되어 있어야 항상 올바르게 작동할 겁니다.
해당 장치를 열면 libusb의 usb_bulk_write()와 usb_bulk_read() 함수를 사용해 데이터를 주고 받을 수 있습니다.
출처 : https://medium.com/@yeongtaek.ham/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%EC%99%80-pc%EA%B0%84%EC%9D%98-usb-%ED%86%B5%EC%8B%A0-2-518af9135577
'c#' 카테고리의 다른 글
귀여운 난수 발생 프로그램 랜덤 숫자 (1) | 2022.01.06 |
---|---|
안드로이드와 PC간의 USB 통신 (1) (0) | 2019.01.02 |
c# 폴더 전체 복사 (2) | 2018.12.18 |
[WPF] Table 작성하기 (0) | 2018.12.04 |
[C#]관리자 권한 실행되는 프로그램 생성 (0) | 2017.12.06 |