黔优媒体网-软文媒体自助发稿平台!
  1. 行业资讯
  2. 正文

微信小程序

来源:黔优媒体网   时间:2024-09-19

本文主要介绍了微信小程序--ble蓝牙的实现方法。文中附上源码下载,具有很好的参考价值。下面跟着小编一起来看下吧

有一段时间没有。没有写关于小程序的文章了。3月28日,微信的api又一次新的更新。期待已久的蓝牙api更新。就开始撸一番。

源码地址

1.简述

蓝牙适配器接口是基础库版本 1.1.0 开始支持。

iOS 微信客户端 6.5.6 版本开始支持,Android 客户端暂不支持

蓝牙总共增加了18个api接口。

2.Api分类

搜索类

连接类

通信类

3.API的具体使用

详细见官网:

https://mp.weixin.qq.com/debug/wxadoc/dev/api/bluetooth.html#wxgetconnectedbluethoothdevicesobject

4. 案例实现

4.1 搜索蓝牙设备

/**
 * 搜索设备界面
Page({
 data: {
 logs: [],
 list:[],
 onLoad: function () {
 console.log( #39;onLoad #39;)
var that = this;
// const SDKVersion = wx.getSystemInfoSync().SDKVersion || #39;1.0.0 #39;
// const [MAJOR, MINOR, PATCH] = SDKVersion.split( #39;. #39;).map(Number)
// console.log(SDKVersion);
// console.log(MAJOR);
// console.log(MINOR);
// console.log(PATCH);
// const canIUse = apiName = {
// if (apiName === #39;showModal.cancel #39;) {
// return MAJOR = 1 MINOR = 1
// return true
// wx.showModal({
// success: function(res) {
// if (canIUse( #39;showModal.cancel #39;)) {
// console.log(res.cancel)
// })
 //获取适配器
 wx.openBluetoothAdapter({
 success: function(res){
 // success
 console.log( -----success---------- 
 console.log(res);
 //开始搜索
 wx.startBluetoothDevicesDiscovery({
 services: [],
 success: function(res){
 // success
 console.log( -----startBluetoothDevicesDiscovery--success---------- 
 console.log(res);
 fail: function(res) {
 // fail
 console.log(res);
 complete: function(res) {
 // complete
 console.log(res);
 fail: function(res) {
 console.log( -----fail---------- 
 // fail
 console.log(res);
 complete: function(res) {
 // complete
 console.log( -----complete---------- 
 console.log(res);
 wx.getBluetoothDevices({
 success: function(res){
 // success
 //{devices: Array[11], errMsg: getBluetoothDevices:ok }
 console.log( getBluetoothDevices 
 console.log(res);
 that.setData({
 list:res.devices
 console.log(that.data.list);
 fail: function(res) {
 // fail
 complete: function(res) {
 // complete
 onShow:function(){
 //点击事件处理
 bindViewTap: function(e) {
 console.log(e.currentTarget.dataset.title);
 console.log(e.currentTarget.dataset.name);
 console.log(e.currentTarget.dataset.advertisData);
 var title = e.currentTarget.dataset.title;
 var name = e.currentTarget.dataset.name;
 wx.redirectTo({
 url: #39;../conn/conn?deviceId= #39;+title+ #39; name= #39;+name,
 success: function(res){
 // success
 fail: function(res) {
 // fail
 complete: function(res) {
 // complete
})

4.2连接 获取数据

/**
 * 连接设备。获取数据
Page({
 data: {
 motto: #39;Hello World #39;,
 userInfo: {},
 deviceId: #39; #39;,
 name: #39; #39;,
 serviceId: #39; #39;,
 services: [],
 cd20: #39; #39;,
 cd01: #39; #39;,
 cd02: #39; #39;,
 cd03: #39; #39;,
 cd04: #39; #39;,
 characteristics20: null,
 characteristics01: null,
 characteristics02: null,
 characteristics03: null,
 characteristics04: null,
 result,
 onLoad: function (opt) {
 var that = this;
 console.log( onLoad 
 console.log( #39;deviceId= #39; + opt.deviceId);
 console.log( #39;name= #39; + opt.name);
 that.setData({ deviceId: opt.deviceId });
 * 监听设备的连接状态
 wx.onBLEConnectionStateChanged(function (res) {
 console.log(`device ${res.deviceId} state has changed, connected: ${res.connected}`)
 * 连接设备
 wx.createBLEConnection({
 deviceId: that.data.deviceId,
 success: function (res) {
 // success
 console.log(res);
 * 连接成功,后开始获取设备的服务列表
 wx.getBLEDeviceServices({
 // 这里的 deviceId 需要在上面的 getBluetoothDevices中获取
 deviceId: that.data.deviceId,
 success: function (res) {
 console.log( #39;device services: #39;, res.services)
 that.setData({ services: res.services });
 console.log( #39;device services: #39;, that.data.services[1].uuid);
 that.setData({ serviceId: that.data.services[1].uuid });
 console.log( #39;-------------------------------------- #39;);
 console.log( #39;device设备的id: #39;, that.data.deviceId);
 console.log( #39;device设备的服务id: #39;, that.data.serviceId);
 * 延迟3秒,根据服务获取特征 
 setTimeout(function () {
 wx.getBLEDeviceCharacteristics({
 // 这里的 deviceId 需要在上面的 getBluetoothDevices
 deviceId: that.data.deviceId,
 // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取
 serviceId: that.data.serviceId,
 success: function (res) {
 console.log( #39;000000000000 #39; + that.data.serviceId);
 console.log( #39;device getBLEDeviceCharacteristics: #39;, res.characteristics)
 for (var i = 0; i i++) {
 if (res.characteristics[i].uuid.indexOf( cd20 ) != -1) {
 that.setData({
 cd20: res.characteristics[i].uuid,
 characteristics20: res.characteristics[i]
 if (res.characteristics[i].uuid.indexOf( cd01 ) != -1) {
 that.setData({
 cd01: res.characteristics[i].uuid,
 characteristics01: res.characteristics[i]
 if (res.characteristics[i].uuid.indexOf( cd02 ) != -1) {
 that.setData({
 cd02: res.characteristics[i].uuid,
 characteristics02: res.characteristics[i]
 } if (res.characteristics[i].uuid.indexOf( cd03 ) != -1) {
 that.setData({
 cd03: res.characteristics[i].uuid,
 characteristics03: res.characteristics[i]
 if (res.characteristics[i].uuid.indexOf( cd04 ) != -1) {
 that.setData({
 cd04: res.characteristics[i].uuid,
 characteristics04: res.characteristics[i]
 console.log( #39;cd01= #39; + that.data.cd01 + #39;cd02= #39; + that.data.cd02 + #39;cd03= #39; + that.data.cd03 + #39;cd04= #39; + that.data.cd04 + #39;cd20= #39; + that.data.cd20);
 * 回调获取 设备发过来的数据
 wx.onBLECharacteristicValueChange(function (characteristic) {
 console.log( #39;characteristic value comed: #39;, characteristic.value)
 //{value: ArrayBuffer, deviceId: D8:00:D2:4F:24:17 , serviceId: ba11f08c-5f14-0b0d-1080-007cbe238851-0x600000460240 , characteristicId: 0000cd04-0000-1000-8000-00805f9b34fb-0x60800069fb80 }
 * 监听cd04cd04中的结果
 if (characteristic.characteristicId.indexOf( cd01 ) != -1) {
 const result = characteristic.value;
 const hex = that.buf2hex(result);
 console.log(hex);
 if (characteristic.characteristicId.indexOf( cd04 ) != -1) {
 const result = characteristic.value;
 const hex = that.buf2hex(result);
 console.log(hex);
 that.setData({ result: hex });
 * 顺序开发设备特征notifiy
 wx.notifyBLECharacteristicValueChanged({
 deviceId: that.data.deviceId,
 serviceId: that.data.serviceId,
 characteristicId: that.data.cd01,
 state: true,
 success: function (res) {
 // success
 console.log( #39;notifyBLECharacteristicValueChanged success #39;, res);
 fail: function (res) {
 // fail
 complete: function (res) {
 // complete
 wx.notifyBLECharacteristicValueChanged({
 deviceId: that.data.deviceId,
 serviceId: that.data.serviceId,
 characteristicId: that.data.cd02,
 state: true,
 success: function (res) {
 // success
 console.log( #39;notifyBLECharacteristicValueChanged success #39;, res);
 fail: function (res) {
 // fail
 complete: function (res) {
 // complete
 wx.notifyBLECharacteristicValueChanged({
 deviceId: that.data.deviceId,
 serviceId: that.data.serviceId,
 characteristicId: that.data.cd03,
 state: true,
 success: function (res) {
 // success
 console.log( #39;notifyBLECharacteristicValueChanged success #39;, res);
 fail: function (res) {
 // fail
 complete: function (res) {
 // complete
 wx.notifyBLECharacteristicValueChanged({
 // 启用 notify 功能
 // 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取
 deviceId: that.data.deviceId,
 serviceId: that.data.serviceId,
 characteristicId: that.data.cd04,
 state: true,
 success: function (res) {
 console.log( #39;notifyBLECharacteristicValueChanged success #39;, res)
 }, fail: function (res) {
 console.log(res);
 , 1500);
 fail: function (res) {
 // fail
 complete: function (res) {
 // complete
 * 发送 数据到设备中
 bindViewTap: function () {
 var that = this;
 var hex = #39;AA5504B10000B5 #39;
 var typedArray = new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function (h) {
 return parseInt(h, 16)
 console.log(typedArray)
 console.log([0xAA, 0x55, 0x04, 0xB1, 0x00, 0x00, 0xB5])
 var buffer1 = typedArray.buffer
 console.log(buffer1)
 wx.writeBLECharacteristicValue({
 deviceId: that.data.deviceId,
 serviceId: that.data.serviceId,
 characteristicId: that.data.cd20,
 value: buffer1,
 success: function (res) {
 // success
 console.log( success 指令发送成功 
 console.log(res);
 fail: function (res) {
 // fail
 console.log(res);
 complete: function (res) {
 // complete
 * ArrayBuffer 转换为 Hex
 buf2hex: function (buffer) { // buffer is an ArrayBuffer
 return Array.prototype.map.call(new Uint8Array(buffer), x = ( #39;00 #39; + x.toString(16)).slice(-2)).join( #39; #39;);
})

5.效果展示

发送校验指令。获取结果

以上就是微信小程序--Ble蓝牙的详细内容,更多请关注php中文网其它相关文章!

微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!


【免责申明】黔优媒体网以上展示内容来源于用户自主上传、合作媒体、企业机构或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表黔优媒体网官方立场,请读者仅做参考,本文标题:微信小程序;欢迎转载,转载时请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何违法/违规的内容,请您立即联系我们及时修正或删除。(邮箱号: kefu@qianu.com)