在android中使用串口RS-232?

时间:2011-01-07 00:58:41

标签: java android embedded serial-port communication

我想在Android设备上使用JavaComm API类通过串口发送信号,这就是我想象的方式:

1- Android设备将是:Archos 3.2,它具有Android 2.2和USB主机模式。

2-在我的Android应用程序中包含RxTx lib包。并使用Android NDK包含RxTx本机代码。

3-一根短电缆,即usb - > serial。

你可以向我解释一下我可能遇到的问题吗?

8 个答案:

答案 0 :(得分:12)

我刚将JavaCOMM(GNU RXTX)库移植到Android。这是链接http://v-lad.org/projects/gnu.io.android/

您仍然可能需要重建内核,并可能为您的环境重新编译共享库。但这应该让你开始。

答案 1 :(得分:3)

如上所述,您需要为您拥有的任何USB< - >串口设备提供设备驱动程序。其中许多设备使用Prolific PL2303芯片:

http://www.qbik.ch/usb/devices/showdr.php?id=175

股票linux内核支持哪些,并且已经有很长一段时间了。我已经使用过它并且工作正常,所以我建议你坚持使用USB< - >使用该芯片的串行设备。

除此之外,使用udev这些设备通常显示为/ dev / ttyUSB#。 Android的情况怎么样,我不知道,所以你需要弄明白。

最后,您需要构建RxTx本机代码。这段代码相当苛刻 - 我在一个相当现代的Angstrom上构建它时遇到了问题,我根本就没有尝试交叉编译。

答案 2 :(得分:2)

与常规PC不同,Android设备的大多数库存内核都带有最少的编译模块。您需要使用已启用的USB转串口转换器驱动程序重新编译内核。运气取决于您使用的具体设备。许多制造商违反了GPL,没有提供内核源代码。像摩托罗拉和Droid 2这样的制造商需要签名内核。这使得无法在设备上加载自定义内核。

此外,虽然许多设备都有USB主机模式,但您必须跳过环路才能切换设备模式。例如,Motrola droid需要在接通电源之前将一个特殊的加密狗插入USB端口以切换到主机模式。

以下是一些解释您需要做的事情的链接:

  1. “有关Droid主机模式的更多信息,”http://www.tombom.co.uk/blog/?p=134

  2. “摩托罗拉Droid上的USB主机模式”,http://www.tombom.co.uk/blog/?p=124

答案 3 :(得分:2)

是的,在Android上使用手机端的串行设备肯定是一团糟。问题是AOS上存在的各种设备没有记录,很少与标准的Linux设备一致。因此,您永远无法确定您实际与谁交谈,某些设备,抽象层(HAL,UART,PCI等)。这是一个如何从外部USB连接的PC与串行设备(调制解调器)通信的教程。

在任何情况下,如果您的手机支持USB主机模式,则必须有另一种方式来使用它来连接您的串口/设备。毕竟,向后兼容性通常可以确保USB电缆支持某种传真,电话或外部调制解调器。还有tehtering,它也可能包含一些虚拟串行设备...

有一些here的教程。

PS。这些程序(如Vlad)和应用程序(如serial-api)的主要问题是它们对设备/端口名称以及达到(读/写)这些所需的权限做出了过于强烈的假设......

答案 4 :(得分:1)

可能不完全是你想要的,但this instructable可能会指出你正确的方向

答案 5 :(得分:1)

最大的问题可能是USB->串行适配器:

您需要USB串行驱动程序的设备驱动程序,它可能不包含在Android内核中。

另一种选择是使用类似libusb(也可能必须移植到android)和基于libusb的用户空间驱动程序。

答案 6 :(得分:0)

我做到了这一点。 你需要: 1.根设备。

  1. 为您即将使用的特定USB chiset创建自己的模块:Building kernel module for Android

  2. 我建议使用移植的usb-serial-for-android库,它已经实现了PL2303驱动程序: https://code.google.com/r/felixhaedicke-usb-serial-for-android

答案 7 :(得分:-1)

首先需要做的是使用平板电脑以获得对串口的读/写访问权。

执行此操作后,请查看Android Serial Port API。您可以下载源代码并查看其实现方式。

它有一个本机库,它为串行端口获取文件描述符,然后您可以读取和写入端口。通常,应用程序可能不会列出平板电脑上的所有可用端口。要查看设备的连接位置,请使用HostMode将其插入USB,然后在模拟器中键入“dmesg | tail”。它应该为您提供有关设备和连接端口的详细信息。

我还使用了Archos平板电脑,我的设备已连接到“/ dev / ttyACM0”。

祝你好运!