如何定义 esp32 arduino ble 扫描结果的回调

How to define the callback for an esp32 arduino ble scan result

开始BLE扫描的定义是:

bool start(uint32_t duration, void (*scanCompleteCB)(BLEScanResults), bool is_continue = false);

第二个参数好像是扫描完成时的回调,有点新不知道怎么定义。

fwiw 我试过这个:

void OnScanResults(BLEScanResults scanResults)
{ }

并像这样使用它:

scanResults = scan->start(60, OnScanResults, true);

但对其他人来说显然是行不通的。

请帮我破译那个签名

void (*scanCompleteCB)(BLEScanResults)

您需要将 & 添加到 OnScanResults 因为:

void (*scanCompleteCB)(BLEScanResults)

是一个指向函数的指针,它不需要 BLEScanResults,returns 什么都没有,被称为 scanCompleteCB

所以你的电话应该是:

scanResults = scan->start(60, &OnScanResults, true);

就像指向int的指针指向int

的地址一样
int pointedTo;
int* ptr = &pointedTo;