Android 3.1+ USB作为虚拟COM端口

时间:2012-02-16 12:22:56

标签: android usb serial-port

我有第三方USB设备,当插入Windows机器时,被识别为串行设备并分配给COM 4端口。我可以像使用通过串行端口连接的设备一样与设备通信。例如,我可以通过USB连接将“abc”串行写入设备。

我一直在寻找一种在Android中做类似事情的方法。如果我尝试使用Usb Host方法,并使用UsbManager打开UsbDevice,我可以得到一个带有2个端点的接口。我尝试使用UsbDeviceConnection中的方法发送控制消息,但该方法为所有内容返回-1(虽然我不知道该方法的参数应该使用什么)。

有没有办法让我可以写入的OutputStream将字节发送到USB设备?现在我正在重新编译内核以包含虚拟COM端口驱动程序并编写一些本机代码以便能够执行此操作。

谢谢!

编辑:我正在使用FTDI串口转USB转换器电路。这与Android兼容吗?

4 个答案:

答案 0 :(得分:1)

如果设备中的linux内核支持FTDI,则可以将此设备作为普通COM端口访问。它的名称类似于/dev/ttyUSB0

如果您的内核不支持此类设备,您可以使用UsbHost接口编写自己的驱动程序。检查内核的FTDI驱动程序源代码以获取指南。

答案 1 :(得分:1)

您可以使用第三方驱动程序,

来自SlickDevLabs的这个驱动程序工作得很好,但是花了你100美元。

http://slickdevlabs.com/slick-usb-2-serial-library/

答案 2 :(得分:0)

如果您不介意生根手机并写一些C,可以使用Android驱动程序在Android中与FTDI进行通信:

http://www.ftdichip.com/Drivers/D2XX.htm

有一个libftd2xx-jni.so在那里你可以链接你的C代码 - 我已经测试了它并且它可以工作。

答案 3 :(得分:0)

生根设备在一般情况下是强烈推荐的,因为我可以为我的设备执行此操作,但我不能为公共应用程序执行此操作,该应用程序在Android市场上发布。在这种情况下,我认为controlTransfer()是处理它的唯一方法。