当前位置: 主页 > 产经 > 详情
【EsDA应用】蓝牙服务端节点详解_每日时讯

来源面包芯语   2023-05-24 15:49:59

简介

前面文章讲解了ble_client的相关节点和业务处理,有兴趣的可以跳转链接【EsDA应用】蓝牙客户端节点详解去查看。


【资料图】

广播的过滤策略:

SMP配对模式的参数:

payload:输入数据。传入特征值数据,可以使用“fscript”节点作为前级节点,设置需要写入的数据。

payloadLength:输入数据。传入特征值数据的长度,可以使用“fscript”节点作为前级节点,设置需要写入的数据长度,最大不超过255。

2.2.1 属性

BLE服务端配置节点:关联到的BLE服务端配置节点。

需要广播的每个小数据包的数据长度:表示需要广播的每个小数据包的数据长度(数据内容的字节长度+1)。因为格式是csv,所以多个数据包的数据长度按顺序用逗号来隔开。

需要广播的每个小数据包的数据类型:表示需要广播的每个小数据包的数据长度(数据内容的字节长度+1)。多个数据包的数据类型按顺序用逗号来隔开。

扫描响应的每个小数据包的数据内容:表示扫描响应的每个小数据包的数据内容。多个数据包的数据内容按顺序用逗号来隔开。

扫描响应的每个小数据包的数据类型:表示扫描响应的每个小数据包的数据类型,多个数据包的数据类型按顺序用逗号来隔开。具体的广播数据包类型详细信息可在网上进行查阅。

数据类型为09表示本地设备名称即属性蓝牙本地设备名称,现已被后续代码自动处理加入到了广播数据包中。计算长度时需注意,如若广播数据包超过最长31个字节的内容,则截断。

扫描响应的每个小数据包的数据内容:表示扫描响应的每个小数据包的数据内容。多个数据包的数据内容按顺序用逗号来隔开。

如:需要广播的每个小数据包的数据长度为0x02;需要广播的每个小数据包的数据类型为:0x01;需要广播的每个小数据包的数据内容为:0x06。那么算上蓝牙本地设备名称:(BLE-ZC1)0x42,0x4c,0x45,0x2d,0x5a,0x43,0x31,

那么最终的广播数据包为0x08(数据长度),0x09(数据类型),

0x42,0x4c,0x45,0x2d,0x5a,0x43,0x31(数据内容BLE-ZC1),

0x02(数据长度),0x01(数据类型),

0x06(数据内容),

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

ble_server_adv节点的输入并无实际意义的输入,由ble_server_service节点作为前级节点,进入当前节点的on_data虚函数中开启广播。

业务处理

定义支持的服务:由ble_server_service节点添加服务UUID和特征值UUID以及特征值数据;发布服务器,以便远程客户端可连接:由ble_server_adv节点开启广播(在一个运行程序中不能多次开启广播)后服务端蓝牙准备完成,开始等待客户端蓝牙设备连接;以及后续的响应读取和写入请求。实现框图如下所示。

1. 资源准备

2. 添加节点并绘制流图

添加timer,gpio,trigger,fscript,ble_server_service和ble_server_adv节点到画布中,如下图所示。

双击gpio节点的前驱timer节点,打开属性面板设置定时周期(ms),定时去读取gpio的引脚电平状态。修改完后点击右上角的完成即可保存属性配置。

双击gpio节点,配置属性如下图所示,根据需求选择所需的gpio引脚,本章节使用的是P4.5,并设置为浮空输入,用户可根据自身需求设置该gpio引脚号。修改完后点击右上角的完成即可保存属性配置。

双击gpio的后继节点fscript,功能代码内容的主要目的是让后续的trigger节点只能被触发一次,因P4.5的引脚默认是低电平,且trigger节点被触发只能收到msg.trigger_stop属性消息,所以具体代码如下。

双击第一栏的fscript节点,本节点作为ble_server_service节点的前驱节点,所以具体内容即ble_server_service的输入组:payload(传入的特征值数据),payloadLength(传入的特征值数据的长度)。修改完后点击右上角的完成即可保存属性配置。

双击第一栏的ble_server_service节点,只需要确定需要添加的服务UUID和特征值UUID,其他参数视具体情况而定,也可使用默认的参数值。修改完后点击右上角的完成即可保存属性配置。

双击第二栏的fscript节点,其内容与第一栏的fscript节点大体一致,都是作为ble_server_service节点的前驱节点,所以具体内容即ble_server_service的输入组:payload(传入的特征值数据),payloadLength(传入的特征值数据的长度)。修改完后点击右上角的完成即可保存属性配置。

最后双击ble_server_adv节点,自行设置蓝牙本地设备名称,以及需要广播的每个小数据包的数据长度,类型,内容和扫描的每个小数据包的数据长度,类型,内容。修改完后点击右上角的完成即可保存属性配置。

4. 下载验证

每次操作都会有相应的日志信息,注意各服务UUID的联系,实时日志如下所示。

BLE调试宝向特征值UUID为0x1111fffe写入12 34 56,作为服务端板子的串口打印可显示收到的相应数据如下。