色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【EsDA應用】藍牙客戶端節點詳解

ZLG致遠電子 ? 2023-05-12 10:18 ? 次閱讀

藍牙作為一種近距離無線通信技術,被廣泛使用在汽車,智能家居和醫療等領域中。本文主要介紹如何通過EsDA開發套件,快速實現藍牙客戶端的訂閱以及讀寫等操作。82e0f6f4-ef9f-11ed-ba01-dac502259ad0.jpg 簡介

藍牙是一種近距離無線通信技術,可以免費運行在2.4G頻段,所以通常廣泛使用在物聯網,移動終端和智能家居等行業中。我們EsDA大家族里面自然也有對藍牙功能的實現,且只需要很短的時間就可實現藍牙通信,功能好用簡單又便捷。

本文主要基于MPC-ZC1的開發板,以及可將節點進行拖拽連接的圖形化設計工具AWFlow Designer,著重對UIS8910DM平臺的板載藍牙的配套節點以及示例進行講解。藍牙節點一共分為配置節點類型ble_server,ble_client2個,客戶端節點類型ble_client_in,ble_client_out,ble_client_subscribe3個以及服務端節點類型ble_server_adv,ble_server_service2個;因本文篇幅的原因所以主要圍繞著客戶端節點的使用,以下進行詳細介紹。

82e0f6f4-ef9f-11ed-ba01-dac502259ad0.jpg ?節點簡介1. 配置節點1.1 ble_client節點1.1.1 屬性8302886e-ef9f-11ed-ba01-dac502259ad0.png

掃描類型:啟動掃描時需要的掃描類型配置:

值為0表示被動掃描(僅僅接收廣播,不會發送掃描請求);

值為1時表示主動掃描(發送掃描請求數據給廣播的服務端,服務端收到后會返回掃描響應數據)。

  • 掃描窗口的時間:掃描窗口時間的配置;
  • 掃描間隔的時間:掃描間隔時間的配置;

注意:掃描窗口時間必須小于掃描間隔時間。

掃描過濾策略:掃描過濾策略的配置:

1表示只處理地址在白名單中的數據包,以及發給自己的可連接定向廣播;

2表示處理所有非定向廣播和可解析私有地址以及發給自己的可連接定向廣播;

3表示處理地址在白名單中和可解析私有地址以及發給自己的可連接定向廣播。

  • 目標服務端設備名稱:目標服務端設備本地名稱;

SMP配對模式與參數:

SMP配對模式

參數

安全等級排名

SECURE_CONNECTION_PASSKEY

KEYBOARD_DISP

最高

SECURE_CONNECTION_JUSTWORK

NOIN_NOOUT

次之

LEGACY_PASSKEY

KEYBOARD_DISP

第三

LEGACY_JUSTWORK

NOIN_NOOUT

最低

  • 掃描超時時間:表示持續掃描,直到與指定服務端建立連接。如果值不為0,則開啟掃描后使能掃描定時器,超時后如果仍未與指定服務端建立連接,則掃描停止。單位ms

配置節點無輸入輸出

2. 客戶端節點

2.1 ble_client_in節點

2.1.1 屬性

8317ceea-ef9f-11ed-ba01-dac502259ad0.png

  • BLE客戶端配置:綁定一個ble_client藍牙客戶端的配置節點;
  • 服務UUID:需要讀的服務UUID。若服務UUID為自定義的16字節如0000 ff 11 0000 1000 800000 80 5f 9b 34 fb,則傳入第3、4兩個字節0xff11;

特征值UUID:需要讀的特征值UUID。若特征值UUID為自定義的16字節如0000 ff 01 0000 1000 800000 80 5f 9b 34 fb,則傳入第3、4兩個字節0xff01。

2.1.2 輸入

  • payload:可以使用“timer”節點作為前級節點,定時讀取數據。

