查看: 2113|回复: 0

[原创] 【经验分享】一个客户的ble广播问题

[复制链接]

该用户从未签到

715

主题

6374

帖子

0

超级版主

Rank: 8Rank: 8

积分
25234
最后登录
2025-8-20
发表于 2021-11-9 16:07:56 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2021-11-11 16:46 编辑

最近有个客户提出这样一个要求,想要通过无线串口来修改ble广播名字。也就是说,当我们用iot toolbox里的wireless uart应用连接上kw36以后,当我输入特定字符加上新的设备名,可以使得kw广播名字修改,其他时候则正常使用无线串口。这个看起来很简单的程序,客户却始终没有调出来。最后只好我写了代码,现在分享一下思路。
1 首先我们约定,我们用#来做特殊字符,告诉kw36,后面的字符就是新的设备名,你需要在下次广播时候使用。也就是说当我用串口发送#NXP_T,意思就是下次广播,广播的名字要变成NXP_T

2 下面我们开始脑补代码应该的运行过程
n4.PNG
3 看起来很简单,但很多细节不做好,也是会失败的,首先我们定义一个结构体,来保存特殊字符和设备名,名字长度受限于广播数据长度,看过之前讲解beacon广播那篇文章的应该能明白
n2.PNG

4 本身广播数据是存放在advScanaStruct里的,这个数据类型是静态常量,所以直接对数据进行修改时不可以的,我们把静态常量这个类型去掉
同时,设备名名字默认是用常量字符串赋给aData,
  1. .aData = (uint8_t*)"NXP_WU"
复制代码

你之后如果直接对这个结构体里设备名的aData赋值修改也是会出现问题的。所以我们定义一个数组存放默认的设备名,再把数组地址赋值给aData
n3.PNG
5 编写设置广播的代码,按照之前脑补的逻辑,写好代码,这里需要注意的是一定要在赋值前,先把数组memset,否则下次memcpy时候会有上次的数据残留下来。
n1.PNG
6 这几步做完,就可以通过iot toolbox来修改广播的设备名了。原先设备名
a1.jpg
我们连上以后输入新的设备名
a2.jpg
最后再次扫描kw36,发现广播名字改变了
a3.jpg



frdmkw36_wireless_examples_bluetooth_w_uart_freertos.zip (2.1 MB, 下载次数: 3)
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-8-21 13:02 , Processed in 0.075918 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表