性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

程序小白
認(rèn)證:優(yōu)質(zhì)創(chuàng)作者
所在專題目錄 查看專題
初識(shí)Arduino:簡單是簡單了點(diǎn),還是蠻有意思的
基于ESP32快速搭建藍(lán)牙串口透傳應(yīng)用(Arduino)
基于ESP32搭建的藍(lán)牙串口透傳應(yīng)用代碼分析(Arduino)
基于ESP32搭建GPIO-Interrupt應(yīng)用及分析(Arduino)
基于ESP32例程分析Functional-Interrupt(C++淺析)及GPIO-API詳解
基于ESP32——FreeRTOS初識(shí)(Arduino)
作者動(dòng)態(tài) 更多
基于stm32采用PWM驅(qū)動(dòng)伺服控制器學(xué)習(xí)筆記
5天前
基于STM32驅(qū)動(dòng)TM1638學(xué)習(xí)筆記——軟件篇
04-19 12:42
基于TM1638驅(qū)動(dòng)8位數(shù)碼管設(shè)計(jì)分享
02-24 11:26
RT-Thread驅(qū)動(dòng)之路: Studio創(chuàng)建FAL分區(qū)⑤
01-02 08:30
RT-Thread驅(qū)動(dòng)之路: Studio 掛載通用SPI flash④
2024-12-23 13:41

基于ESP32搭建的藍(lán)牙串口透傳應(yīng)用代碼分析(Arduino)

      上一篇文章講了,如何快遞搭建一個(gè)藍(lán)牙串口透傳應(yīng)用。其實(shí)本質(zhì)上來講,快速搭建應(yīng)用只是一個(gè)入門級(jí)的演示,千萬不要以為自己搞了一個(gè)藍(lán)牙透傳應(yīng)用就算是玩轉(zhuǎn)藍(lán)牙了。

      第一、沒有涉及到藍(lán)牙的具體協(xié)議規(guī)范。

      第二、只是創(chuàng)建了一個(gè)Arduino提供的一個(gè)示例。

      所以這一篇還是進(jìn)行一下示例代碼的源碼分析,分析代碼可能是我最大的樂趣了,好戲即將上演……

      首先Arduino提供的代碼,是只有一個(gè)INO文件的工程,雖然他只有一個(gè)文件,但是我我覺得還是應(yīng)該把他理解為一個(gè)工程文件。

      打開這個(gè)工程文件,最重要的就是開頭的一段注釋了,搞軟件一定要在意代碼中的注釋,雖然我們自己做的注釋可能不咋地,但是這些大廠出的注釋是很重要的:

==== 建立一個(gè)藍(lán)牙服務(wù)的流程 ====

這里大體講一下藍(lán)牙相關(guān)的內(nèi)容,有助于大家理解我們的藍(lán)牙應(yīng)用的搭建,從上面的注釋來看:

      1. 我們首先創(chuàng)建的就是一個(gè)藍(lán)牙的服務(wù)器、其實(shí)藍(lán)牙應(yīng)用是一種C/S的架構(gòu),有服務(wù)器自然有客戶端,是服務(wù)器還是客戶端,主要看我們的設(shè)備是獲取服務(wù),還是提供服務(wù)。

       2. 我們創(chuàng)建的是一個(gè)BLE服務(wù)器,那什么是BLE,就是我們經(jīng)常說的低功耗藍(lán)牙,現(xiàn)在應(yīng)該是應(yīng)用范圍較廣的。除了BLE以外,還有我們的經(jīng)典藍(lán)牙模式BT(題外話。。。)。

       3. 創(chuàng)建服務(wù)器以后,需要在我們的服務(wù)器上創(chuàng)建一個(gè)服務(wù)或者多個(gè)服務(wù)。

       4. 真正提供服務(wù)的內(nèi)容是依靠特征字來實(shí)現(xiàn)的,同時(shí)也可以給特征字添加描述。

       5. 在注釋6能看到一個(gè)叫做啟動(dòng)廣播的操作,其實(shí)我們的藍(lán)牙正在開啟以后有兩種狀態(tài),一種是連接態(tài),一種是非連接態(tài),為了建立連接,服務(wù)器就需要啟動(dòng)廣播,讓客戶端發(fā)現(xiàn)自己,進(jìn)而進(jìn)行連接。

藍(lán)牙部分的相關(guān)知識(shí)及操作流程介紹結(jié)束,下面我們來真正的去分析一下原廠提供的代碼:

==== 軟件流程分析 ====

注:原廠給的demo都是以面向?qū)ο蟮脑O(shè)計(jì)思想進(jìn)行編寫的(也就是C++語言)。

1. 藍(lán)牙功能相關(guān)頭文件包含:

2.創(chuàng)建應(yīng)用涉及到的對(duì)象以及全局變量:

3. 定義藍(lán)牙應(yīng)用相關(guān)的UUID,uuid一般是128bit,可以看作是一個(gè)區(qū)分不同服務(wù)以及特征字符的唯一ID,深入學(xué)習(xí)你會(huì)發(fā)現(xiàn)UUID還是很復(fù)雜的,有一點(diǎn)他是收費(fèi)的。

4. 定義回調(diào)函數(shù),以對(duì)象的形式(如果用C語言編寫的話,代碼就會(huì)變得好理解的多):

5.在setup函數(shù)中,對(duì)串口以及藍(lán)牙功能進(jìn)行配置:

5.在loop()函數(shù)中執(zhí)行藍(lán)牙數(shù)據(jù)發(fā)送和接收操作:

==== 總結(jié)篇 ====

      1. Arduino中用到了很多C++的知識(shí),其實(shí)用C++編程在這種應(yīng)用場景下,要比C更加的合適,因?yàn)樗⒉皇且竽銖牧汩_始編寫類,以及創(chuàng)建對(duì)象,而是在別人現(xiàn)有的基礎(chǔ)上進(jìn)行局部調(diào)整,所謂的多態(tài)及虛函數(shù)的應(yīng)用。

      2. Arduino開發(fā)環(huán)境中使用的所有的函數(shù)例如串口初始化函數(shù),并不是只針對(duì)ESP32模組的特殊函數(shù),而是針對(duì)所有Arduino支持的開發(fā)板的API函數(shù)。

      3.針對(duì)大部分需要藍(lán)牙透傳應(yīng)用的場景,通過修改這個(gè)demo例程也基本可以滿足需求了,但是藍(lán)牙功能可并不像我們想象的那樣簡單,感興趣的筒子們可以看看我之前更新的文章,或者從網(wǎng)上找點(diǎn)資料,系統(tǒng)的學(xué)習(xí)一下。

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 5
收藏 4
關(guān)注 150
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