2.1.3 輸出

  • characteristic_uuid:將讀取到的指定特征值的UUID輸出;
  • payload:將讀取到的指定特征值的數組指針輸出。類型為uint8_t類型的指針;
  • payloadLength:將讀取到的指定特征值的數據長度輸出;
  • desc_num:將讀取到的指定特征值的描述符個數輸出。如果存在多個描述符,則存在多個名稱為“desc_uuid_%d”、“desc_value_%d”和“desc_value_length_%d”的屬性,其中%d指代當前是第幾個描述符;
  • 舉例:該特征存在2個描述符,則存在以下名稱的屬性:desc_uuid_0,desc_value_0,desc_value_length_0和desc_uuid_1,desc_value_1,desc_value_length_1,desc_uuid_0;
  • desc_uuid_0:第一個描述符的UUID,若為第二個描述符的UUID也可表示為desc_uuid_1。以此類推;
  • desc_value_0:第一個描述符的值指針,若為第二個描述符的值也可表示為desc_value_1。以此類推;
  • desc_value_length_0:第一個描述符的值的數據長度,若為第二個描述符的值的數據長度也可表示為desc_value_length_1。以此類推。

2.2 ble_client_out節點

2.2.1 屬性832bdb2e-ef9f-11ed-ba01-dac502259ad0.png

  • BLE客戶端配置:綁定一個ble_client藍牙客戶端的配置節點;
  • 服務UUID:需要讀的服務UUID。若服務UUID為自定義的16字節如0000 ff 11 0000 1000 800000 80 5f 9b 34 fb,則傳入第3、4兩個字節0xff11;
  • 特征值UUID:需要讀的特征值UUID。若特征值UUID為自定義的16字節如0000 ff 01 0000 1000 800000 80 5f 9b 34 fb,則傳入第3、4兩個字節0xff01。

2.2.2 輸入

payload:需要寫入的數據,字符串類型。可以使用fscript節點對payload進行設置

payloadLength:需要寫入的數據長度。

sink類型節點沒有輸出功能

2.3 ble_client_subscribe節點

2.3.1 屬性

834144d2-ef9f-11ed-ba01-dac502259ad0.png

  • BLE客戶端配置:綁定一個ble_client藍牙客戶端的配置節點;
  • 服務UUID:需要讀的服務UUID。若服務UUID為自定義的16字節如0000 ff 11 0000 1000 800000 80 5f 9b 34 fb,則傳入第3、4兩個字節0xff11;
  • 特征值UUID:需要讀的特征值UUID。若特征值UUID為自定義的16字節如0000 ff 01 0000 1000 800000 80 5f 9b 34 fb,則傳入第3、4兩個字節0xff01;
  • 訂閱模式:值為0表示禁能通知和指示,值為1表示使能通知,值為2表示使能指示。

pump類型節點無輸入數據

2.3.2 輸出

  • payload:訂閱的特征值的數據內容;
  • payloadLength:訂閱的特征值的數據長度;
  • characteristic_uuid:訂閱的特征值的UUID。

82e0f6f4-ef9f-11ed-ba01-dac502259ad0.jpg ?示例講解1. 硬件準備

如下圖所示,準備一塊MPC-ZC1開發板,并按照下圖所示連接好硬件。用于下載流圖的USB Type-C口另外一端接到PC機上。

83680838-ef9f-11ed-ba01-dac502259ad0.png

2. 軟件準備

目前MPC-ZC1開發板作為客戶端,對BLE調試寶(手機app)服務端(外圍模式)提供的服務進行訂閱、讀寫等操作,依下圖所示可根據用戶需求隨意設置服務UUID、特征值UUID、特征數據以及通知數據,最后點擊開啟廣播,服務端BLE調試寶的配置就設置完成了。

83c71a1c-ef9f-11ed-ba01-dac502259ad0.png

隨之修改手機本地藍牙(服務端設備)名稱,后期此名稱用來配置ble_client節點的屬性參數目標服務端設備名稱。

83e8033a-ef9f-11ed-ba01-dac502259ad0.png

