关于Java:在Android中使用串行端口RS-232?

using serial port RS-232 in android?

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

1- Android设备为:具有Android 2.2和USB主机模式的Archos 3.2。

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

3- usb->串行短电缆。

您能告诉我我可能会遇到的问题吗?


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

您仍然可能需要重建内核,并可能需要为您的环境重新编译共享库。但这应该可以帮助您入门。


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

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

长期的Linux内核已经支持

。我已经使用了它,并且效果很好,所以我建议您坚持使用使用该芯片的USB <->串行设备。

除此之外,使用udev时,这些设备通常显示为/ dev / ttyUSB#。我不知道这在Android设备上是如何发生的,因此您需要弄清楚这一点。

最后,您将需要构建RxTx本机代码。这段代码非常繁琐-我在使用相当现代的Angstrom构建它时遇到了问题,而且我根本没有尝试交叉编译。


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

无论如何,如果您的手机确实支持USB主机模式,则必须使用另一种方法来访问您的串行端口/设备。毕竟,向后兼容性通常可以确保通过USB电缆获得某种形式的FAX,电话或外部调制解调器支持。还存在抖动,其中可能还包含一些虚拟串行设备...

这里有一些教程。

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


与常规PC不同,大多数android设备的常规内核都带有最少的编译模块。您需要使用启用的USB到串行转换器的驱动程序重新编译内核。运气取决于您使用的特定设备。许多厂商通过不提供内核源代码而违反了GPL。某些制造商,例如配备Droid 2的摩托罗拉,需要签名内核。这使得无法在设备上加载自定义内核。

此外,尽管许多设备都具有USB主机模式,但您仍必须跳过箍以切换设备模式。例如,Motrola droid需要在打开电源以切换到主机模式之前,将特殊的加密狗插入USB端口。

这里有一些链接可以帮助您解释需要做的事情:

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

  • " Motorola Droid上的USB主机模式",http://www.tombom.co.uk/blog/?p = 124。


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

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

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


    可能与您所寻找的不完全相同,但是此说明可能会为您指明正确的方向


    我已经做到了。
    你需要:
    1.根设备。

  • 为将要使用的特定USB芯片组创建自己的模块:为Android构建内核模块

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


  • 您首先需要做的是将数位板生根,以便获得对串行端口的读/写访问。

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

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

    我还使用了Archos Tablet,将我的设备连接到" / dev / ttyACM0"。

    祝你好运!