赞
踩
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.js3、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);
- });
- });
需要绑定设备时则需先扫描设备,当到某个设备的时候,html会收到事件回调(onScanWXDevicesResult)。
- function staScanWXDevice() {
- alert("staScanWXDevice");
- //监听扫描结果
- wx.on("onScanWXDeviceResult", function (res) {
- //解析res,获取deviceid,绑定设备需传人此字段
- });
-
- //开始扫描
- wx.invoke("startScanWXDevice", {"btVersion":"ble"}, function (res) {
- });
- }
- /绑定设备
- //先获取操作凭证(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 }
- });
-
当前用户绑定设备成功后,再次打开公众号时将尝试自动连接所绑定的设备,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解码
- });
以上实现了与蓝牙硬件设备间的信息交互,发送特定的指令到设备来实现对蓝牙硬件的控制。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。