非常慢的连接响应与缓慢的广告

6个员额/ 0个新员额
最后发表
Max44
离线
最后看到:1年前1年前
加入:2016-02-08等等
非常慢的连接响应与缓慢的广告

DA14580
基本开发套件添加了模拟传感器和EEPROM
SDK 5.0.3

你好再对话框中,

我正在继续基于BLE_APP_PERITIVELAL示例的应用程序工作。我一直在使用延长的睡眠模式,通过外部事件(即按钮按钮),事情已经运行良好。我想改变睡眠配置,以允许广告以慢速速度运行(1秒),广告间隔之间的延长睡眠没有唤醒按钮。初始设置要完成此操作似乎正在工作,但连接的时间非常慢...... 10,20,30秒或根本没有连接而没有重新扫描。我假设这是因为DA 14580正在睡眠并缺少来自我的Android平板电脑的连接请求。你知道是否有一些我可以在da14580方面做些什么来改善连接时间吗?我希望在1秒的广告间隔期间BLE无线电通电时,我会拿起连接请求,但显然在合理的时间内显然不会发生。

谢谢你,马克斯

设备:
MT_dialog
离线
最后看到:5个月1个星期前
工作人员
加入:2015-06-08 34
嗨Max44,

嗨Max44,

为了连接实际上需要两个均等的广告,一个中央拾取你的广告活动为了了解广告和报告,有人当用户或设备启动连接过程和第二个广告为了让外围看到中央的连接请求。所以当你有一个大的广告间隔时,你也会有较慢的连接时间。

由于MT_dialog

Max44
离线
最后看到:1年前1年前
加入:2016-02-08等等
是的,但是你

是的,但你会以为几秒钟就能联系上而不是十秒钟。我开始在Android上寻找一些其他的东西,发现那里有一些设置会有帮助。下面是其他感兴趣的人的简要说明。

Android的connectGatt方法:

BluetoothGatt connectGatt(上下文上下文,
布尔符,
BluetoothGattCallback回调)

在我的应用程序中默认autoConnect为true。从在线研究中我读到autoConnect参数调用一个后台进程,而将此设置为false提供了一个更快的直接连接。在错误的设置下,我的连接时间明显加快了。由于广告在断开时重新启动,我也不希望autoConnect在应用程序仍在运行时重新启动连接。

问候,马克斯

MT_dialog
离线
最后看到:5个月1个星期前
工作人员
加入:2015-06-08 34
嗨Max44,

嗨Max44,

既然你有1秒的间隔这意味着,在最坏的情况下,你将有2秒计算连接时间,假设你刚刚失去了当扫描第一发布时间间隔。获得额外时间的原因我认为是由于空中流量,我想外设不要从中央疫苗或中央的连接请求,或者中央没有从外围获得广告事件的顺序发送连接请求。

由于MT_dialog

Joacimwe
离线
最后看到:1年8个月前
格鲁鲁
加入:2014-01-14 06:45
当您将autoConnect设置为

当你设置autoConnect为true时,设备地址将被放在控制器的白名单上,并以非常低的负载开始连接,比如2-5%,这意味着它捕获一个广告包的概率是相同的。常见的值是30毫秒的扫描窗口和1280毫秒的扫描间隔,用于连接尝试。因此,您的连接时间在30秒左右的结果是预期的。

当你将autoConnect设置为false时,它会临时中止所有尚未建立的挂起的自动连接,并开始以大约50%的负载专门连接到这个设备,这应该意味着你的设备将在平均两秒内连接。该模式的超时时间为30秒。它不应该反复用于长时间不仅因为它限制等待连接的数量为所有应用程序1的电话,还因为它降低无线性能由于收音机只能听蓝牙或无线网络在一个给定时间的时刻。

假设应用程序已经知道要连接哪个设备,两种模式都只需要一个广告包即可连接,而不是两个。

Max44
离线
最后看到:1年前1年前
加入:2016-02-08等等
Joacimwe,

Joacimwe,

谢谢你的信息。非常有趣的!比我在Android开发者页面上看到的更有用的细节。我的应用程序只是用于工程和开发,所以你上面提到的限制并不是什么大问题。

很高兴再次收到你的来信。你可能还记得,之前你帮我做过一些数据传输。我最近一直在考虑将连接间隔切换为快速间隔,只为了数据传输,而通常将连接间隔设置为慢速,以减少电池消耗。几年前你也在研究这个。你都搞清楚了吗?我在我尝试过的SDK中发现了以下例程,它似乎工作得很好(在UM-B-051中有简要的记录)。如果你还有其他的指针,请告诉我。

/**
****************************************************************************************
* @brief更新参数操作。
* @param[in] connection_idx连接id。
* @param [in]延迟在连接事件期间测量的从等待时间。
* @param[in] intv_min新的首选最小连接间隔,以1.25 ms的槽位度量。
* @param [in] intv_max新的首选最大连接间隔在1.25毫秒插槽中测量。
* @param[in] connection_event_len_min新的首选最小连接事件长度
*测量1.25 ms槽。
* @param[in] connection_event_len_max新的首选最大连接事件长度
*测量1.25 ms槽。
* @return无效
****************************************************************************************
*/
__inline void app_param_update_op(uint8_t connection_idx,uint16_tintv_min,uint16_tintv_max,uint16_t延迟,\
Uint16_t monition_timeout, Uint16_t connection_event_len_min,\
uint16_t connection_event_len_max)

谢谢你,马克斯