2372| 0
|
[ESP8266/ESP32] ESP32蓝牙扫描无法扫描到附近的手机设备 |
网上找过很多示例代码,也用过ESP32标配的示例代码,使用的是ESP32WROOM芯片板,用过BLE模式,也用过经典蓝牙模式,也用过双模模式,但仍然无法扫描到设备周围的手机的蓝牙地址,示例代码如下,请高手指点,谢谢! /* Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleScan.cpp Ported to Arduino ESP32 by Evandro Copercini */ #include <BLEDevice.h> // 蓝牙Ble设备库 #include <BLEUtils.h> #include <BLEScan.h> // 蓝牙ble设备的扫描功能库 本篇重点 #include <BLEAdvertisedDevice.h> // 扫描到的蓝牙设备(广播状态) int scanTime = 120; //In seconds 扫描时间 BLEScan* pBLEScan; // 扫描对象 // 扫描广播设备结果回调 class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks { void onResult(BLEAdvertisedDevice advertisedDevice) { Serial.printf("Advertised Device: %s \n", advertisedDevice.toString().c_str()); //Serial.printf("Advertised Device name: %s \n",advertisedDevice.getName().c_str()); //Serial.printf("Advertised Address: %s \n",advertisedDevice.getAddress().toString().c_str()); } }; void setup() { Serial.begin(115200); Serial.println("Scanning..."); BLEDevice::init("ESP32TEST"); // 蓝牙设备初始化,设置设备名字 pBLEScan = BLEDevice::getScan(); // 创建一个新扫描入口,获取扫描对象 pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());// 注册扫描结果回调 //BLE_ADDR_TYPE_PUBLIC pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster // 配置主动扫描 pBLEScan->setInterval(0x50); // 配置扫描间隔时间,ms为单位 pBLEScan->setWindow(0x30); // 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); } |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed