Используя последовательный порт RS-232 в android?

Я хочу отправлять сигналы через последовательный порт, используя классы JavaComm API на устройстве Android, и вот как я себе это представляю:

1- Android-устройство будет: Archos 3.2, у которого есть Android 2.2 и USB-хост.

2- включить пакет RxTx lib с моим Android-приложением. И включить RxTx собственный код с помощью Android NDK.

3- короткий кабель, который является usb -> серийным.

Не могли бы вы объяснить мне, где я могу столкнуться с проблемами?

Solutions Collecting From Web of "Используя последовательный порт RS-232 в android?"

Я просто портировал библиотеку JavaCOMM (GNU RXTX) на Android. Вот ссылка http://v-lad.org/projects/gnu.io.android/

Возможно, вам придется перестроить ядро ​​и, возможно, перекомпилировать общую библиотеку для вашей среды. Но это должно заставить вас начать.

Как отмечалось выше, вам нужно будет найти драйверы устройств для любого USB <-> последовательного устройства, которое у вас есть. Многие из этих устройств используют чип Prolific PL2303:

http://www.qbik.ch/usb/devices/showdr.php?id=175

С которым ядро ​​linux имеет поддержку и долгое время. Я использовал это, и он отлично работает, поэтому я рекомендую вам использовать USB <-> последовательные устройства, которые используют этот чип.

Кроме того, с udev эти устройства обычно отображаются как / dev / ttyUSB #. Как это происходит с Android, я не знаю, так что вам нужно это выяснить.

Наконец, вам нужно будет создать собственный код RxTx. Этот код довольно жестокий – у меня были проблемы с его построением на довольно современном Angstrom, и я не пытался перекрестно скомпилировать.

В отличие от обычных ПК большинство ядер запаса для устройств Android поставляются с минимальными скомпилированными модулями. Вам необходимо перекомпилировать ядро ​​с включенными драйверами для USB-последовательных преобразователей. Удача зависит от конкретного устройства, которое вы используете. Многие производители нарушают GPL, не предоставляя исходный код ядра. Некоторые производители, такие как Motorola с Droid 2, требуют подписанного ядра. Это делает невозможным загрузку пользовательского ядра на устройстве.

Кроме того, хотя на многих устройствах есть режим USB-хоста, вам нужно перепрыгнуть через обручи, чтобы переключить режим устройства. Например, для дроида Motrola требуется специальный ключ, который должен быть подключен к порту USB, прежде чем включать его в режим хоста.

Вот некоторые ссылки для вас, которые объясняют, что вам нужно сделать:

  1. «Подробнее о режиме хоста Droid», http://www.tombom.co.uk/blog/?p=134 .

  2. «Режим USB Host на Motorola Droid», http://www.tombom.co.uk/blog/?p=124 .

Да, это определенно беспорядок, чтобы использовать последовательные устройства со стороны телефона на Android. Проблема в том, что различные устройства, присутствующие на AOS, не документированы и редко совпадают со стандартными версиями Linux. Таким образом, вы никогда не знаете, с кем вы разговариваете, с каким-то устройством, уровнем абстракции (HAL, UART, PCI и т. Д.). Вот учебник о том, как разговаривать с последовательным устройством (модем) с внешнего USB-подключенного ПК.

В любом случае, если ваш телефон поддерживает режим USB-хоста, должен быть другой способ достичь вашего последовательного порта / устройств, используя это. В конце концов, обратная совместимость часто застраховывает от вашего USB-кабеля какой-то факс, телефонию или внешний модем. Также есть tehtering, который может также содержать некоторое виртуальное последовательное устройство …

Для некоторых из них есть учебник.

PS. Основная проблема таких программ (например, Влада) и приложений (например, serial-api) заключается в том, что они делают слишком сильные предположения в именах устройств / портов и разрешениях, необходимых для достижения (чтения / записи) этих …

Вероятно, не совсем то, что вы ищете, но этот инструктируемый может указывать вам в правильном направлении

Самая большая проблема, вероятно, в USB-> Serial Adapter:

Вам нужен драйвер устройства для USB-последовательного драйвера, который, вероятно, не включен в ядро ​​Android.

Другой вариант – использовать что-то вроде libusb (который, возможно, также нужно портировать на android) и драйвер пространства пользователя на основе libusb.

Я сделал это. Вам необходимо: 1. Корректировать устройство.

  1. Создайте свой собственный модуль для конкретного USB-чисса, который вы собираетесь использовать: Создание модуля ядра для Android

  2. Я рекомендую использовать портированную библиотеку usb-serial-for-android, в которой уже установлен драйвер PL2303: https://code.google.com/r/felixhaedicke-usb-serial-for-android

Прежде всего, вам нужно запустить этот планшет, чтобы получить доступ для чтения / записи к последовательным портам.

После этого взгляните на API последовательного порта Android . Вы можете загрузить исходный код и посмотреть, как он реализован.

Он имеет собственный lib, который получает дескриптор файла для последовательных портов, а затем вы можете читать и записывать в порты. Обычно приложение не может перечислять все доступные порты на планшете. Чтобы узнать, где подключено ваше устройство, подключите его к USB с помощью HostMode, а в эмуляторе – «dmesg | tail». Он должен предоставить вам подробную информацию об устройстве и подключенном порту.

Я также использовал планшет Archos, мое устройство было подключено к «/ dev / ttyACM0».

Удачи!