首页 文章

XOOM上的USB主机模式 - 与CP2102虚拟通信端口设备通信时出现问题

提问于
浏览
1

我正在尝试使用安卓3.1版(构建HMJ37)的摩托罗拉Xoom上的USB主机模式编写Android应用程序,使用新的Android主机USB API通过USB与使用Silicon Labs CP2102虚拟COM端口接口的设备进行通信( USB转串口桥)我一直在使用Android开发人员网站上的AdbTest应用程序示例作为指导 .

我在读取CP2102的UART端发送的字符时遇到了问题 . 单字节批量传输工作正常,但如果我要求超过1个字节的数据则不行 . 我知道数据存在,因为我可以使用USBDeviceConnection.controlTransfer()发送GET_COMM_STATUS命令,并看到CP2102上的InQueue缓冲区中有字符 . 但是,当我通过使用USBRequest.queue()(异步)或SBDeviceConnection.bulkTransfer()(同步)函数从In Endpoint请求多个字节时,返回的缓冲区包含无效字符 .

这是有用的:

插入和删除USB设备时会触发

  • intent

  • 应用程序启动,查找USB设备,连接,接口, endpoints 和声明接口

  • 可以通过发送USBDeviceConnection.controlTransfer()命令配置CP2102

  • 通过使用USBRequest.queue()将数据发送到Out Endpoint,可以成功地将数据传输到CP2102的UART端 .

  • CP1102的UART侧的单个字符(由时间延迟分隔)使用同步或异步命令从批量传输 endpoints 成功读取 .

当我尝试在连胜中发送字符时出现问题 . 但是,我只是在UART端以9600波特发送数据,并且没有发送太多字符,我填满了CP2102上的缓冲区 .

我使用Xoom作为设备的电源 . 我在两个不同的XOOM上得到了相同的行为 . 我正在使用MOTOROLA XOOM的摩托罗拉相机连接套件作为我的USB主机线 .

任何人都可以给我指导如何使这项工作?或者XOOM上的Honeycomb 3.1 USB主机API还不是很稳定吗?

1 回答

  • 0

    确保检查返回的字节数,这样就不会从缓冲区中消耗比实际返回的数据更多的数据 . 还检查是否有多个线程正在访问缓冲区,如果访问缓冲区未正确同步,则可能会破坏返回的数据 .

相关问题