微信硬件平台蓝牙设备开发(二)
2016-11-11 17:21
344 查看
微信硬件平台蓝牙设备开发——控制
JSAPI:微信JSAPI是网页javascript的接口,通过JSAPI可以对支持该接口的蓝牙设备进行操作。例如扫描设备,连接设备,收发数据,绑定设备等。
其与JS-SDK的关系:微信硬件JSAPI接口属于微信JS-SDK的一部分,所以硬件JSAPI的使用首先需要遵循微信JS-SDK的使用规范。
1、绑定域名
先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。域名配置有误会报错 “invalid url domain”。
2、引入JS文件
新建html页面,并引入如下JS文件:http://res.wx.qq.com/open/js/jweixin-1.0.0.js
3、config接口配置
wx.config({ beta:true, //设置为true ,会在注入wx.invoke方法来调用还未开放的jsapi方法。 debug: true, //开启调试模式, appId:'wxf74686d92b161ff7', //登录公众号平台可见 timestamp: <%=timestamp%>, nonceStr: '<%=nonceStr%>', signature: '<%=signature%>', jsApiList: [ //需要使用的JS接口列表,需要调用的方法都在此声明一下 "openWXDeviceLib",//初始化设备库 "closeWXDeviceLib",//关闭设备库 "getWXDeviceInfos",//获取设备信息(已绑定的蓝牙设备列表) "sendDataToWXDevice",//发送数据给设备 "startScanWXDevice",//扫描设备 "stopScanWXDevice",//停止扫描 "connectWXDevice",//连接 "disconnectWXDevice",//断开连接 "getWXDeviceTicket",//获取操作证书 "onWXDeviceBindStateChange",//设备绑定状态被改变时触发 "onWXDeviceStateChange",//监听连接状态 "onReceiveDataFromWXDevice",//接收来自连接设备所发送的数据 "onScanWXDeviceResult",//扫描到设备时会被触发 "onWXDeviceBluetoothStateChange",//蓝牙开/关切换时触发 ] });
签名算法获取signature(附录1中)
需要参数:noncestr(随机字符串)、timestamp(时间戳)、jsapi_ticket(临时票据)、url(当前网页的URL)。
示例代码:http://demo.open.weixin.qq.com/jssdk/sample.zip
4、初始化库config 初始化配置成功执行,则会自动调用wx.ready(function(){});所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。
wx.ready(function () { wx.invoke("openWXDeviceLib", {"brandUserName":"gh_248e6ca70bbb"}, function (res) { alert("openWXDeviceLib" + JSON.stringify(res)); }); wx.on("onWXDeviceBluetoothStateChange", function (res) { alert("onWXDeviceBluetoothStateChange::" + JSON.stringify(res)); }); wx.on("onWXDeviceBindStateChange", function (res) { alert("onWXDeviceBindStateChange::" + JSON.stringify(res)); }); wx.on("onWXDeviceStateChange", function (res) { alert("onWXDeviceStateChange::" + JSON.stringify(res)); }); wx.on("onReceiveDataFromWXDevice", function (res) { console.log("onReceiveDataFromWXDevice:: " + str); }); });
5、扫描设备
需要绑定设备时则需先扫描设备,当到某个设备的时候,html会收到事件回调(onScanWXDevicesResult)。
function staScanWXDevice() { alert("staScanWXDevice"); //监听扫描结果 wx.on("onScanWXDeviceResult", function (res) { //解析res,获取deviceid,绑定设备需传人此字段 }); //开始扫描 wx.invoke("startScanWXDevice", {"btVersion":"ble"}, function (res) { }); }
6、绑定设备
/绑定设备 //先获取操作凭证(type为获取的操作凭证类型,1:绑定设备 2:解绑设备)deviceId 是扫描设备时解析出 wx.invoke('getWXDeviceTicket',{"deviceId":"gh_248e6ca70bbb_5aab93a29ec00965","type":1},function(res){ if(res.err_msg !="getWXDeviceTicket:ok"){ alert("获取操作凭证失败,请重试"); return; }else{ alert("获取操作凭证成功"); //2. 绑定操作应有后台完成,此处将deviceID和操作凭证传给后台进行绑定 //绑定操作需传入用户对应的openid,后台数据库应存储此字段 // 获取openid 需进行网页授权 //https://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html } });
7、收发数据
当前用户绑定设备成功后,再次打开公众号时将尝试自动连接所绑定的设备,android 微信连接成功如图,当连上设备之后,即可对设备进行收发数据。收发数据前需进行base64的编解码。
发送数据:
wx.invoke('sendDataToWXDevice', {'deviceId':'gh_248e6ca70bbb_5aab93a29ec0xxxx',"base64Data":base64encode('xxxx')}, function(res){ alert("connectWXDevice"+JSON.stringify(res)); if(res.err_msg =="sendDataToWXDevice:ok"){ alert("数据发送成功"); }else{ alert("数据发送失败"); }});
接收数据:
//接收数据
wx.on('onReceiveDataFromWXDevice',function(res){
//base64解码
});
以上实现了与蓝牙硬件设备间的信息交互,发送特定的指令到设备来实现对蓝牙硬件的控制。
相关文章推荐
- 微信硬件平台蓝牙设备开发(一)
- 微信硬件平台设备直连全讲解(3)公众号的开发
- 微信硬件平台设备直连全讲解(1)开发前的准备
- 微信硬件蓝牙设备开发之设备解绑(13)
- [置顶] 微信硬件平台开发之蓝牙打印机(授权成功,连接成功)
- 微信硬件蓝牙开发教程之添加蓝牙设备(1)
- 微信蓝牙设备开发教程之获取蓝牙设备deviceid和设备二维码(2)
- 微信蓝牙设备开发教程之设备授权(3)
- 微信硬件蓝牙开发各种坑不完全开发指南
- 微信硬件蓝牙开发各种坑不完全开发指南
- 微信硬件平台设备直连全讲解(5)服务器和设备的交互之设备授权
- 微信硬件平台wifi设备通信第一篇
- 物联网架构演进和微信智能设备平台开发
- 基于微信硬件公众平台的智能控制开发流程
- 微信硬件蓝牙开发各种坑不完全开发指南
- 转载微信硬件蓝牙开发各种坑不完全开发指南
- 基于微信硬件公众平台的智能控制开发流程
- 基于微信硬件公众平台的智能控制开发流程
- 物联网架构演进和微信智能设备平台开发
- 基于微信硬件公众平台的智能控制开发流程