1

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

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

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

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

4

2 回答 2

3

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

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

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

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

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

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

于 2011-08-11T11:02:55.720 回答
0

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

于 2012-10-16T14:32:29.787 回答