【Silicon Labs BG22-EK4108A 蓝牙开发评测】七、微信小程序控制led和接收按键状态2
<p>上一帖学习了Silicon Labs BG22-EK4108A 的蓝牙led控制和按键状态反馈例程,其中最重要的是如下的服务和特征值:</p><p></p>
<p></p>
<p>编写微信小程序控制led亮灭和获取按键状态就是对这两个特征值的写操作和订阅通知实现。通知数据接收后需要进行处理展示,通过两个页面之间数据交换实现:</p>
<pre>
<code class="language-javascript"> 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);
}
});</code></pre>
<p>显示通知数据的页面:</p>
<pre>
<code class="language-javascript">//屏幕打开时执行的函数
onLoad: function () {
//接收别的页面传过来的数据
event.on('environmetDataChanged', this, function(data) {
//另外一个页面传过来的data是16进制字符串形式
console.log("接收到蓝牙设备发来的数据:"+data)
var a=parseInt(data+data,16);
//实时修改显示值
var up0 = "charts[" + 0 + "].data";
this.setData({
:a,
});
})
},</code></pre>
<p>接收到led控制数据'0'或者'1'就进行开关led:</p>
<p></p>
<p>发现服务过程,微信小程序调试日志显示发现的服务和SSV5中定义的一致:</p>
<p>写特征值过程和按键状态通知接收过程的日志:</p>
<p>微信小程序的日志,连接设备成功后会扫描设备有哪些服务,然后开始接收具有通知权限的数据:</p>
<p></p>
<p>demo界面:</p>
<p></p>
<p>led控制:</p>
<p>按键状态通知订阅:</p>
<p> </p>
<p>掌握了如何读写特征值,订阅通知数据,就能扩展很多有意思的应用了,比如开发板通过ADC采集传感器数据以通知的方式发送到微信小程序,演示效果:</p>
<p><iframe allowfullscreen="true" frameborder="0" height="450" src="//player.bilibili.com/player.html?bvid=1zS4y1L7uc&page=1" style="background:#eee;margin-bottom:10px;" width="700"></iframe><br />
</p>
<p>蓝牙led控制和按键状态反馈测试的挺好</p>
用小程序控制,看起来就很高大上。 annysky2012 发表于 2022-1-25 16:54
用小程序控制,看起来就很高大上。
<p>主要是方便跨平台<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/congra.gif" width="48" /></p>
dql2016 发表于 2022-1-25 18:09
主要是方便跨平台
<p>是的,小程序做起来就是不一样</p>
历害了,前后端都会,才子,可以拜你为师吗? lugl4313820 发表于 2022-2-8 11:23
历害了,前后端都会,才子,可以拜你为师吗?
<p><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/smile.gif" width="48" /></p>
页:
[1]