首页 文章

与AOAP的USB数据通信与Android Kitkat交谈

提问于
浏览
0

我们有一个USB配件,它使用开放附件协议将USB数据包发送到在Android智能手机上运行的应用程序 . 当Android设备运行Jelly Bean(JB)或Ice Cream Sandwich(ICS)时,这非常有效,但在运行Kitkat的设备上出现以下错误:

1)App不接收附件发送的数据包 . 由于某种原因,设备上的低级USB接口不向应用程序提供这些数据包 . 2)交付给应用程序的数据包有时会损坏或不完整,例如我们看到了损坏的数据包或部分传送的数据包 .

我们现在修改了我们的附件软件,以确保每个USB数据包以64字节的倍数传输 . 这在JB或ICS上不是必需的,但是对Kitkat接口进行了一些改进 . 但我们仍然缺少大部分数据包 .

有没有人通过AOAP有任何与Kitkat接口的经验?有没有人与Kitkat的USB数据通信有问题,没有果冻 beans 或冰淇淋三明治?

1 回答

  • 0

    我猜你正在以全速配置运行 . 如果是这样,你的bMaxPacketSize将是64bytes . USB发送传输在发送bMaxPacketSize的倍数的数据包后需要零长度数据包(ZLP)才能结束通信 . Check out this link . 此解决方案可能适用于问题1 .

    您是否也在使用USB音频类 . 将等时 endpoints 的bMaxPacketSize与为此 endpoints 的PIPE分配的空间的bMaxPacketSize进行比较 . 看它是否与批量转移OUT endpoints PIPE重叠 . 一些Android手机音频类bMaxPacketSize被定义为364字节,这足以实现44.1Khz的采样频率 . 理想情况下,只需要~192个字节即可实现此目的 . 某些主机USB音频类驱动程序可能只保留了256个字节,并且在枚举PIPE时可能没有查看bMaxPacketSize . 所以要注意这一点 . 我遇到过这个问题 . Nexus手机的bMaxPacketSize为364字节 . 也许这就是导致数据损坏的原因 .

相关问题