我有第三方USB设备,当插入Windows机器时,被识别为串行设备并分配给COM 4端口。我可以像使用通过串行端口连接的设备一样与设备通信。例如,我可以通过USB连接将“abc”串行写入设备。
我一直在寻找一种在Android中做类似事情的方法。如果我尝试使用Usb Host方法,并使用UsbManager打开UsbDevice,我可以得到一个带有2个端点的接口。我尝试使用UsbDeviceConnection中的方法发送控制消息,但该方法为所有内容返回-1(虽然我不知道该方法的参数应该使用什么)。
有没有办法让我可以写入的OutputStream将字节发送到USB设备?现在我正在重新编译内核以包含虚拟COM端口驱动程序并编写一些本机代码以便能够执行此操作。
谢谢!
编辑:我正在使用FTDI串口转USB转换器电路。这与Android兼容吗?
答案 0 :(得分:1)
如果设备中的linux内核支持FTDI,则可以将此设备作为普通COM端口访问。它的名称类似于/dev/ttyUSB0
。
如果您的内核不支持此类设备,您可以使用UsbHost接口编写自己的驱动程序。检查内核的FTDI驱动程序源代码以获取指南。
答案 1 :(得分:1)
您可以使用第三方驱动程序,
来自SlickDevLabs的这个驱动程序工作得很好,但是花了你100美元。
答案 2 :(得分:0)
如果您不介意生根手机并写一些C,可以使用Android驱动程序在Android中与FTDI进行通信:
http://www.ftdichip.com/Drivers/D2XX.htm
有一个libftd2xx-jni.so在那里你可以链接你的C代码 - 我已经测试了它并且它可以工作。
答案 3 :(得分:0)
生根设备在一般情况下是强烈推荐的,因为我可以为我的设备执行此操作,但我不能为公共应用程序执行此操作,该应用程序在Android市场上发布。在这种情况下,我认为controlTransfer()是处理它的唯一方法。