3. EsDA業務開發本示例主要是將MPC-ZC1開發板作為藍牙客戶端,對BLE調試寶(藍牙服務端)指定服務下指定的特征值數據進行讀寫以及訂閱的操作,具體實現如下圖。本例程只對服務端提供的一個服務的特征值進行了訂閱和讀寫操作,根據實際需求,可支持對多個指定服務下的指定特征值進行讀寫和訂閱的操作。

83ff28d0-ef9f-11ed-ba01-dac502259ad0.png

3.1 添加節點并繪制流圖添加timer,ble_client_in,ble_client_out,ble_client_subscribe,fscript節點如下圖所示。

84125ea0-ef9f-11ed-ba01-dac502259ad0.png

3.2 配置節點

周期性的去讀取藍牙服務端指定服務下指定的特征值的特征數據。

雙擊ble_client_in節點的前驅timer節點,打開屬性面板設置定時周期(ms),MPC-ZC1開發板周期性的去讀取BLE調試寶指定服務下指定的特征值數據。修改完后點擊右上角的完成即可保存屬性配置。

8427bb06-ef9f-11ed-ba01-dac502259ad0.png

雙擊ble_client_in節點中的BLE客戶端配置,本屬性配置在一份流圖上只需要配置一次即可,后面ble_client_out以及ble_client_subscribe節點的屬性BLE客戶端配置都會鏈接到同一個ble_server,不需再次重復配置所以后面不再贅述。這里可以只修改屬性值:目標服務端設備名稱,需注意的是此處的參數與服務端提供的信息需一致。修改完后點擊右上角的更新即可保存屬性配置。843ddb8e-ef9f-11ed-ba01-dac502259ad0.png雙擊ble_client_in節點,修改需要讀取指定的服務UUID和特征值UUID。修改完后點擊右上角的完成即可保存屬性配置。84505656-ef9f-11ed-ba01-dac502259ad0.png

雙擊ble_client_in節點的后繼fscript節點,主要內容是對讀取的特征值UUID進行輸出以及將服務端指定的服務UUID及特征值UUID下的特征內容進行輸出。

print("payloadLength is"+msg.payloadLength)print("characteristic_uuid is" + msg.characteristic_uuid);
rb = rbuffer_create(msg.payload, msg.payloadLength)print("length: "+ msg.payloadLength)
f = "recv ble server data is"for(var i=0; i1) { d = rbuffer_read_uint8(rb); f = join(",",f,d);}
msg.payload = fprint("data "+msg.payload)

周期性的去寫入藍牙服務端指定服務下指定的特征值的特征數據。

雙擊ble_client_out節點的前驅*2的timer節點,打開屬性面板設置定時周期(ms),MPC-ZC1開發板周期性的去寫入BLE調試寶指定服務下指定的特征值數據。修改完后點擊右上角的完成即可保存屬性配置。

84641fec-ef9f-11ed-ba01-dac502259ad0.png

因ble_client_out節點作為sink類型節點,所以fscript節點即為他的前驅節點。雙擊fscript,主要功能實現是設置ble_client_out節點的輸入數據:payload(要寫入的數據),payloadLength(需要寫入的數據長度)。

msg.payload = "123456789"set(msg.payloadLength, u8("9"))

雙擊ble_client_out節點,配置需要寫入數據的服務UUID和特征值UUID。修改完后點擊右上角的完成即可保存屬性配置。84794b42-ef9f-11ed-ba01-dac502259ad0.png

對藍牙服務端指定服務下指定的特征值的訂閱數據進行訂閱操作。

雙擊ble_client_subscribe節點,配置需要訂閱的服務UUID,特征值UUID以及訂閱模式。修改完后點擊右上角的完成即可保存屬性配置。848ad4b6-ef9f-11ed-ba01-dac502259ad0.png雙擊ble_client_subscribe的后繼節點fscript,主要功能是將接收到的訂閱數據進行輸出打印。

