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
浏览量:1845
时间:
来源:请叫我东子
版权声明
即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。
最新资讯
-

即速应用,赋能企业玩转微信小程序智慧经营
作为国内领军的智慧商业经营服务商,即速应用始终秉承“让每个企业都拥有自己的智慧店铺”的愿景,持续赋能更多企业玩转智慧经营。即速应用旗下拥有“小程序搭建工具-即速应用”、“私域流量专家-即客云”等产品,帮助商家打通互联网全生态营销闭环。 -

即客云2.0重磅更新,让微信小程序运营更简单!
即客云作为一款基于企业微信的第三方工具,现从多维度提供超过30种功能,自上线以来,已服务多家企业,受到一致好评。近期,我们根据客户反馈和市场调研正式推出升级版 即客云2.0!更新了私域运营SOP,群日历功能,批量拓客,客户雷达,消息推送,个人欢迎语,帮助企业更好运用企业微信;同时提升了社群运营工作标准化,提升运营效率,帮助企业实现客户增长,玩转私域流量。 -

零代码 + AI 双轮驱动|即速应用解锁人工智能小程序开发新范式
无需代码、无需 AI 算法功底,普通人也能快速搭建智能小程序。即速应用将人工智能与零代码开发深度融合,推出 AI 智能生成能力,用户通过自然语言描述需求,AI 自动生成小程序页面、功能模块与后台配置,覆盖商城、预约、同城、社区团购等全场景。平台内置 AI 智能推荐、智能客服、用户画像分析等能力,一键对接微信生态,打通视频号、企业微信、短信跳转,帮企业快速落地 AI 应用,抢占智慧经营先机,让每家企业都拥有 AI 驱动的智慧店铺。










