1.在前面已经写了两篇关于Android蓝牙和ios蓝牙开发的文章,今天带来的是微信小程序蓝牙实现。
Android蓝牙ios蓝牙(Swift)2.有一段时间没有。没有写关于小程序的文章了。3月28日,微信的api又一次新的更新。期待已久的蓝牙api更新。就开始撸一番。
源码地址1.简述蓝牙适配器接口是基础库版本1.1.0开始支持。iOS微信客户端6.5.6版本开始支持,Android客户端暂不支持蓝牙总共增加了18个api接口。2.Api分类搜索类连接类通信类3.API的具体使用3.详细见官网:
4.https://mp.weixin.qq.com/debug/wxadoc/dev/api/bluetooth.html#wxgetconnectedbluethoothdevicesobject
4.案例实现4.1搜索蓝牙设备/***搜索设备界面*/Page({data:{logs:[],list:[],},onLoad:function(){console.log('onLoad')varthatthis;//constSDKVersionwx.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);//constcanIUseapiName{//if(apiName'showModal.cancel'){//returnMAJOR1MINOR1//}//returntrue//}//wx.showModal({//success:function(res){//if(canIUse('showModal.cancel')){//console.log(res.cancel)//}//}//})//获取适配器wx.openBluetoothAdapter({success:function(res){//successconsole.log("-----success----------");console.log(res);//开始搜索wx.startBluetoothDevicesDiscovery({services:[],success:function(res){//successconsole.log("-----startBluetoothDevicesDiscovery--success----------");console.log(res);},fail:function(res){//failconsole.log(res);},complete:function(res){//completeconsole.log(res);}})},fail:function(res){console.log("-----fail----------");//failconsole.log(res);},complete:function(res){//completeconsole.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);vartitlee.currentTarget.dataset.title;varnamee.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:'HelloWorld',userInfo:{},deviceId:'',name:'',serviceId:'',services:[],cd20:'',cd01:'',cd02:'',cd03:'',cd04:'',characteristics20:null,characteristics01:null,characteristics02:null,characteristics03:null,characteristics04:null,result,},onLoad:function(opt){varthatthis;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}statehaschanged,connected:${res.connected}`)})/***连接设备*/wx.createBLEConnection({deviceId:that.data.deviceId,success:function(res){//successconsole.log(res);/***连接成功,后开始获取设备的服务列表*/wx.getBLEDeviceServices({//这里的deviceId需要在上面的getBluetoothDevices中获取deviceId:that.data.deviceId,success:function(res){console.log('deviceservices:',res.services)that.setData({services:res.services});console.log('deviceservices:',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需要在上面的getBluetoothDevicesdeviceId:that.data.deviceId,//这里的serviceId需要在上面的getBLEDeviceServices接口中获取serviceId:that.data.serviceId,success:function(res){console.log('000000000000'+that.data.serviceId);console.log('devicegetBLEDeviceCharacteristics:',res.characteristics)for(vari0;i5;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('characteristicvaluecomed:',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){constresultcharacteristic.value;consthexthat.buf2hex(result);console.log(hex);}if(characteristic.characteristicId.indexOf("cd04")!-1){constresultcharacteristic.value;consthexthat.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){//successconsole.log('notifyBLECharacteristicValueChangedsuccess',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){//successconsole.log('notifyBLECharacteristicValueChangedsuccess',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){//successconsole.log('notifyBLECharacteristicValueChangedsuccess',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('notifyBLECharacteristicValueChangedsuccess',res)}})},fail:function(res){console.log(res);}})},1500);}})},fail:function(res){//fail},complete:function(res){//complete}})},/***发送数据到设备中*/bindViewTap:function(){varthatthis;varhex'AA5504B10000B5'vartypedArraynewUint8Array(hex.match(/[da-f]{2}/gi).map(function(h){returnparseInt(h,16)}))console.log(typedArray)console.log([0xAA,0x55,0x04,0xB1,0x00,0x00,0xB5])varbuffer1typedArray.bufferconsole.log(buffer1)wx.writeBLECharacteristicValue({deviceId:that.data.deviceId,serviceId:that.data.serviceId,characteristicId:that.data.cd20,value:buffer1,success:function(res){//successconsole.log("success指令发送成功");console.log(res);},fail:function(res){//failconsole.log(res);},complete:function(res){//complete}})},/***ArrayBuffer转换为Hex*/buf2hex:function(buffer){//bufferisanArrayBufferreturnArray.prototype.map.call(newUint8Array(buffer),x('00'+x.toString(16)).slice(-2)).join('');}})5.效果展示5.发送校验指令。获取结果
微信小程序Ble蓝牙-微信小程序ble-微信小程序ibeacon
浏览量:1741
时间:
来源:请叫我东子
版权声明
即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

最新资讯
-
抖音再现本地生活服务,咫尺同城圈商业变现新通道
短视频成为本地生活探店网红营销变现引流的新阵地,每一位网红都渴望在短视频内“一夜爆红”。即速应用团队对多商家小程序进行升级,打造了咫尺同城圈:“同城探店营销助手”,不仅完善商家营销技巧,还助力探店网红玩转本地生活服务。 -
抖音再现本地生活服务,咫尺同城圈商业变现新通道
短视频成为本地生活探店网红营销变现引流的新阵地,每一位网红都渴望在短视频内“一夜爆红”。即速应用团队对多商家小程序进行升级,打造了咫尺同城圈:“同城探店营销助手”,不仅完善商家营销技巧,还助力探店网红玩转本地生活服务。 -
阿坝小程序代理
阿坝藏族羌族小程序代理公司有哪些?阿坝藏族羌族小程序代理平台哪个好?阿坝藏族羌族小程序代理商怎么收费,代理政策如何?下面就让即速应用产品经理jisuapp.cn来告诉你吧!