我正在ESP32芯片上工作,试图从广告中获得所有可用的信息。为此,我使用了北欧的nRF connect应用程序和prepare advertiser

我扫描了设备,只成功地读取了完整的名称,但我想从广告中提取所有信息。
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);不工作吗?
发布于 2020-09-12 05:07:07
esp_log_buffer_hex()在INFO级别记录日志。如果您没有为正在记录的服务设置日志级别,您将看不到消息。
确保你运行
esp_log_level_set("!!!!", ESP_LOG_INFO)在调用esp_log_buffer_hex()以启用您尝试记录的消息之前。
https://stackoverflow.com/questions/63841252
复制相似问题