上一帖学习了Silicon Labs BG22-EK4108A 的蓝牙led控制和按键状态反馈例程,其中最重要的是如下的服务和特征值:
编写微信小程序控制led亮灭和获取按键状态就是对这两个特征值的写操作和订阅通知实现。通知数据接收后需要进行处理展示,通过两个页面之间数据交换实现:
wx.onBLECharacteristicValueChange(function(res){
console.log(res);
var tmp =that.ab2hex(res.value);
var cdn = that.data.currDeviceName;
that.printLog("当前蓝牙设备名字: " + cdn + "," + "收到Notify数据: " + that.ab2hex(res.value));
//发送数据到其它页面
if(cdn=='Blinky Example')
{
event.emit('environmetDataChanged',tmp);
}
});
显示通知数据的页面:
//屏幕打开时执行的函数
onLoad: function () {
//接收别的页面传过来的数据
event.on('environmetDataChanged', this, function(data) {
//另外一个页面传过来的data是16进制字符串形式
console.log("接收到蓝牙设备发来的数据:"+data)
var a=parseInt(data[0]+data[1],16);
//实时修改显示值
var up0 = "charts[" + 0 + "].data";
this.setData({
[up0]:a,
});
})
},
接收到led控制数据'0'或者'1'就进行开关led:
发现服务过程,微信小程序调试日志显示发现的服务和SSV5中定义的一致:
微信小程序的日志,连接设备成功后会扫描设备有哪些服务,然后开始接收具有通知权限的数据:
demo界面:
led控制:
掌握了如何读写特征值,订阅通知数据,就能扩展很多有意思的应用了,比如开发板通过ADC采集传感器数据以通知的方式发送到微信小程序,演示效果:
引用: annysky2012 发表于 2022-1-25 16:54 用小程序控制,看起来就很高大上。
主要是方便跨平台
引用: lugl4313820 发表于 2022-2-8 11:23 历害了,前后端都会,才子,可以拜你为师吗?