完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
adv_data = esp_ble_resolve_adv_data(scan_result->scan_rst.ble_adv,
adv_type, &adv_data_len); 主机扫描广播时可以获取ble_adv, 但打印ble_adv 时发现大多数时候没有除名称外的广播数据. 问题特征:只有第一次扫描可以扫到广播数据, 之后无法获取 解决方法:每次开始扫描前设置一遍广播参数 |
|
相关推荐
1个回答
|
|
根据您的描述,问题可能是由于广播参数没有正确设置或者广播数据没有正确解析。以下是一些建议来解决这个问题:
1. 确保广播参数设置正确: 在开始扫描之前,确保广播参数已经正确设置。您可以使用以下代码片段来设置广播参数: ```c esp_ble_gap_start_advertising(&adv_params); ``` 其中 `adv_params` 是一个 `esp_ble_adv_params_t` 结构体,包含了广播参数。您可以根据需要设置这个结构体的成员。 2. 确保广播数据包含所需的信息: 检查广播数据是否包含您需要的信息。您可以使用以下代码片段来设置广播数据: ```c esp_ble_gap_config_adv_data_raw(raw_adv_data, raw_adv_data_len); ``` 其中 `raw_adv_data` 是一个指向广播数据的指针,`raw_adv_data_len` 是广播数据的长度。确保广播数据包含了您需要的信息,例如设备名称、服务UUID等。 3. 使用正确的函数解析广播数据: 您已经使用了 `esp_ble_resolve_adv_data` 函数来解析广播数据。确保您正确地使用了这个函数。以下是使用这个函数的一个示例: ```c esp_ble_adv_data_t adv_data; uint8_t adv_data_len = 0; esp_ble_resolve_adv_data(scan_result->scan_rst.ble_adv, adv_type, &adv_data, &adv_data_len); ``` 确保 `adv_type` 是您需要解析的广播数据类型,例如 ESP_BLE_AD_TYPE_NAME_CMPL。 4. 检查扫描参数设置: 确保扫描参数设置正确。您可以使用以下代码片段来设置扫描参数: ```c esp_ble_gap_start_scanning(scan_params); ``` 其中 `scan_params` 是一个 `esp_ble_scan_params_t` 结构体,包含了扫描参数。您可以根据需要设置这个结构体的成员。 5. 检查是否有其他设备干扰: 如果问题仍然存在,可能是由于其他设备干扰导致的。尝试在不同的环境或时间段进行测试,看看问题是否仍然存在。 6. 更新ESP32-C3的固件: 确保您的ESP32-C3设备运行的是最新版本的固件。如果问题仍然存在,您可以尝试更新固件,看看是否能解决问题。 通过以上步骤,您应该能够解决ESP32-C3主机获取不到广播数据的问题。如果问题仍然存在,请检查您的代码逻辑和硬件连接,确保没有其他问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
1034 浏览 1 评论
562浏览 6评论
470浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
454浏览 5评论
455浏览 4评论
428浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 16:08 , Processed in 0.756781 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号