程序小白
认证:优质创作者
所在专题目录 查看专题
初识Arduino:简单是简单了点,还是蛮有意思的
基于ESP32快速搭建蓝牙串口透传应用(Arduino)
基于ESP32搭建的蓝牙串口透传应用代码分析(Arduino)
基于ESP32搭建GPIO-Interrupt应用及分析(Arduino)
基于ESP32例程分析Functional-Interrupt(C++浅析)及GPIO-API详解
基于ESP32——FreeRTOS初识(Arduino)
作者动态 更多
电子元器件那些事儿:三极管工作区的判断如此简单①
1星期前
RT-Thread驱动之路:stm32设备驱动开发之SPI原理①
2星期前
RT-Thread驱动之路:stm32设备驱动开发之浅析注册机制⑤
2星期前
RT-Thread驱动之路:stm32设备驱动开发之uart中断处理④
3星期前
电子元器件那些事儿:继电器电路驱动设计②
3星期前

基于ESP32搭建的蓝牙串口透传应用代码分析(Arduino)

      上一篇文章讲了,如何快递搭建一个蓝牙串口透传应用。其实本质上来讲,快速搭建应用只是一个入门级的演示,千万不要以为自己搞了一个蓝牙透传应用就算是玩转蓝牙了。

      第一、没有涉及到蓝牙的具体协议规范。

      第二、只是创建了一个Arduino提供的一个示例。

      所以这一篇还是进行一下示例代码的源码分析,分析代码可能是我最大的乐趣了,好戏即将上演……

      首先Arduino提供的代码,是只有一个INO文件的工程,虽然他只有一个文件,但是我我觉得还是应该把他理解为一个工程文件。

      打开这个工程文件,最重要的就是开头的一段注释了,搞软件一定要在意代码中的注释,虽然我们自己做的注释可能不咋地,但是这些大厂出的注释是很重要的:

==== 建立一个蓝牙服务的流程 ====

这里大体讲一下蓝牙相关的内容,有助于大家理解我们的蓝牙应用的搭建,从上面的注释来看:

      1. 我们首先创建的就是一个蓝牙的服务器、其实蓝牙应用是一种C/S的架构,有服务器自然有客户端,是服务器还是客户端,主要看我们的设备是获取服务,还是提供服务。

       2. 我们创建的是一个BLE服务器,那什么是BLE,就是我们经常说的低功耗蓝牙,现在应该是应用范围较广的。除了BLE以外,还有我们的经典蓝牙模式BT(题外话。。。)。

       3. 创建服务器以后,需要在我们的服务器上创建一个服务或者多个服务。

       4. 真正提供服务的内容是依靠特征字来实现的,同时也可以给特征字添加描述。

       5. 在注释6能看到一个叫做启动广播的操作,其实我们的蓝牙正在开启以后有两种状态,一种是连接态,一种是非连接态,为了建立连接,服务器就需要启动广播,让客户端发现自己,进而进行连接。

蓝牙部分的相关知识及操作流程介绍结束,下面我们来真正的去分析一下原厂提供的代码:

==== 软件流程分析 ====

注:原厂给的demo都是以面向对象的设计思想进行编写的(也就是C++语言)。

1. 蓝牙功能相关头文件包含:

2.创建应用涉及到的对象以及全局变量:

3. 定义蓝牙应用相关的UUID,uuid一般是128bit,可以看作是一个区分不同服务以及特征字符的唯一ID,深入学习你会发现UUID还是很复杂的,有一点他是收费的。

4. 定义回调函数,以对象的形式(如果用C语言编写的话,代码就会变得好理解的多):

5.在setup函数中,对串口以及蓝牙功能进行配置:

5.在loop()函数中执行蓝牙数据发送和接收操作:

==== 总结篇 ====

      1. Arduino中用到了很多C++的知识,其实用C++编程在这种应用场景下,要比C更加的合适,因为他并不是要求你从零开始编写类,以及创建对象,而是在别人现有的基础上进行局部调整,所谓的多态及虚函数的应用。

      2. Arduino开发环境中使用的所有的函数例如串口初始化函数,并不是只针对ESP32模组的特殊函数,而是针对所有Arduino支持的开发板的API函数。

      3.针对大部分需要蓝牙透传应用的场景,通过修改这个demo例程也基本可以满足需求了,但是蓝牙功能可并不像我们想象的那样简单,感兴趣的筒子们可以看看我之前更新的文章,或者从网上找点资料,系统的学习一下。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 5
收藏 4
关注 135
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