Можно импортировать 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). Если вы работаете во встроенной системе, это легко исправить. Если вы хотите поработать над "любым готовым планшетом на рынке", это более сложно. Я верю, что единственный способ - это укорениться. Единственным недостатком этого пакета является то, что он использует поток, который постоянно опрашивает входной поток, что заставляет меня поверить, что он не очень эффективен по отношению к процессору / батарее. Я ищу способ просто получить что-то, что разбудит мою нить, когда данные будут доступны на приемной стороне.