<
本帖最后由 dvacos 于 2024-7-8 15:05 编辑
#申请原创# 高级任务第一步-蓝牙广播 与 自定义服务收发数据
一、广播名 与 扫描回复
下载并使用“Bluetooth_LE_Multi-peripheral”例程。
1、广播名
新上手一个平台,先看Main中与蓝牙相关的API。看看代码,熟悉一下平台。
阅读代码后,跳转到“app_bt_management_callback”发现是状态机,
在使能case下,找到了蓝牙初始化函数。话说这里为什么是bt,不是ble?
跳转到“app_bt_init”函数里,可以看见如上图,注释写着 设置广播数据的API。
跳转到cy_bt_adv_packet_data就可以发现广播名的数组了,在尝试过后发现修改广播名方法有2个。
方法1:
直接修改广播数据数组
下图是手机APP的截图,广播数据可以对应上。
虽然广播数据对的上了,但是还要实验、测试一下是不是找对地方了。
修改广播名为”ABC”,烧录。
下图是手机APP截图,可以确认我们找到的就是广播名。
修改广播名的第二种方法:
使用IDE工具,直接填写
①点击GAP Setting
②修改广播名
③保存后退出,即可修改广播名
烧录后也是使用第一种方法确认。
2、添加扫描回复
在“app_bt_init”中只打开了了广播内容,并没有打开扫描回复。所以要添加代码打开扫描回复 和 修改扫描回复的数据。
打开扫描回复
①添加扫描回复API
②将数量改为3
找到扫描回复内容
扫描回复的内容,可以和广播一样,但是我要验证是否打开扫描回复,所以修改为:
修改结果:
二、添加服务
1、添加服务与特征
再次回到“app_bt_init”函数中,找到添加服务的函数。
跳转后发现这个数组太复杂了,能看懂,但是修改太麻烦了(要打太多字了)。。。
并且 修改服务、添加 肯定与 修改广播内容 时同理有2种方法,分别是:1、手动修改 2、使用IDE内置工具生成。但是手动的太、太复杂了,所以只做使用工具生成的方式添加服务。
①添加服务
②添加特征,Write 和 Notify,Write用于接收APP下发数据,Notify用于发送数据给APP
保存后,编译烧录即可,应该长度是自动计算的,不用手动填写了。
下图是添加后的效果:
2、收发数据
添加服务后就是将接收的数据打印出来,先找到接收数据(即APP写数据)的地方:
阅读代码后,用handle 的值区分服务后接收数据,这个值也有生成出来
想要实现发送数据,就要找到notify发送数据的接口:
wiced_bt_gatt_server_send_notification
作用:以Notify的形式发送数据给APP
参数:
①连接的ID,即连接的设备顺序,第一个连接的设备就是0
②Handle,就是Handle,可以大致的理解为服务、特征的顺序
③数据长度
④数据
⑤暂时不理解,跟着填NULL
于是把接收数据 与 发送数据组合起来:
将自定义服务接收到的数据,转发回手机,实验的结果如下:
数据转发回手机了,不过回复太快了,APP显示顺序有问题。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|