温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

微信小程序如何实现蓝牙

发布时间:2021-07-05 11:38:03 来源:亿速云 阅读:265 作者:小新 栏目:web开发

这篇文章给大家分享的是有关微信小程序如何实现蓝牙的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

微信小程序 蓝牙的实现实例代码

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('onLoad') var that = this; // const SDKVersion = wx.getSystemInfoSync().SDKVersion || '1.0.0' // const [MAJOR, MINOR, PATCH] = SDKVersion.split('.').map(Number) // console.log(SDKVersion); // console.log(MAJOR); // console.log(MINOR); // console.log(PATCH); // const canIUse = apiName => { //  if (apiName === 'showModal.cancel') { //   return MAJOR >= 1 && MINOR >= 1 //  } //  return true // } // wx.showModal({ //  success: function(res) { //   if (canIUse('showModal.cancel')) { //    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: '../conn/conn?deviceId='+title+'&name='+name,     success: function(res){      // success     },     fail: function(res) {      // fail     },     complete: function(res) {      // complete     }    })  }, })

4.2连接 获取数据

/**  * 连接设备。获取数据  */ Page({   data: {     motto: 'Hello World',     userInfo: {},     deviceId: '',     name: '',     serviceId: '',     services: [],     cd20: '',     cd01: '',     cd02: '',     cd03: '',     cd04: '',     characteristics20: null,     characteristics01: null,     characteristics02: null,     characteristics03: null,     characteristics04: null,     result,   },   onLoad: function (opt) {     var that = this;     console.log("onLoad");     console.log('deviceId=' + opt.deviceId);     console.log('name=' + 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('device services:', res.services)             that.setData({ services: res.services });             console.log('device services:', that.data.services[1].uuid);             that.setData({ serviceId: that.data.services[1].uuid });             console.log('--------------------------------------');             console.log('device设备的id:', that.data.deviceId);             console.log('device设备的服务id:', 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('000000000000' + that.data.serviceId);                   console.log('device getBLEDeviceCharacteristics:', res.characteristics)                   for (var i = 0; i < 5; 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('cd01= ' + that.data.cd01 + 'cd02= ' + that.data.cd02 + 'cd03= ' + that.data.cd03 + 'cd04= ' + that.data.cd04 + 'cd20= ' + that.data.cd20);                   /**                    * 回调获取 设备发过来的数据                    */                   wx.onBLECharacteristicValueChange(function (characteristic) {                     console.log('characteristic value comed:', 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('notifyBLECharacteristicValueChanged success', 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('notifyBLECharacteristicValueChanged success', 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('notifyBLECharacteristicValueChanged success', 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('notifyBLECharacteristicValueChanged success', res)                     }                   })                 }, fail: function (res) {                   console.log(res);                 }               })             }               , 1500);           }         })       },       fail: function (res) {         // fail       },       complete: function (res) {         // complete       }     })   },   /**    * 发送 数据到设备中    */   bindViewTap: function () {     var that = this;     var hex = 'AA5504B10000B5'     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 => ('00' + x.toString(16)).slice(-2)).join('');   } })

5.效果展示

微信小程序如何实现蓝牙

发送校验指令。获取结果

微信小程序如何实现蓝牙

感谢各位的阅读!关于“微信小程序如何实现蓝牙”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI