日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BLE主机主动扫描和被动扫描

發(fā)布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BLE主机主动扫描和被动扫描 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.目的

? ? ?識別什么是主動掃描 什么是被動掃描

2.分析

? ? ? 在實際中如果需要獲得掃描響應,需要主機設置為主動掃描。如果僅僅是需要廣播數(shù)據(jù)則設置為被動掃描。主動掃描和被動掃描的區(qū)別在于:主動掃描可以獲得廣播數(shù)據(jù)和掃描回應數(shù)據(jù)。而被動掃描只能獲得廣播數(shù)據(jù)不能獲得掃描數(shù)據(jù)。

3.平臺:

協(xié)議棧版本:SDK10.0.0

編譯軟件:keil 5.12

硬件平臺:微雪開發(fā)板nrf51822

例子:SDK10.0\examples\ble_central_and_peripheral\experimental\ble_app_hrs_rscs_relay\pca10028\s130\arm4

4.步驟

? 參考資料:《低功耗藍牙開發(fā)權(quán)威指南》

1.被動掃描?



2.主動掃描

?

詳細參考書籍《低功耗藍牙開發(fā)權(quán)威指南》 第114頁


接下來實驗:

?掃描參數(shù)設置:

[cpp]?view plaincopy
  • /**?@brief?Scan?parameters?requested?for?scanning?and?connection.?*/??
  • static?const?ble_gap_scan_params_t?m_scan_param?=??
  • {??
  • ????0,??????????????//?Active?scanning?not?set.??//設置為被動掃描??
  • ????0,??????????????//?Selective?scanning?not?set.??
  • ????NULL,???????????//?No?whitelist?provided.??
  • ????SCAN_INTERVAL,??
  • ????SCAN_WINDOW,??
  • ????0x0000??????????//?No?timeout.??
  • };??


  • [cpp]?view plaincopy
  • ????case?BLE_GAP_EVT_ADV_REPORT:??
  • ????{??
  • ????????uint32_t?err_code;??
  • ????????data_t???adv_data;??
  • ????????data_t???type_data;??
  • ??
  • ????????//?For?readibility.??
  • ????????const?ble_gap_addr_t??*?const?peer_addr?=?&p_gap_evt->params.adv_report.peer_addr;??
  • ??
  • ????????//?Initialize?advertisement?report?for?parsing.??????????????????????????????????????????????????????????????????????????????????????adv_data.p_data?????=?(uint8_t?*)p_gap_evt->params.adv_report.data;??
  • ????????adv_data.data_len???=?p_gap_evt->params.adv_report.dlen;??
  • ??????//這里是打印藍牙地址??????????????????????
  • ????????NRF_LOG_PRINTF("?peer_addr??=?%d?%d?%d?%d?%d?%d\r\n",?peer_addr->addr[0],peer_addr->addr[1],peer_addr->addr[2],peer_addr->addr[3],peer_addr->addr[4],peer_addr->addr[5]?);??
  • /?NRF_LOG_PRINTF("?p_gap_evt->params.adv_report.type??=?%d\r\n",?p_gap_evt->params.adv_report.type?);????????????????????????????//這里是打印是否為回應包?回應包為1,廣播包為0????????
  • NRF_LOG_PRINTF("?p_gap_evt->params.adv_report.scan_rsp??=?%d\r\n",?p_gap_evt->params.adv_report.scan_rsp?);?????????????????????????//答應對應的數(shù)據(jù)??廣播包或者回應報??
  • NRF_LOG_PRINTF("?adv_data.p_data?=?%s\r\n",?adv_data.p_data?);??
  • 因為周圍有很多藍牙設備 。現(xiàn)在就來掃描了。


    可以看到p_gap_evt->params.adv_report.scan_rsp = 0 表示是廣播包。


    再看把掃描改為主動掃描

    [cpp]?view plaincopy
  • /**?@brief?Scan?parameters?requested?for?scanning?and?connection.?*/??
  • static?const?ble_gap_scan_params_t?m_scan_param?=??
  • {??
  • ????1,??????????????//?Active?scanning?not?set.?//改為主動掃描??
  • ????0,??????????????//?Selective?scanning?not?set.???
  • ????NULL,???????????//?No?whitelist?provided.??
  • ????SCAN_INTERVAL,??
  • ????SCAN_WINDOW,??
  • ????0x0000??????????//?No?timeout.??
  • };??

  • 結(jié)果如下:



    掃描回應數(shù)據(jù)了。。。ok 實驗成功!!!!!

    總結(jié)

    以上是生活随笔為你收集整理的BLE主机主动扫描和被动扫描的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。