1

我正在研究 ESP32 芯片,并试图从广告中获取所有可用信息。为此,我将 NORDIC 的 nRF 连接应用程序与准备广告商一起使用在此处输入图像描述

我扫描设备并成功读取了完整名称,但我想从广告中提取所有信息。

case ESP_GAP_BLE_SCAN_RESULT_EVT:           
            if(param->scan_rst.search_evt == ESP_GAP_SEARCH_INQ_RES_EVT) {


                if(!alreadyDiscovered(param->scan_rst.bda)) {
                    
                    printf("##############################\n");
                     esp_log_buffer_hex("!!!!", param->scan_rst.ble_adv, 62);
                    printf("##############################\n");
                    printf("ESP_GAP_BLE_SCAN_RESULT_EVT\n");
                    printf("Device found: ADDR=");
                    for(int i = 0; i < ESP_BD_ADDR_LEN; i++) {
                        printf("%02X", param->scan_rst.bda[i]);
                        if(i != ESP_BD_ADDR_LEN -1) printf(":");
                    }
                    
                    // try to read the complete name
                    uint8_t *adv_name = NULL;
                    uint8_t adv_name_len = 0;
                    adv_name = esp_ble_resolve_adv_data(param->scan_rst.ble_adv, ESP_BLE_AD_TYPE_NAME_CMPL, &adv_name_len);
                    if(adv_name) {
                        printf("\nFULL NAME=");
                        for(int i = 0; i < adv_name_len; i++) printf("%c", adv_name[i]);
                    }
                    
                    printf("\n\n");
                    addDevice(param->scan_rst.bda);
                }
                
            }

你知道为什么 esp_log_buffer_hex("!!!!", param->scan_rst.ble_adv, 62); 不起作用吗

4

1 回答 1

1

esp_log_buffer_hex()级别的日志INFO。如果您没有为正在记录的服务设置日志级别,您将看不到消息。

确保你运行

esp_log_level_set("!!!!", ESP_LOG_INFO)

在您调用以esp_log_buffer_hex()启用您尝试记录的消息之前。

于 2020-09-11T21:07:06.737 回答