当前位置:   article > 正文

微信硬件平台蓝牙设备开发(二)_jsapi 蓝牙接口

jsapi 蓝牙接口

微信硬件平台蓝牙设备开发——控制

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接口配置

  1. wx.config({
  2. beta:true, //设置为true ,会在注入wx.invoke方法来调用还未开放的jsapi方法。
  3. debug: true, //开启调试模式,
  4. appId:'wxf74686d92b161ff7', //登录公众号平台可见
  5. timestamp: <%=timestamp%>,
  6. nonceStr: '<%=nonceStr%>',
  7. signature: '<%=signature%>',
  8. jsApiList: [ //需要使用的JS接口列表,需要调用的方法都在此声明一下
  9. "openWXDeviceLib",//初始化设备库
  10. "closeWXDeviceLib",//关闭设备库
  11. "getWXDeviceInfos",//获取设备信息(已绑定的蓝牙设备列表)
  12. "sendDataToWXDevice",//发送数据给设备
  13. "startScanWXDevice",//扫描设备
  14. "stopScanWXDevice",//停止扫描
  15. "connectWXDevice",//连接
  16. "disconnectWXDevice",//断开连接
  17. "getWXDeviceTicket",//获取操作证书
  18. "onWXDeviceBindStateChange",//设备绑定状态被改变时触发
  19. "onWXDeviceStateChange",//监听连接状态
  20. "onReceiveDataFromWXDevice",//接收来自连接设备所发送的数据
  21. "onScanWXDeviceResult",//扫描到设备时会被触发
  22. "onWXDeviceBluetoothStateChange",//蓝牙开/关切换时触发
  23. ]
  24. });


签名算法获取signature(附录1中)


需要参数:noncestr(随机字符串)、timestamp(时间戳)、jsapi_ticket(临时票据)、url(当前网页的URL)。

示例代码:http://demo.open.weixin.qq.com/jssdk/sample.zip


  
  
4、 初始化库
config 初始化配置成功执行,则会自动调用wx.ready(function(){});所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。
  1. wx.ready(function () {
  2. wx.invoke("openWXDeviceLib", {"brandUserName":"gh_248e6ca70bbb"}, function (res) {
  3. alert("openWXDeviceLib" + JSON.stringify(res));
  4. });
  5. wx.on("onWXDeviceBluetoothStateChange", function (res) {
  6. alert("onWXDeviceBluetoothStateChange::" + JSON.stringify(res));
  7. });
  8. wx.on("onWXDeviceBindStateChange", function (res) {
  9. alert("onWXDeviceBindStateChange::" + JSON.stringify(res));
  10. });
  11. wx.on("onWXDeviceStateChange", function (res) {
  12. alert("onWXDeviceStateChange::" + JSON.stringify(res));
  13. });
  14. wx.on("onReceiveDataFromWXDevice", function (res) {
  15. console.log("onReceiveDataFromWXDevice:: " + str);
  16. });
  17. });


5、扫描设备


需要绑定设备时则需先扫描设备,当到某个设备的时候,html会收到事件回调(onScanWXDevicesResult)。

  1. function staScanWXDevice() {
  2. alert("staScanWXDevice");
  3. //监听扫描结果
  4. wx.on("onScanWXDeviceResult", function (res) {
  5. //解析res,获取deviceid,绑定设备需传人此字段
  6. });
  7. //开始扫描
  8. wx.invoke("startScanWXDevice", {"btVersion":"ble"}, function (res) {
  9. });
  10. }


6、绑定设备

  1. /绑定设备
  2. //先获取操作凭证(type为获取的操作凭证类型,1:绑定设备 2:解绑设备)deviceId 是扫描设备时解析出
  3. wx.invoke('getWXDeviceTicket',{"deviceId":"gh_248e6ca70bbb_5aab93a29ec00965","type":1},function(res){
  4. if(res.err_msg !="getWXDeviceTicket:ok"){
  5. alert("获取操作凭证失败,请重试");
  6. return;
  7. }else{
  8. alert("获取操作凭证成功");
  9. //2. 绑定操作应有后台完成,此处将deviceID和操作凭证传给后台进行绑定
  10. //绑定操作需传入用户对应的openid,后台数据库应存储此字段
  11. // 获取openid 需进行网页授权
  12. //https://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html }
  13. });


7、收发数据

当前用户绑定设备成功后,再次打开公众号时将尝试自动连接所绑定的设备,android 微信连接成功如图,当连上设备之后,即可对设备进行收发数据。收发数据前需进行base64的编解码。

发送数据:

  1. wx.invoke('sendDataToWXDevice', {'deviceId':'gh_248e6ca70bbb_5aab93a29ec0xxxx',"base64Data":base64encode('xxxx')}, function(res){
  2. alert("connectWXDevice"+JSON.stringify(res));
  3. if(res.err_msg =="sendDataToWXDevice:ok"){
  4. alert("数据发送成功");
  5. }else{
  6. alert("数据发送失败");
  7. }});

接收数据:

  1. //接收数据
  2. wx.on('onReceiveDataFromWXDevice',function(res){
  3. //base64解码
  4. });
以上实现了与蓝牙硬件设备间的信息交互,发送特定的指令到设备来实现对蓝牙硬件的控制。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/321126
推荐阅读
相关标签
  

闽ICP备14008679号