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

时间:2019-06-19 07:51:19

标签: c arduino esp32

启动BLE扫描的定义是:

<ul>
    <li >
        <a class="option-main href=''><?php print"$menu[1]";?></a>
          <div>
               <a class="option-main href="<?php print"$links[2]";?>"><?php print"$menu[2]";?>
           <a class="option-main href="<?php print"$links[3]";?>">test submain</a>
      </div>
      < /li>

</ul>
<script type="text/javascript">
    //1.1
    var menus = document.getElementsByClassName("option-main");

    //1
    function m(event){
        //1.2 
        var x = $(event.target);
        console.log(x.text());
        //2
        let url = $(event.target).attr("href");
        console.log(url);

        //2.2
        document.getElementById("section").innerHTML = url;
    }
    //2  
    document.addEventListener('click', m);
</script>

第二个参数似乎是扫描完成后的回调,对此我不太确定如何定义它。

我已经尝试过:

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

并像这样使用它:

void OnScanResults(BLEScanResults scanResults)
{ }

但对其他人显而易见,那没有用。

请帮助我解密该签名

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

1 个答案:

答案 0 :(得分:2)

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

void (*scanCompleteCB)(BLEScanResults)

是指向一个函数的指针,该函数采用BLEScanResults,不返回任何内容,称为scanCompleteCB

所以您的通话应该是:

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

就像指向int的指针一样指向int的地址

int pointedTo;
int* ptr = &pointedTo;