完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我现在使用esp32 wroom 32 烧写了 例程里面的gatt_client 但是我搜索到周边的蓝牙并且连接上,获取不到 对方的uuid
如何 获取到要连接的蓝牙uuid 我看例程里面是写死的uuid 我改成了要连接的蓝牙uuid 后能显示对方的uuid 但是我在实际使用的时候是不知道这个uuid 如何获取? |
|
相关推荐
1个回答
|
|
|
要获取要连接的蓝牙设备的UUID,您可以按照以下步骤操作:
1. 首先,确保您的ESP32已经成功连接到目标蓝牙设备。这通常是通过扫描周围的蓝牙设备并选择一个设备进行连接实现的。 2. 连接到蓝牙设备后,您可以使用ESP32的GATT客户端功能来查询设备的服务和特征。这通常涉及到发送GATT发现服务的请求。 3. 当ESP32收到GATT发现服务的响应时,它将包含一个或多个服务的UUID。这些UUID可以用来识别设备上提供的不同服务。 4. 您可以将收到的UUID与您预期的UUID进行比较,以确定是否连接到了正确的设备。 以下是一个简化的示例代码,展示了如何使用ESP32的GATT客户端功能来查询设备的服务UUID: ```c #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_system.h" #include "esp_log.h" #include "esp_bt.h" #include "nvs_flash.h" #include "bt_app_core.h" #include "bt_app_api.h" static const char *TAG = "GATT_CLIENT"; void gattc_profile_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t *param); void app_main() { // 初始化蓝牙和NVS esp_err_t ret = nvs_flash_init(); if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { ESP_ERROR_CHECK(nvs_flash_erase()); ret = nvs_flash_init(); } ESP_ERROR_CHECK(ret); esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_CFG_DEFAULT(); ret = esp_bt_controller_init(&bt_cfg); if (ret) { ESP_LOGE(TAG, "%s initialize controller failed: %s", __func__, esp_err_to_name(ret)); return; } ret = esp_bt_controller_enable(ESP_BT_MODE_BLE); if (ret) { ESP_LOGE(TAG, "%s enable controller failed: %s", __func__, esp_err_to_name(ret)); return; } ret = esp_bluedroid_init(); if (ret) { ESP_LOGE(TAG, "%s init bluetooth failed: %s", __func__, esp_err_to_name(ret)); return; } ret = esp_bluedroid_enable(); if (ret) { ESP_LOGE(TAG, "%s enable bluetooth failed: %s", __func__, esp_err_to_name(ret)); return; } ret = esp_ble_gattc_app_register(0x5); if (ret) { ESP_LOGE(TAG, "%s gattc app register failed: %s", __func__, esp_err_to_name(ret)); return; } ret = esp_ble_gattc_app_unregister(0x5); if (ret) { ESP_LOGE(TAG, "%s gattc app unregister failed: %s", __func__, esp_err_to_name(ret)); return; } ret = esp_ble_gatts_app_unregister(0x5); if (ret) { ESP_LOGE(TAG, "%s gatts app unregister failed: %s", __func__, esp_err_to_name(ret)); return; } esp_ble_gattc_register_callback(gattc_profile_event_handler); // 启动扫描和连接 // ... } void gattc_profile_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t *param) { switch (event) { case ESP_GATTC_REG_EVT: ESP_LOGI(TAG, "REG EVT"); break; case ESP_GATTC_OPEN_EVT: ESP_LOGI(TAG, "OPEN EVT"); break; case ESP_GATTC_SEARCH_RES_EVT: ESP_LOGI(TAG, "SEARCH RES EVT"); for (int i = 0; i < param->search_res.num_uuids; i++) { ESP_LOGI(TAG, "UUID16: %x", param->search_res.uuid16_list[i]); } break; // 其他事件处理 } } ``` 在这个示例中,我们首先初始化蓝牙和NVS,然后注册GATT客户端应用程序。接下来,我们定义了一个事件处理函数`gattc_profile_event_handler`,该函数将在GATT客户端发生事件时被调用。在这个处理函数中,我们特别关注`ESP_GATTC_SEARCH_RES_EVT`事件,该事件会在发现服务时触发。在该事件的处理中,我们遍历返回的UUID列表,并将它们打印出来。 这样,您就可以在实际使用 |
|
|
|
|
只有小组成员才能发言,加入小组>>
945 浏览 0 评论
1672 浏览 0 评论
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
1330 浏览 1 评论
1233 浏览 1 评论
5021 浏览 2 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
1253浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
927浏览 3评论
2338浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
2527浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
1052浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 08:35 , Processed in 0.611832 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1038
