【问题标题】:Communicating with Arduino from Android从 Android 与 Arduino 通信
【发布时间】:2012-03-19 10:10:09
【问题描述】:

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

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

我遵循本手册 (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. 接口不能被认领的原因是什么? (面对那个)

【问题讨论】:

    标签: android api usb arduino host


    【解决方案1】:
    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 内核已声明该接口,因为该接口有一个本机驱动程序。在这种情况下,您可以调用 UsbDeviceConnection.claimInterface 并使用 true 作为第二个参数来首先断开内核驱动程序。

    【讨论】:

    • 这是针对传统 linux USB 的答案,而不是针对问题提出的独特的 Android Host API。
    • Android 到 arduino 的通信使用蓝牙模块 HC 05 要简单得多,如果您觉得可以,那么这里是发布在 stackoverflow.com/a/30275750/526438 的文章中给出的代码示例
    猜你喜欢
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    相关资源
    最近更新 更多