新闻中心

EEPW首页>嵌入式系统>设计应用> 用于Android设备的USB接口

用于Android设备的USB接口

作者: 时间:2013-06-25 来源:网络 收藏

图2: Android平板使用USB控制玩具赛车

  代码创建

  控制玩具车的用户接口相当的简化。在平板电脑的触摸屏上出现两个按钮,一个用于将车子向前移动,另一个用于向后移动。通过相应旋转平板电脑实现左右移动车子。无限控制信号可以被拆成字节串行传输。比如,字节"0X01"用于右转,"0X08"是向前。同样,两个值的组合"0X09"使车子右转且向前。

  不需要为此应用编译一个专用的Android核,也不需要绕过厂商默认的登陆权限来登陆平板电脑。他们所需要的只是安装Android应用程序[http://www.nexus-computing.ch/files/Racer.apk],然后通过USB 接口插入Vinco板。Android平板和Vinculum II之间的连接,是使用新发布的Android USB 主控API来维护的。Android上的JAVA软件与使用USB 批量和控制传输的微处理器交互,因此是一个"软的"USB转串行驱动器。微控制器的固件被设为通过USB转串行驱动与平板电脑接口,它接收单个字节,将相应的无线摇控管脚拉低,最终控制玩具车。

  下面几行的Java代码用于初始化串行通信:

  UsbDeviceConnection conn = usbm.openDevice(dev);

  conn.controlTransfer(0x40, 0, 0, 0, null, 0, 0);// reset

  conn.controlTransfer(0x40, 0, 1, 0, null, 0, 0);// clear Rx

  conn.controlTransfer(0x40, 0, 2, 0, null, 0, 0);// clear Tx

  conn.controlTransfer(0x40, 0x03, 0x4138, 0, null, 0, 0);// set baudrate 9600

  这些代码与libftdi函数非常类似:

  int ftdi_usb_reset(struct ftdi_context *ftdi)

  int ftdi_usb_purge_rx_buffer(struct ftdi_context *ftdi)

  int ftdi_usb_purge_tx_buffer(struct ftdi_context *ftdi)

  int ftdi_set_baudrate(struct ftdi_context *ftdi, int baudrate)

  一旦连接被初始化,将通过Android操作系统的USB API作类似的进一步的批量传输。

  结论

  本文讨论的应用范例说明,尽管存在一定的困难,还是能够通过实现基于Android的控制功能。运用Android主控API结合合适的硬件和相关固件开发,只需要对Android操作系统和差异之处有极少的了解,就可以创建出设想的应用。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