首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蓝牙SPP神秘的缓冲区溢出,Android / BlueGiga WT12,潜在的流量控制问题?

蓝牙SPP神秘的缓冲区溢出,Android / BlueGiga WT12,潜在的流量控制问题?
EN

Stack Overflow用户
提问于 2019-09-05 09:15:55
回答 1查看 107关注 0票数 0

情况:

我正在为一些有BlueGiga WT12蓝牙调制解调器的硬件开发一个安卓应用程序。硬件设备以大约240 at的频率发送56字节的分组。我正在用三星的S5和S8进行测试。已经为IOS和PC创建了一个功能齐全的应用程序,因此我们知道硬件设备可以工作。

我使用一个单独的线程来读取数据,然后将其分派到主线程。

问题:

我遇到的问题是,当我向设备发送命令,告诉它开始流式传输时,它开始流式传输,但很快我就开始以非常慢的10-60 10速率接收数据包。

经过一些检查后,我意识到设备正在经历一个缓冲区溢出。

在与我们的硬件人员交谈后,他说唯一可能导致这种情况的原因是手机端的读取速度不够快,导致硬件设备不想发送更多的数据包,因为它认为手机不能再接收了,然后硬件设备上的缓冲区溢出。

WT12启用了流控制,所以这可能是安卓没有给WT12一个允许发送信号的问题。但据我所知,我们并不能访问所有的流控制内容。

我尝试过的:

我的第一个攻击线是简单地删除任何我认为会减慢读取速度的代码,但这似乎没有任何效果。

我还尝试了基本上所有我能得到的蓝牙串行终端应用程序,结果都是一样的。

所以我质疑这是不是与硬件设备有关的一些奇怪的问题,但在使用基于pc的(蓝牙)串行终端后,我在pc上完全没有问题。

硬件设备也可以通过USB操作,而不是蓝牙,所以我尝试从它读取数据,就像我使用蓝牙连接一样,但通过USB连接。使用USB串行连接,我一点问题都没有。

我的想法是:

所以这让我相信问题一定是电话那头的蓝牙调制解调器出了问题。我在想这可能是一个流控制问题,因为我们在WT12上启用了流控制。也许android没有发送清晰的接收信号?

问题是,据我所知,流量控制是在蓝牙堆栈中实现的,如果我没记错的话,我们作为开发人员对它没有控制权?

除了流控制,我真的不太清楚是什么原因导致硬件设备不想给我发送数据。

EN

回答 1

Stack Overflow用户

发布于 2019-09-07 14:24:09

我刚刚在流量控制方面遇到了同样的问题。然后我看到,在RN4678 BT模块的情况下,最好是禁用MCU中的流,并将模块上的cts引脚拉低。这对我们很管用。

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

https://stackoverflow.com/questions/57797272

复制
相关文章

相似问题

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