繁体   English   中英

可以在 Android 上导入 javax.comm 吗? 想打开串口设备

[英]possible to import javax.comm on Android? want to open serial device

我有一个扎根的 Android 设备,连接了一个 USB 串行设备。 该设备显示为“/dev/ttyUSB5”

我想打开串口并从中读/写。 首先也是最重要的......在Android中,它甚至允许我读取/打开/dev/ttyUSB5吗? 或者在应用程序中我会被禁止触摸/dev吗? 如果我无法触摸 /dev 中的任何内容,那么这一切都无关紧要。

但是,如果可以,那么我想知道是否可以导入 javax.comm 以便我可以与串行设备通信。

截至目前,我可以通过生成一个打开串行端口的本机 C 应用程序来解决这个问题,然后我使用套接字读取/写入 Java 中的串行端口。 但是,最好在 Java 中完成这一切。

在 Android 内,它甚至允许我读取/打开 /dev/ttyUSB5 吗? 或者在应用程序中我会被禁止触摸/dev吗?

我不确定普通的 SDK 应用程序是否有权使用此权限。 如果您有 root 设备,则以 root 身份运行的应用程序会。

但是,如果可以,那么我想知道是否可以导入 javax.comm 以便我可以与串行设备通信。

不是直接的。 构建工具不希望您导入java.*javax.*类。 而且,我不知道javax.comm下降到本机代码的速度有多快,即使在标准 Java 上也是如此。

你可以试试看 Apache Harmony 是否有javax.comm的实现,然后看看。 如果它看起来符合您的需要,您可以复制相关类,然后将它们重构为新的 package(例如org.gynchis.comm )。

但是,如果可能的话,最好的整体答案是尝试坚持使用ADK 和 API 级别 10 中添加的新 USB 类。我不是硬件专家,所以我不知道其中的内容是否能满足您的需求,或者如果您的设备在足够新的 Android 版本上以获得该支持。

是的,您可以使用 /dev/tty* 访问您的串行端口。 看看这个: serialport-api 我对它进行了测试,但当然,您需要让您的 /dev/tty* 设置正确的权限。 这在 init.rc 文件中(chmod 0666 /dev/ttyUSB5)。 如果您在嵌入式系统中工作,则很容易修复。 如果你想在“市场上现成的任何平板电脑”上工作,那就更复杂了。 我相信唯一的办法就是扎根。 package 的唯一缺点是它似乎使用了一个不断轮询输入流的线程,这让我相信它的 CPU/电池效率不是很高。 我正在寻找一种方法来获取可以在接收端有数据时唤醒我的线程的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM