nRF52832 — 连接指定name、UUID、addr的蓝牙设备
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
?XX ?作 ? ? ? 者:ZHS(文化人)
?XX ?聯系方式:文章末尾Chat快問
?XX ?版權聲明:原創文章,歡迎評論和轉載~轉載時能告訴我一聲就最好了
?XX ?要說的話:作者水平有限,難免有不足之處,懇請指正!
?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
寫在前面:近幾年藍牙發展迅速,藍牙IC每年的出貨量高達數億顆,無論我們身處任何地方,周圍都可能同時存在著很多種藍牙設備。那么藍牙主機如何能在眾多的藍牙廣播信號中,與我們期望的從機,自動建立藍牙連接呢?可以通過設備名稱、通過uuid等等;下面我就以設備名稱為例,說說如何根據藍牙的device_name去建立藍牙連接。
1、打開nRF52832的sdk,找到ble_app_multilink_central例程,在main.c文件中找到on_ble_evt(),然后找到BLE_GAP_EVT_ADV_REPORT和on_adv_report();
? ? ? ? ?
2、首先獲取廣播數據和對應size,然后作為傳入參數傳給adv_report_parse();
? ?
3、這個解析函數會根據傳入的type,在廣播數據中找到對應的field_type,然后把對應的數據和長度給到傳出參數p_typedata,最終給到dev_name;
4、因為我們傳入的type是BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NMAE,所以如果找到了,那dev_name里就有廣播的設備名稱,這時候可以跟m_target_periph_name進行對比;如果沒有找到,就再傳入BLE_GAP_AD_TYPE_SHORT_LOCAL_NMAE去找。
5、如果對比發現廣播數據里的設備名稱剛好跟我們的目標外設名稱一樣,就可以調用sd_ble_gap_connect去連接了。
以上是例程中給的方法,我們弄明白了原理,也可以換個方法實現;
? ??
同理我們也可以實現根據uuid進行連接的接口;
? ??
總結
以上是生活随笔為你收集整理的nRF52832 — 连接指定name、UUID、addr的蓝牙设备的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DA14580做主机
- 下一篇: BLE-NRF51822教程13-连接时