我想在Android设备上使用JavaComm API类通过串口发送信号,这就是我想象的方式:
1- Android设备将是:Archos 3.2,它具有Android 2.2和USB主机模式。
2-在我的Android应用程序中包含RxTx lib包。并使用Android NDK包含RxTx本机代码。
3-一根短电缆,即usb - > serial。
你可以向我解释一下我可能遇到的问题吗?
答案 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端口以切换到主机模式。
以下是一些解释您需要做的事情的链接:
“有关Droid主机模式的更多信息,”http://www.tombom.co.uk/blog/?p=134。
“摩托罗拉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.根设备。
为您即将使用的特定USB chiset创建自己的模块:Building kernel module for Android
我建议使用移植的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”。
祝你好运!