如何定义 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;
开始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;