首页 文章

Android 3.1 USB作为虚拟COM端口

提问于
浏览
0

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

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

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

谢谢!

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

4 回答

  • 0

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

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

  • 1

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

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

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

  • 0

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

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

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

  • 1

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

相关问题