温馨提示×

温馨提示×

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

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

微信小程序之Ble蓝牙的实现方法

发布时间:2021-03-01 13:43:55 来源:亿速云 阅读:322 作者:小新 栏目:移动开发

小编给大家分享一下微信小程序之Ble蓝牙的实现方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

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.效果展示

微信小程序之Ble蓝牙的实现方法

发送校验指令。获取结果

微信小程序之Ble蓝牙的实现方法

以上是“微信小程序之Ble蓝牙的实现方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

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

AI