简介
前面文章讲解了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,作为服务端板子的串口打印可显示收到的相应数据如下。