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

问题描述 投票:0回答:1

启动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)
arduino esp32
1个回答
3
投票

您需要将 & 添加到

OnScanResults
,因为:

void (*scanCompleteCB)(BLEScanResults)

是一个指向函数的指针,该函数接受

BLEScanResults
,不返回任何内容,称为
scanCompleteCB

所以你的电话应该是:

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

就像指向

int
的指针指向
int

的地址一样
int pointedTo;
int* ptr = &pointedTo;
© www.soinside.com 2019 - 2024. All rights reserved.