找回密码
 立即注册
Qt开源社区 门户 查看内容

其实,嵌入式工程师也可以用小程序辅助开发!

2019-9-26 12:20| 发布者: admin| 查看: 566| 评论: 0

摘要: 微信小程序在移动互联网领域取得了巨大的成功,它依托微信这个广大的平台,以其免安装、跨平台、易于分享传播的优点,广泛地应用在各种场景,是继App后又一个革命性的信息展现方式。看上去所有这些成功带给嵌入式的 ...


微信小程序在移动互联网领域取得了巨大的成功,它依托微信这个广大的平台,以其免安装、跨平台、易于分享传播的优点,广泛地应用在各种场景,是继App后又一个革命性的信息展现方式。看上去所有这些成功带给嵌入式的改变微乎其微,但事实上微信小程序平台提供了诸如蓝牙、NFC、WiFi等控制手机设备的接口,为小程序和嵌入式外设通信创造了可能性。微信小程序的开发使用的语言是js,用腾讯自有的IDE开发环境,开发前需要申请注册账号,每次开发都要用绑定的微信扫描二维码才可以进入开发环境。流程虽然有点繁琐,但是腾讯提供了详细的文档,照着做下来还是比较容易的。本文通过实现一个BLE数据传输profile来梳理一下微信小程序的蓝牙模块。我先简单介绍一下这个叫做Qpp的BLE profile。这个profile的作用就是实现master和slave的数据传输。如图所示,该profile的service包含两个characteristic,分别具有write和notify的属性,对应着数据的写入和发出。


接下来我们就正式开始微信小程序实现Qpp这个的旅程。下图是实现这个profile的流程图,简略的表示了各个步骤和用到的方法。


①打开蓝牙适配器
和很多开发平台类似,开始使用蓝牙功能的时候,都需要对蓝牙模块进行初始化的工作。
我们在使用微信小程序蓝牙模块前,需要调用wx.openBluetoothAdapter方法来完成这项任务,在这个函数成功返回前,是不能调用任何其他的蓝牙函数的,代码如下。


说明一下,这个方法有三个用作回调函数的参数,但是开发者只需传入自己感兴趣的回调方法就可以了,我们的示例中只传入了success这个回调,用来处理成功打开蓝牙适配器后的操作。

在微信小程序里几乎所有的方法都是这种回调方式。

②扫描设备
在打开蓝牙适配器后,也就是在wx.openBluetoothAdapter的success回调里,要继续进行扫描设备。微信小程序通过wx.startBluetoothDevicesDiscovery方法来扫描周边的蓝牙设备,这个过程需要注意一点,就是扫描到的蓝牙设备需要有个回调方法来接收,这个回调方法不是传给wx.startBluetoothDevicesDiscovery做参数的,而是需要调用wx.onBluetoothDeviceFound注册一下。代码如下,图中的代码都是要放到wx.openBluetoothAdapter的success回调里的。


顺利的话,在调用完这两个方法后,我们就能够在wx.onBluetoothDeviceFound传入的回调方法里获得device对象了。

③连接设备
接着我们需要创建连接:wx.createBLEConnection是用来创建连接的方法,参数是扫描出来的device对象里的deviceId。代码如下。


④查询设备
当连接成功后,就需要发现设备的服务了,我们要实现Qpp的通信,所以我们只关心Qpp的service。如下,wx.getBLEDeviceServices获得到了device下可用的服务,我们又通过UUID过滤出了QPP的service。


⑤查询特征
接下来我们还需要用wx.getBLEDeviceCharacteristics获取我们关心的characteristic,同样需要用uuid来比较识别。当找到属性为notify的characteristic的时候,我们需要先通过wx.onBLECharacteristicValueChange注册一个接受数据的回调函数,再通过wx.notifyBLECharacteristicValueChange启用notify。


到了这一步,我们的微信小程序就能收到外设的数据了。
⑥写数据
如果需要给外设发数据,还需要最后一步,那就是找到属性是write的characteristic然后写入数据,写数据的方法是wx.writeBLECharacteristicValue。


写到这里,我们基本上把Qpp这个profile用微信小程序就实现了。小程序常见的蓝牙函数基本也都用到了,再开发其他的蓝牙功能也都是同样的道理了。总体上,微信小程序的蓝牙开发接口设计的中规中矩,很容易理解和上手开发,除此之外,还有微信一个天然的优势我们可以利用起来,就是微信提供了便利的云函数和云存储功能,我们在BLE开发当中的数据很方便就能传送到云端,这对及时准确的分析定位客户使用时遇到的问题有很大的帮助。暂时想到的就这些,水平有限,文中错误之处欢迎指正。
温馨提示:有嵌友实践过,在Android系统下没问题,可能是iOS对硬件操作的权限问题,所以iOS下小程序操作Bluetooth不是特别友好!



1.国产开源基础软件MiniGUI宣布支持RT-Thread!

2.既然C编译器是C语言写的,那第一个C编译器是怎样来的?

3.Oracle推出全球首个自治操作系统~

4.看好RISC-V的快来!芯来科技2020年校园招聘开始啦

5.重磅!嵌入式Linux GUI有了新选择!

6.Wi-Fi 6 认证计划启动:开启 Wi-Fi 新纪元



免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容

----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:嵌入式资讯精选,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了