iBeacon名称未在ESP32 BLE扫描器中显示

时间:2019-12-25 04:18:56

标签: bluetooth-lowenergy arduino-ide esp32

我正在一个涉及使用ESP32的BLE扫描器的项目中。我使用Arduino IDE中已安装的BLE扫描器示例代码对ESP32进行编程,但该设备无法像任何普通的android BLE扫描器应用程序一样扫描iBeacon的名称。我还尝试修改代码以仅专门提取iBeacons的名称,但最终仍然得到相同的结果。任何建议都欢迎。这是我修改的代码:

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>

int scanTime = 5; //In seconds
BLEScan* pBLEScan;

class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
    void onResult(BLEAdvertisedDevice advertisedDevice) {
      //Serial.printf("Advertised Device: %s \n", advertisedDevice.toString().c_str());
      Serial.print("Name :");
      Serial.println(advertisedDevice.getName().c_str());
    }
};

void setup() {
  Serial.begin(115200);
  Serial.println("Scanning...");

  BLEDevice::init("");
  pBLEScan = BLEDevice::getScan(); //create new scan
  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
  pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster
  pBLEScan->setInterval(100);
  pBLEScan->setWindow(99);  // less or equal setInterval value
}

void loop() {
  // put your main code here, to run repeatedly:
  BLEScanResults foundDevices = pBLEScan->start(scanTime, false);
  Serial.print("Devices found: ");
  Serial.println(foundDevices.getCount());
  Serial.println("Scan done!");
  pBLEScan->clearResults();   // delete results fromBLEScan buffer to release memory
  delay(2000);
}

0 个答案:

没有答案