与Android的Arduino进行通信

时间:2012-03-19 10:10:09

标签: android api usb arduino host

我正在尝试使用Android USB Host API从Android 3.1设备与Arduino板(Duemilanove)进行通信,并支持USB主机。

目标是以与通过串行相同的方式与电路板通信。

我遵循本手册(http://android.serverbox.ch/?p=427),但几乎没有问题(例如未能声明界面)和粗略的开发指南(http://developer.android.com/reference/android/hardware/usb/package-summary.html),但没有运气。

问题是:

  1. 如何准备arduino板(修改固件) - 中断或smth?
  2. 如何检查arduino板是否合适(例如,枚举USB接口并验证它是否支持所需。可以使用哪些工具?
  3. 如何找到所需的接口(什么是接口类/协议/子类)
  4. 无法声明界面的原因是什么? (面对那个)

1 个答案:

答案 0 :(得分:0)

  1. arduino Duemilanove主板仅内置FTDI FT232RL USB串行转换器。所以你不必处理USB设备。从AVR控制器的角度来看,它只是一个异步串行端口。找出它连接到哪个UART并使用它。也许你想要实现一个简单的回声(再次发送所有收到的字符)作为第一次测试。

  2. 在linux下使用 lsusb 命令查看usb设备描述符。

  3. 了解USB in USB in a nutshellin the official specification以了解其工作原理(尤其是第9章)。如果不这样做,你就无法继续下去。你什么都不懂。 然后继续阅读有关CDC类设备in the usb class section的信息。

  4. 它可能不存在(如果你依赖于接口索引而不检查设备描述符)或者android内核声明了接口,因为该接口有一个本机驱动程序。在这种情况下,您可以使用true作为第二个参数调用UsbDeviceConnection.claimInterface以首先断开内核驱动程序。