2011-05-09 137 views
5

从一年前,Is there a way to communicate with USB devices on Android?这看起来并不是一个常见的要求,但平板电脑已经发展,并且希望操作系统也是如此。
我需要从我的Curtis LT8025平板电脑运行一个简单的USB中继卡,目前运行2.1补丁。
我也是Android和Java的新手,所以比较无所作为!
不需要双向通信,只需向设备发送简单的串行命令即可。如何与Android平板电脑的USB设备进行通信?

有什么建议吗?

谢谢!
Dave

+1

的ADK发布过几天你问这个后 - http://developer.android.com/guide/topics/usb/adk.html – 2011-08-05 15:35:17

回答

2

不幸的是,目前还没有标准的API来实现与Android设备的有线通信。我以前遇到类似问题(请参阅Android: Communicating with a USB device which acts as host)。

我能够成功实施CommonsWare提供的解决方案。如果您需要更多帮助,请发表评论,我可以提供详细信息。

  • 编辑(详细信息) -

基本上,我缩小到两种可能的方案来解决这个问题:

  1. 修改了Android源本身,包括不管出于什么目的自定义驱动您需要并将其安装在平板电脑中。由于它主要基于Linux,所以如果您开发Linux的驱动程序,则可以在Android中使用它,只需稍加修改即可。这种解决方案开发起来比较简单,但如果您不自己提供平板电脑/手机,则不具有商业价值。

  2. 使您的USB设备充当主机并在设备中实现ADB驱动程序/命令集。连接后,您可以发出“adb forward”转发tcp端口,以便您可以与Android应用进行交互,并在设备和应用之间进行双向通信。

我使用了第二种方法,它完美地工作。但只有在制作USB主机设备时才是实用的。对于USB从设备,第一种方法是我重新考虑的唯一方法。

+0

@Vaayu - 是的,拜托了!我会很感激你可以提供的任何指针。该平板电脑具有可拆卸的USB(和以太网)集线器。我使用它作为闪存驱动器,所以假设我有一些驱动程序级别的支持,如果我能找到它的话。戴夫 – DBell 2011-05-09 14:21:29

+1

复制了/proc/config.gz关闭设备和gzip -d,然后再看看吧(如果有的话)提供了哪些超越大容量存储USB设备驱动程序去与平板电脑的出货USB主机功能。也看看/ lib/modules/whatever。对于不支持的设备,您必须编译一个驱动程序 - 如果您拥有根和内核源,则这是合理的。如果平板电脑支持USB键盘,并且您拥有root权限,也许您可​​以假装成键盘然后通过键盘LED指示器进行SPI对话来完成某些操作,从而避免编译驱动程序? – 2011-05-09 17:59:02

+0

@chris - 是否可以直接与\ dev端口交谈?我的平板电脑实现了\ usb1 \ usb2 \ usbdev1.1 \ usbdev1.3和\ usbdev2.1 – DBell 2011-05-09 21:39:26

2

如果您使用的是串行设备,并且能够通过本机串口与其通信,则可能需要考虑IOIO(有关更多详细信息,请参见http://ytai-mer.blogspot.com/2011/04/meet-ioio-io-for-android.html)。

+1

他们似乎正在使用我提到的第二种方法。好主意;包装一个嵌入了ADB的主机模块。看起来很好打磨。非常好,如果你不想包含你自己的USB主机模块。 – Vaayu 2011-05-10 01:01:25

0

我正在构建一个Android自定义系统。我确实连接了USB上的多个设备。我期待在OTG端口上连接一台设备,该设备通常会从您使用ADB的平板电脑中获取。我放弃。这是一场噩梦。我不认为你可以在目前是OTG USB的设备上使用ADB,并希望能够使用其他设备,如USB转串口转换器。这意味着当您想将端口用作主机时,您会丢失整个ADB工具链进行调试。最重要的是,用于平板电脑的USB OTG驱动程序在主机模式下可能没有很好的测试,因为它没有真正用于这种方式。所以很多头球。

我发现的简单方法是使用CPU上的第二个USB端口。这是一个普通的HOST端口(不幸的是限制在12Mbit/s)。不幸的是,我不知道是否有任何平板电脑与外部可用的2个USB端口(一个OTG和一个主机)。

如果你得到一个设定了两个USB接口(一个主机),那么它可以编译为模块(drivername.ko),一个USB转串口转换器。在内核源代码树中支持几种芯片组,我已经使用了其中的一些,并且它可以工作。

希望信息的该位是很有帮助的。

相关问题