当前位置:   article > 正文

微信公众号--设备功能----微信硬件数据上传_openwxdevicelib

openwxdevicelib


1、

js代码

  1. <!DOCTYPE html>
  2. <html>
  3. <script type="text/javascript" src="../../js/jquery-1.9.1.js"></script>
  4. <!-- 微信jssdk -->
  5. <script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
  6. <script type="text/javascript">
  7. function base64_to_bytes_array(base64String) {
  8. var result = new Array();
  9. if (base64String.length % 4 != 0 || base64String.length == 0) {
  10. return result;
  11. }
  12. var b64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
  13. // 先将后面的字段转换成原来的Byte数组
  14. var len = base64String.length;
  15. var endBytes = new Array();
  16. if (base64String.charAt(len - 1) == "=") {
  17. if (base64String.charAt(len - 2) == "=") { // 有两个等号的情况
  18. var s1 = base64String.charAt(len - 4); // 后面的第一个字符
  19. var s2 = base64String.charAt(len - 3); // 后面的第二个字符
  20. var v1 = ((b64Chars.indexOf(s1) << 2) & 0xFF) +
  21. (b64Chars.indexOf(s2) >> 4); //这个就是最后面的一个字节
  22. endBytes[0] = v1;
  23. } else { // 只有一个等号的情况
  24. var s1 = base64String.charAt(len - 4); // 后面的第一个字符
  25. var s2 = base64String.charAt(len - 3); // 后面的第二个字符
  26. var s3 = base64String.charAt(len - 2); // 后面的第三个字符
  27. var v1 = ((b64Chars.indexOf(s1) << 2) & 0xFF) +
  28. (b64Chars.indexOf(s2) >> 4); //这个就是最后面的第一个字节
  29. var v2 = ((b64Chars.indexOf(s2) << 4) & 0xFF) +
  30. (b64Chars.indexOf(s3) >> 2); //这个就是最后面的第二个字节
  31. endBytes[0] = v1;
  32. endBytes[1] = v2;
  33. }
  34. }
  35. var times = base64String.length / 4;
  36. for (var i = 0; i < times - (endBytes.length == 0 ? 0 : 1); i++) {
  37. var startIndex = i * 4;
  38. var V1 = base64String.charAt(startIndex + 0);
  39. var V2 = base64String.charAt(startIndex + 1);
  40. var V3 = base64String.charAt(startIndex + 2);
  41. var V4 = base64String.charAt(startIndex + 3);
  42. result[i * 3 + 0] = ((b64Chars.indexOf(V1) << 2) & 0xFF) +
  43. (b64Chars.indexOf(V2) >> 4);
  44. result[i * 3 + 1] = ((b64Chars.indexOf(V2) << 4) & 0xFF) +
  45. (b64Chars.indexOf(V3) >> 2);
  46. result[i * 3 + 2] = ((b64Chars.indexOf(V3) << 6) & 0xFF) +
  47. b64Chars.indexOf(V4);
  48. }
  49. return result.concat(endBytes);
  50. }
  51. wx.ready(function() {
  52. var DEVICEID = '';
  53. var SENDSTR = '';
  54. //初始化设备库 需填写参数 公众号的原始ID
  55. wx.invoke(
  56. 'openWXDeviceLib', {
  57. 'brandUserName': 'gh_d0a3'//公众号的原始ID 需要修改
  58. },
  59. function(res) {
  60. // alert("openWXDeviceLib|err_msg:"+res.err_msg);
  61. if (res.err_msg == 'openWXDeviceLib:ok') {
  62. if (res.bluetoothState == 'on') {
  63. if (res.isSupportBLE == 'yes') {
  64. //获取到设备信息
  65. wx.invoke(
  66. 'getWXDeviceInfos', {
  67. 'brandUserName': 'gh_d0a3'//公众号的原始ID 需要修改
  68. },
  69. function(res) {
  70. if (res.err_msg == 'getWXDeviceInfos:ok') {
  71. //alert('获取设备信息成功');
  72. for (var i = 0; i < res.deviceInfos.length; i++) {
  73. var did = res.deviceInfos[i].deviceId;
  74. var dstate = res.deviceInfos[i].state;
  75. if (dstate == 'connected') {
  76. DEVICEID = did;
  77. }
  78. }
  79. if (DEVICEID == '') {
  80. // alert('没有设备信息');
  81. //window.location.href = 'qrcode.html?v=1.0.3';
  82. // wx.invoke('startScanWXDevice', {}, function(res){
  83. // alert("扫描设备返回:"+res.err_msg);
  84. // });
  85. $.toast("还未绑定设备", "text");
  86. return false;
  87. }
  88. } else {
  89. alert('获取设备信息失败');
  90. return false;
  91. }
  92. });
  93. } else if (res.isSupportBLE == 'no') {
  94. alert('手机不支持BLE');
  95. return false;
  96. }
  97. } else if (res.bluetoothState == 'off') {
  98. alert('手机蓝牙没有打开');
  99. return false;
  100. } else if (res.bluetoothState == 'unauthorized') {
  101. alert('用户没有授权微信使用蓝牙功能');
  102. return false;
  103. }
  104. } else if (res.err_msg == 'openWXDeviceLib:fail') {
  105. alert('初始化设备库失败');
  106. return false;
  107. }
  108. });
  109. //手机蓝牙状态改变时触发 (这是监听事件的调用方法,注意,监听事件都没有参数)
  110. wx.on('onWXDeviceBluetoothStateChange', function(res) {
  111. //把res输出来看吧
  112. alert("onWXDeviceBluetoothStateChange:" + res.err_msg);
  113. });
  114. //设备绑定状态改变事件(解绑成功,绑定成功的瞬间,会触发)
  115. wx.on('onWXDeviceBindStateChange', function(res) {
  116. //把res输出来看吧
  117. alert("onWXDeviceBindStateChange:" + res.err_msg);
  118. });
  119. //设备连接状态改变
  120. wx.on('onWXDeviceStateChange', function(res) {
  121. //有3个状态:connecting连接中,connected已连接,unconnected未连接
  122. //每当手机和设备之间的状态改变的瞬间,会触发一次
  123. //alert("onWXDeviceStateChange:"+res.err_msg);
  124. });
  125. // 接收到设备数据
  126. wx.on('onReceiveDataFromWXDevice', function(res) {
  127. alert("res.base64Data:"+res.base64Data);
  128. var Bytes = base64_to_bytes_array(res.base64Data);
  129. alert("Bytes:"+Bytes);
  130. });
  131. });
  132. wx.config({
  133. beta:true, //坑:这个很重要,必须配置这个为true,才能调用微信的硬件API
  134. debug: false, //是否开启调试模式,会自动弹一些消息框显示微信返回的数据
  135. appId: '${appId}',
  136. timestamp:'${timestamp}',
  137. nonceStr: '${nonceStr}',
  138. signature: '${signature}',
  139. jsApiList: [ //需要调用的接口,都得在这里面写一遍
  140. "openWXDeviceLib",//初始化设备库(只支持蓝牙设备)
  141. "closeWXDeviceLib",//关闭设备库(只支持蓝牙设备)
  142. "getWXDeviceInfos",//获取设备信息(获取当前用户已绑定的蓝牙设备列表)
  143. "sendDataToWXDevice",//发送数据给设备
  144. "startScanWXDevice",//扫描设备(获取周围所有的设备列表,无论绑定还是未被绑定的设备都会扫描到)
  145. "stopScanWXDevice",//停止扫描设备
  146. "connectWXDevice",//连接设备
  147. "disconnectWXDevice",//断开设备连接
  148. "getWXDeviceTicket",//获取操作凭证
  149. //下面是监听事件:
  150. "onWXDeviceBindStateChange",//微信客户端设备绑定状态被改变时触发此事件
  151. "onWXDeviceStateChange",//监听连接状态,可以监听连接中、连接上、连接断开
  152. "onReceiveDataFromWXDevice",//接收到来自设备的数据时触发
  153. "onScanWXDeviceResult",//扫描到某个设备时触发
  154. "onWXDeviceBluetoothStateChange"//手机蓝牙打开或关闭时触发
  155. ]
  156. });
  157. </script>
  158. </html>


2、上面的代码需要修改的部分

①   'brandUserName': 'gh_d0a3'//公众号的原始ID ,2处需要修改

②   微信jssdk需要准备参数,在之前的文章中有提到,这里不再解释


3、注意,设备接收的数据根据相应硬件传输的格式解析。

  1. // 接收到设备数据
  2. wx.on('onReceiveDataFromWXDevice', function(res) {
  3. alert("res.base64Data:"+res.base64Data);
  4. var Bytes = base64_to_bytes_array(res.base64Data);
  5. alert("Bytes:"+Bytes);
  6. });



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

闽ICP备14008679号