rb = rbuffer_create(msg.payload, msg.payloadLength)print("length: "+ msg.payloadLength)
f = "recv subscribe data is"for(var i=0; i1) { d = rbuffer_read_uint8(rb); f = join(",",f,d);}
msg.payload = fprint("data "+msg.payload)

3.3 下載驗證MPC-ZC1開發板調試口打印信息如下:849d602c-ef9f-11ed-ba01-dac502259ad0.pngBLE調試寶操作日志顯示如下:84af63d0-ef9f-11ed-ba01-dac502259ad0.png由操作日志可以看到,MPC-ZC1和手機藍牙建立連接成功、MPC-ZC1讀取特征值,開啟通知、接收MPC-ZC1寫入新的特征值數據、接收通知。至此示例實驗已完成。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信
    +關注

    關注

    18

    文章

    6029

    瀏覽量

    135951
  • 藍牙
    +關注

    關注

    114

    文章

    5812

    瀏覽量

    170196
收藏 人收藏

    評論

    相關推薦

    EsDA,一站式嵌入式軟件

    EsDA是一套面向工業智能物聯領域的嵌入式系統設計自動化工具集,包含實時操作系統AWorksLP、低代碼開發平臺AWStudio、資源管理平臺AXPI、跨平臺GUI引擎AWTK和云服務平臺ZWS
    的頭像 發表于 09-15 08:10 ?280次閱讀
    <b class='flag-5'>EsDA</b>,一站式嵌入式軟件

    NTP網絡時間服務器能帶同步多少客戶端

    NTP網絡時間服務器能帶同步多少客戶端
    的頭像 發表于 09-04 10:43 ?421次閱讀
    NTP網絡時間服務器能帶同步多少<b class='flag-5'>客戶端</b>?

    如何同時在ESP8266上運行TCP客戶端和TCP服務?

    我們是 esp8266 的長期用戶,并在該芯片上運行數千臺家庭自動化類別的現場設備。然而,一個小小的限制阻礙了我們開發一些更有趣和創新的產品。 要求:我們需要同時運行 TCP 客戶端(連接
    發表于 07-08 08:26

    求助,關于ESP32C3 TCP客戶端連接斷線問題求解

    ESP32C3開啟AP模式做TCP服務器,手機做客戶端連接服務器;超過默認最大連接數(5)以后,即使有部分客戶端斷開了,也無法再發起連接連接不上。一定需要服務器給客戶端發送數據,確認客戶端
    發表于 06-27 07:54

    藍牙作為客戶端,實現不了透傳是哪里出了問題?

    藍牙作為客戶端,實現不了透傳 AT指令過程 AT+BLEINIT=1 AT+BLESCAN=1,3 AT+BLECONN=0,"f8:a7:63:39:11:df" AT+BLESPP(透傳時提示錯誤),請大神們幫我看看是漏了什么步驟嗎?
    發表于 06-24 07:22

    請問esp32能支持多個客戶端同時連接嗎?

    根據我現在的測試結果,esp32作為ble server時同時支持一個客戶端連接,前一個客戶端必須斷開藍牙連接,后一個才能連接。實際esp32能支持多個客戶端同時連接嗎?有沒有相關例程
    發表于 06-11 06:25

    TWS 藍牙耳機 ESD EOS保護方案

    TWS 藍牙耳機 ESD EOS保護方案
    的頭像 發表于 05-17 08:02 ?704次閱讀
    TWS <b class='flag-5'>藍牙</b>耳機 <b class='flag-5'>ESD</b> EOS保護方案

    ESD管 AZ5825-01F型號ESDA05CPX參數對比

    ESD管 AZ5825-01F型號ESDA05CPX參數對比
    的頭像 發表于 05-11 08:03 ?868次閱讀
    <b class='flag-5'>ESD</b>管 AZ5825-01F型號<b class='flag-5'>ESDA</b>05CPX參數對比

    HarmonyOS開發實例:【分布式新聞客戶端

    基于柵格布局、設備管理和多端協同,實現一次開發,多端部署的分布式新聞客戶端頁面。
    的頭像 發表于 04-17 15:57 ?869次閱讀
    HarmonyOS開發實例:【分布式新聞<b class='flag-5'>客戶端</b>】

    靜電ESD整改:原因、影響與解決方案詳解

    靜電ESD整改:原因、影響與解決方案詳解?|深圳比創達電子
    的頭像 發表于 03-13 10:26 ?893次閱讀
    靜電<b class='flag-5'>ESD</b>整改:原因、影響與解決方案<b class='flag-5'>詳解</b>?

    是否可以將客戶端控件與CYW920706WCDEVAL一起使用?

    是否可以將客戶端控件與CYW920706WCDEVAL一起使用? 我想用它來發現藍牙 BR/EDR,然后將其與其他設備配對。 有客戶端控制的下載鏈接或文檔嗎? 另外,你有 AIROC Connect
    發表于 03-01 15:54

    如何基于EsDA開發套件快速使用射頻讀卡器模塊

    無線射頻讀寫卡技術在門禁系統,電子支付領域和物聯網等領域中具有越來越廣泛的應用。本文將基于EsDA開發套件講解如何快速上手并開發射頻讀卡器模塊的相關業務,為開發者大大縮短了學習和開發時間成本。項目
    的頭像 發表于 01-11 08:24 ?704次閱讀
    如何基于<b class='flag-5'>EsDA</b>開發套件快速使用射頻讀卡器模塊

    詳解zookeeper的session管理機制

    使用過zookeeper的都知道,當我們使用zookeeper創建一個節點時,我們能選擇節點的類型是“臨時節點”還是“永久節點”。臨時節點
    的頭像 發表于 01-08 09:46 ?1041次閱讀
    <b class='flag-5'>詳解</b>zookeeper的session管理機制

    適用于Linux的基于Rust的同步客戶端介紹

    一個簡單而優雅的 GUI 同步客戶端,提供雙向同步。
    的頭像 發表于 01-05 11:32 ?619次閱讀
    適用于Linux的基于Rust的同步<b class='flag-5'>客戶端</b>介紹

    分享一款別樣的ssh客戶端-PortX

    目前支持ssh的客戶端有很多,比如putty、crt、xshell等,今天分享一款別樣的ssh客戶端-PortX,通過簡單但全面的UI,PortX為您提供了純粹的終端模擬體驗。
    的頭像 發表于 01-02 13:37 ?708次閱讀
    分享一款別樣的ssh<b class='flag-5'>客戶端</b>-PortX
    主站蜘蛛池模板: couo福利姬图库| 亚洲精品无夜久久久久久久久| 秋霞伦理机在线看片| 秋霞电影网午夜鲁丝片| 四虎影5151毛片在线看| 亚欧日韩毛片在线看免费网站| 亚洲最大在线视频| 51久久夜色精品国产| x69老师x日本| 国产精品免费视频能看| 果冻传媒完整免费网站在线观看| 久久精品av| 女人张开腿让男人桶爽免| 日本乱hd高清videos| 校花娇喘呻吟校长陈若雪视频| 亚洲色欲色欲无码AV| 99久久精品费精品国产| 国产h视频在线观看免费| 花蝴蝶免费观看影视| 免费国产成人| 天天躁夜夜踩很很踩2022| 亚洲日韩国产成网站在线| 99热在线观看| 国产亚洲精品在浅麻豆| 美女内射少妇三区五区| 手机在线观看mv网址| 一区二区不卡在线视频| 啊灬啊别停灬用力啊老师| 国模孕妇模特季玥之粉红| 男人J桶进男人屁股过程| 午夜国产精品视频在线| 2017日日干| 国产精品成人影院| 老司机福利在 线影院| 受被三个攻各种道具PLAY| 羽月希被黑人吃奶dasd585| 大胸美女脱内衣黄网站| 精品亚洲大全| 肉多荤文高h羞耻校园| 中国女人hd| 国产精品亚洲高清一区二区|