Android 3.1+ USB как виртуальный COM-порт - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть стороннее USB-устройство, которое при подключении к машине с Windows распознается как последовательное устройство и назначается порту COM 4. Я могу общаться с устройством так же, как с устройством, подключенным через последовательный порт. Например, я могу записать «abc» последовательно на устройство через USB-соединение.

Я искал способ сделать подобное в Android. Если я попробую метод Usb Host и использую UsbManager, чтобы открыть UsbDevice, я смогу получить один интерфейс с двумя конечными точками. Я попытался отправить управляющие сообщения, используя метод из UsbDeviceConnection, но метод возвращает -1 для всего (хотя я не знаю, что мне следует использовать для параметров этого метода).

Есть ли способ получить OutputStream, в который я могу записать, который будет отправлять байты на USB-устройство? Сейчас я смотрю на перекомпиляцию ядра, чтобы включить драйвер виртуального COM-порта, и пишу некоторый нативный код, чтобы сделать это.

Спасибо!

Редактировать: Я использую схему конвертера FTDI serial to USB. Совместимо ли это с Android?

Ответы [ 4 ]

1 голос
/ 05 декабря 2012

Для этой цели вы можете использовать драйверы сторонних производителей,

этот драйвер от SlickDevLabs работает очень хорошо, но стоит вам 100 $.

http://slickdevlabs.com/slick-usb-2-serial-library/

1 голос
/ 16 февраля 2012

Если ядро ​​Linux на вашем устройстве поддерживает FTDI, вы можете получить доступ к этому устройству как к обычному COM-порту. Будет названо что-то вроде /dev/ttyUSB0.

Если ваше ядро ​​не поддерживает устройства такого типа, вы можете написать свой собственный драйвер, используя интерфейсы UsbHost. Проверьте исходный код драйвера FTDI для ядра.

0 голосов
/ 26 марта 2012

В большинстве случаев рутирование устройства настоятельно не рекомендуется, поскольку я могу сделать это для своего устройства, но не могу сделать это для общедоступного приложения, которое распространяется на рынке Android.В этом случае я думаю, что controlTransfer () - единственный способ справиться с этим.

0 голосов
/ 07 марта 2012

Если вы не возражаете против рутирования телефона и написания некоторого C, вы можете общаться с FTDI в Android с помощью драйвера Android здесь:

http://www.ftdichip.com/Drivers/D2XX.htm

Там есть libftd2xx-jni.so, который вы можете связать с вашим кодом C - я протестировал его, и он работает.

...