完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
可以在 ESP_GATTS_CONNECT_EVT 中获取到手机 mac 地址,不能获取到手机设备名称
|
|
|
|
要在ESP32作为Server时获取与手机Client配对连接时的手机设备名称,您可以按照以下步骤操作:
1. 初始化ESP32的蓝牙功能:首先,您需要在ESP32上初始化蓝牙功能。这可以通过使用`esp_bt_controller_config_t`结构体来配置蓝牙控制器。 ```c esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT(); esp_bt_controller_init(&bt_cfg); esp_bt_controller_enable(ESP_BT_MODE_BTDM); ``` 2. 初始化ESP32的BTA堆栈:接下来,初始化ESP32的BTA堆栈,以便使用蓝牙API。 ```c esp_bluedroid_init(); esp_bluedroid_enable(); ``` 3. 设置ESP32为可发现模式:为了让手机能够发现ESP32,您需要将ESP32设置为可发现模式。 ```c esp_ble_gap_set_device_name("ESP32_Server"); esp_ble_gap_config_adv_data_raw((uint8_t *)adv_data, sizeof(adv_data)); esp_ble_gap_start_advertising(); ``` 4. 注册并实现回调函数:注册并实现`esp_gap_ble_cb`回调函数,以便在与手机配对连接时获取手机的设备名称。 ```c static void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) { switch (event) { case ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT: esp_ble_gap_start_advertising(); break; case ESP_GAP_BLE_AUTH_CMPL_EVT: { esp_log_buffer_hex("Peer device name", param->ble_security.auth_cmpl.dev_name, strlen(param->ble_security.auth_cmpl.dev_name)); // 这里可以获取到手机的设备名称 } break; default: break; } } void app_main() { // ...其他初始化代码... esp_ble_gap_register_callback(gap_event_handler); } ``` 5. 编译并上传代码:将上述代码编译并上传到ESP32开发板。 6. 使用手机搜索ESP32:在手机上打开蓝牙设置,搜索附近的设备。找到ESP32设备并尝试连接。 7. 观察ESP32日志:当手机与ESP32配对连接时,ESP32的日志将显示手机的设备名称。 请注意,这里的代码示例使用了ESP-IDF框架。如果您使用的是其他框架或库,请根据需要进行相应的调整。 |
|
|
|
只有小组成员才能发言,加入小组>>
446浏览 6评论
376浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
356浏览 5评论
360浏览 4评论
338浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-12 16:29 , Processed in 0.719080 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191