首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >esp-idf BLE扫描

esp-idf BLE扫描
EN

Stack Overflow用户
提问于 2019-10-29 11:51:08
回答 1查看 1.7K关注 0票数 2

我正在使用ESP-idf对我的ESP32板进行编程。我的目标是让它扫描特定的BLE (蓝牙低能耗)设备。我想出了如何让它扫描通过使用"Espressif“提供的一个例子,称为"ibeacon_demo.c”的事情是,我不知道如何提取任何搜索到的设备的地址,并将其作为字符串,以便我可以比较它与我的BLE设备地址。

ibeacon_demo.c:https://github.com/pycom/pycom-esp-idf/blob/master/examples/bluetooth/ble_ibeacon/main/ibeacon_demo.c

我非常确定在这一声明中必须要做一些事情:

代码语言:javascript
复制
 if (esp_ble_is_ibeacon_packet(scan_result->scan_rst.ble_adv, scan_result->scan_rst.adv_data_len)){
            esp_ble_ibeacon_t *ibeacon_data = (esp_ble_ibeacon_t*)(scan_result->scan_rst.ble_adv);
            ESP_LOGI(DEMO_TAG, "----------iBeacon Found----------");
            esp_log_buffer_hex("IBEACON_DEMO: Device address:", scan_result->scan_rst.bda, BD_ADDR_LEN );
            esp_log_buffer_hex("IBEACON_DEMO: Proximity UUID:", ibeacon_data->ibeacon_vendor.proximity_uuid, ESP_UUID_LEN_128);

            uint16_t major = ENDIAN_CHANGE_U16(ibeacon_data->ibeacon_vendor.major);
            uint16_t minor = ENDIAN_CHANGE_U16(ibeacon_data->ibeacon_vendor.minor);
            ESP_LOGI(DEMO_TAG, "Major: 0x%04x (%d)", major, major);
            ESP_LOGI(DEMO_TAG, "Minor: 0x%04x (%d)", minor, minor);
            ESP_LOGI(DEMO_TAG, "Measured power (RSSI at a 1m distance):%d dbm", ibeacon_data->ibeacon_vendor.measured_power);
            ESP_LOGI(DEMO_TAG, "RSSI of packet:%d dbm", scan_result->scan_rst.rssi);
        }

下面是我使用"ibeacon_demo.c“[https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/bluetooth/esp_gap_ble.html#_CPPv428esp_ble_gap_update_whitelistb13esp_bd_addr_t22esp_ble_wl_addr_type_t][1]的示例的API参考。

EN

回答 1

Stack Overflow用户

发布于 2019-11-07 02:49:47

你的问题是两个部分,如何提取地址以及如何将其与您要查找的地址进行比较。

第一个问题已经为您回答了,因为此示例提取地址并将其放入日志中:

代码语言:javascript
复制
esp_log_buffer_hex("IBEACON_DEMO: Device address:", scan_result->scan_rst.bda, BD_ADDR_LEN );

但是您的第二个问题需要更深入地理解如何比较字节数组。为了帮助您理解第二部分,我可以告诉您地址是一个字节数组,它有6个字节长,这就是BD_ADDR_LEN常量告诉您的。

现在您必须比较这两个字节的数组。

在你弄清楚这一点之后,你可以进入公共和随机地址。但就目前而言,这已经足够了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58601221

复制
相关文章

相似问题

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