Используя последовательный порт 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.
Не могли бы вы объяснить мне, где я могу столкнуться с проблемами?
Ответы
Ответ 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. Закрепите устройство.
-
Создайте свой собственный модуль для конкретного USB-чисса, который вы собираетесь использовать: Создание модуля ядра для Android
-
Я рекомендую использовать портированную библиотеку 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".
Удачи!