首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用AOAP与Android Kitkat进行USB数据通信

利用AOAP与Android Kitkat进行USB数据通信
EN

Stack Overflow用户
提问于 2014-10-22 23:31:12
回答 1查看 644关注 0票数 0

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

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

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

有没有人有过通过AOAP接口到Kitkat的经验?有没有人在与Kitkat的USB数据通信方面遇到了问题,而这些问题并没有出现在Jelly Bean或Ice Cream三明治中?

EN

回答 1

Stack Overflow用户

发布于 2014-11-17 22:22:42

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

你也在使用USB音频类吗?将等时终结点的bMaxPacketSize与为此终结点的管道分配的空间的for进行比较。看看它是否与批量传输出的Endpoint管道重叠。一些安卓手机的音频类bMaxPacketSize被定义为364字节,这足以达到44.1 than的采样频率。理想情况下,只需要大约192个字节就可以做到这一点。一些主机USB驱动程序可能只保留了256个字节,并且它们在枚举管道时可能没有查看bMaxPacketSize。所以一定要注意这一点。我曾经面对过这个问题。Nexus的bMaxPacketSize为364字节。也许这就是数据损坏的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26511281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档