Можно импортировать javax.comm на Android? хочу открыть серийное устройство

У меня есть рутированное устройство Android с подключенным последовательным USB-устройством. Устройство отображается как "/dev/ttyUSB5"

Я хотел бы открыть последовательный порт и читать / писать с него. Прежде всего... в Android, он даже позволит мне читать / открывать /dev/ttyUSB5? Или в приложении мне будет запрещено касаться /dev? Если я не могу ничего трогать в /dev, то все это не имеет значения.

Однако, если я могу, то мне интересно, можно ли импортировать javax.comm, чтобы я мог общаться с последовательным устройством.

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

2 ответа

в Android это даже позволит мне читать / открывать /dev/ttyUSB5? Или в приложении мне будет запрещено касаться /dev?

Я не уверен, будут ли права на это иметь обычное приложение SDK. Приложение, работающее с правами root, будет работать, если у вас есть рутированное устройство.

Однако, если я могу, то мне интересно, можно ли импортировать javax.comm, чтобы я мог общаться с последовательным устройством.

Не напрямую. Инструменты сборки не хотят, чтобы вы импортировали java.* а также javax.* классы. И я не знаю, как быстро javax.comm падает в нативный код, даже на стандартной Java.

Что вы можете попробовать, так это посмотреть, есть ли в Apache Harmony реализация javax.commи посмотрите на это. Если кажется, что это соответствует вашим потребностям, вы можете скопировать соответствующие классы, а затем реорганизовать их в новый пакет (например, org.gynchis.comm).

Тем не менее, лучший общий ответ, если это возможно, это попытаться придерживаться ADK и новых классов USB, добавленных в API Level 10. Я не специалист по аппаратному обеспечению, поэтому я понятия не имею, отвечает ли то, что там, вашим потребностям. или если у вас есть устройство с достаточно новой версией Android для такой поддержки.

Да, вы можете использовать /dev/tty* для доступа к вашему последовательному порту. Проверьте это: serialport-api. Я проверил это, но, конечно, вам нужно иметь /dev/tty* с правильными правами. Это находится в файле init.rc (chmod 0666 /dev/ttyUSB5). Если вы работаете во встроенной системе, это легко исправить. Если вы хотите поработать над "любым готовым планшетом на рынке", это более сложно. Я верю, что единственный способ - это укорениться. Единственным недостатком этого пакета является то, что он использует поток, который постоянно опрашивает входной поток, что заставляет меня поверить, что он не очень эффективен по отношению к процессору / батарее. Я ищу способ просто получить что-то, что разбудит мою нить, когда данные будут доступны на приемной стороне.

Другие вопросы по тегам