Я смотрю на базовый эскиз BLE_Scan.ino из библиотеки ESP32_BLE_Arduino. Я изменил его, чтобы сделать 5 сканирований подряд, прежде чем что-либо еще. Я хотел бы сделать несколько сканов очень быстро, чтобы их усреднить. (См. Код ниже)
Я не могу определить разницу между интервалом сканирования , сканированием окна и параметром scanTime .
Я понимаю, что окно должно быть длиной сканирования, это должно происходить каждый интервал . Я не уверен, что делает параметр scanTime .
Я настроил интервал сканирования и окно сканирования на низкие значения. Также поместите переменную scanTime как можно ниже (1, так как это int и не может быть 0). Кажется, ни одно из этих исправлений не позволяет мне быстро сканировать. По-прежнему, кажется, есть задержка в секунду или две между печатью "сканирования !!"каждый раз.
Любая помощь в разъяснении того, что делают эти 3 параметра, или может указать на то, что я делаю неправильно, приветствуется.
(Кроме того, мой первый пост на SO, поэтому дайте мне знатьесли я могу исправить, как я задал этот вопрос, и я буду!)
Спасибо !!
/*
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>
#include <BLEUtils.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>
int scanTime = 1; //In seconds
BLEScan* pBLEScan;
class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
void onResult(BLEAdvertisedDevice advertisedDevice) {
Serial.printf("Advertised Device: %s \n", advertisedDevice.toString().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(50); //interval (how often there is a scan)
pBLEScan->setWindow(49); // window (how long the scans are) must be <= interval
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
//bluetooth scan
for(int x = 0; x < 5; x ++){
BLEScanResults foundDevices = pBLEScan->start(1, true);
Serial.println("Scan!!");
}
delay(200);
}