Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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

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

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

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

Я сделал это. Тебе нужно: 1. Закрепите устройство.

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

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

Ответ 8

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

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

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

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

Удачи!