首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跳过BLE服务发现

跳过BLE服务发现
EN

Stack Overflow用户
提问于 2016-09-25 09:20:53
回答 1查看 1.5K关注 0票数 2

我试图将连接+写入BLE设备的总时间最小化。BLE模块是由我工作的一家公司开发的,因此我已经了解了该设备的所有服务和特性。

到目前为止,连接时间+服务发现时间太长了(大约是800 ms,这里的要求是500 ms)。我试图跳过服务发现,为此,我在代码中手动创建了特性和服务(使用反射设置受保护的属性等),我可以“从技术上”传递服务发现。

问题是,如果我这样做,第一个包大约需要300毫秒,在发现服务时,发现大约需要280毫秒,第一个数据包需要20毫秒,所以似乎不管以后发生什么,即使我没有直接调用它,服务发现似乎都是执行的--我的假设正确吗?如果是这样的话,有没有办法绕过这个发现呢?

如果能提供任何帮助的话,到目前为止我还没有在网上找到任何有用的信息,而这300毫秒是致命的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-25 09:39:11

Android会做一个服务发现,即使你没有告诉它。

你有三个选择:

  1. 把你的设备连接起来。那么android根本不会执行任何服务发现(除了第一个连接)。
  2. 优化你们的GATT db。丢弃您不需要的特性和描述符,如果您有自定义服务,请尝试合并尽可能多的特性等等。
  3. 优化链路层,如果您有硬件的话,这样做是可能的,在相同的连接事件( 150 us内)中响应GATT的每个请求的方式,而不是在下一个连接事件中响应。从理论上讲,这将提高2倍的速度。北欧半导体公司的nrf52就是一个可能的例子。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39685272

复制
相关文章

相似问题

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