微信小程序使用蓝牙小插件


Posted in Javascript onSeptember 23, 2019

本文实例为大家分享了微信小程序使用蓝牙小插件,供大家参考,具体内容如下

bluetooth.js

function BLE(options) {
 this.options = options || { locator: {} };
}

function ab2hex(buffer) {
 const hexArr = Array.prototype.map.call(
  new Uint8Array(buffer),
  function (bit) {
   return ('00' + bit.toString(16)).slice(-2)
  }
 )
 return hexArr.join('-')
};

BLE.prototype = {
 open: function (callback) {//打开适配器 成功 调用callback();
  wx.openBluetoothAdapter({
   success(res) {
    if (typeof callback != "undefined") {
     callback();
    }
   },
   fail(res) {
    console.log(res)
   }
  })
 },
 scan: function (callback) {//扫描设备 成功 调用callback(ls);
  wx.startBluetoothDevicesDiscovery({
   success(res) {
    wx.getBluetoothDevices({
     success(res) {
      console.log(res);
      var ls = [];
      for (var i = 0; i < res.devices.length; i++) {
       console.log(res.devices[i].name);
       ls[i] = {
        deviceId: res.devices[i].deviceId,
        name: res.devices[i].name
       };
      }
      if (typeof callback!= "undefined"){
       callback(ls);
      }
      
     }
    })
   },
   fail(res) {
    console.log(res)
    return 0;
   }
  })
 },
 link: function (deviceId, callback) {//连接设备 成功 调用callback();
  wx.createBLEConnection({
   // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
   deviceId: deviceId,
   success(res) {
    console.log(res);
    wx.getBLEDeviceServices({
     // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
     deviceId: deviceId,
     success(res) {
      console.log(res);

      wx.getBLEDeviceCharacteristics({
       // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
       deviceId: deviceId,
       // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取
       serviceId: ' ',
       success(res) {
        console.log(res)
        if (typeof callback != "undefined") {
         callback();
        }
       }
      })
     }
    })
   },
   fail(res) {
    console.log(res)
   }
  })
 },
 write: function (deviceId, value, callback) {//写入数据 成功 调用callback();
  const buffer = new ArrayBuffer(value.length);
  const dataView = new DataView(buffer);
  for (var i = 0; i < value.length; i++) {
   dataView.setUint8(i, value[i].charCodeAt());
  }
  console.log(buffer);
  console.log(buffer);
  wx.getBLEDeviceServices({
   // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
   deviceId: deviceId,
   success(res) {
    console.log(res);

    wx.getBLEDeviceCharacteristics({
     // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
     deviceId: deviceId,
     // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取
     serviceId: '4FAFC201-1FB5-459E-8FCC-C5C9C331914B',
     success(res) {
      wx.writeBLECharacteristicValue({
       deviceId: deviceId,
       serviceId: '4FAFC201-1FB5-459E-8FCC-C5C9C331914B',
       characteristicId: 'BEB5483E-36E1-4688-B7F5-EA07361B26B8',
       value: buffer,
       success: function (res) {
        console.log(res);
        if (typeof callback != "undefined") {
         callback();
        }
       },
       fail: function (res) {
        console.log(res);
       }
      })
     }
    })
   }
  })

  
 },
 read: function (deviceId, callback) {//读取数据 成功 调用callback(xmlString);
  wx.onBLECharacteristicValueChange(function (characteristic) {
   var board = ab2hex(characteristic.value);
   var bigData = board.split('-');
   var result = [];
   for (var i = 0; i < bigData.length; i++) {
    result.push(String.fromCharCode('0X' + bigData[i]));
   }
   var xmlString = result.join('');
   if (typeof callback != "undefined") {
    callback(xmlString);
   }
  });
  wx.readBLECharacteristicValue({
   // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
   deviceId: deviceId,
   // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取
   serviceId: '4FAFC201-1FB5-459E-8FCC-C5C9C331914B',
   // 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取
   characteristicId: 'BEB5483E-36E1-4688-B7F5-EA07361B26B8',
   success(res) {
    // console.log('readBLECharacteristicValue:', res.errCode);
    console.log(res);
   },
   fail(res) {
    console.log(res);
   }
  })
 },
 close: function (deviceId, callback) {//关闭蓝牙 成功 调用callback();
  wx.closeBLEConnection({
   deviceId: deviceId,
   success(res) {
    console.log(res);
    if (typeof callback != "undefined") {
     callback();
    }
   }
  })
  // wx.closeBluetoothAdapter({
  //  success(res) {
  //   console.log(res);
  //   if (typeof callback != "undefined"){
  //    callback();
  //   }
  //  }
  // }) 
 }
}

exports.BLE = BLE;

index.js

const Ble = require('../../lib/bluetooch/bluetooch');
var ble = new Ble.BLE();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
原生js和jQuery随意改变div属性style的名称和值
Oct 22 Javascript
JavaScript不刷新实现浏览器的前进后退功能
Nov 05 Javascript
每天一篇javascript学习小结(Boolean对象)
Nov 12 Javascript
Sublime Text 3常用插件及安装方法
Dec 16 Javascript
JavaScript制作简单的日历效果
Mar 10 Javascript
全面解析Bootstrap中form、navbar的使用方法
May 30 Javascript
JS实现获取剪贴板内容的方法
Jun 21 Javascript
JavaScript制作弹出层效果
Dec 02 Javascript
vue2.0+vue-dplayer实现hls播放的示例
Mar 02 Javascript
mpvue项目中使用第三方UI组件库的方法
Sep 30 Javascript
利用Node.js如何实现文件循环覆写
Apr 05 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
Oct 12 Javascript
微信小程序实现蓝牙打印
Sep 23 #Javascript
微信接入之获取用户头像的方法步骤
Sep 23 #Javascript
从零搭一个自用的前端脚手架的方法步骤
Sep 23 #Javascript
layui 实现加载动画以及非真实加载进度的方法
Sep 23 #Javascript
layui加载数据显示loading加载完成loading消失的实例代码
Sep 23 #Javascript
ES10的13个新特性示例(小结)
Sep 23 #Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
Sep 23 #Javascript
You might like
PHP--用万网的接口实现域名查询功能
2012/12/13 PHP
JavaScript之HTMLCollection接口代码
2011/04/27 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
理解javascript正则表达式
2016/03/08 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
基于滚动条位置判断的简单实例
2017/12/14 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
json_decode 索引为数字时自动排序问题解决方法
2020/03/28 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
[43:36]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python 文件管理实例详解
2015/11/10 Python
bpython 功能强大的Python shell
2016/02/16 Python
python实现八大排序算法(2)
2017/09/14 Python
python实现聚类算法原理
2018/02/12 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
tensorflow的计算图总结
2020/01/12 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
详解python tkinter 图片插入问题
2020/09/03 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
用CSS3将你的设计带入下个高度
2009/08/08 HTML / CSS
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
华为c/c++笔试题
2016/01/25 面试题
国外的一些J2EE面试题一
2012/10/13 面试题
学生出入校管理制度
2014/01/16 职场文书
放飞蜻蜓反思
2014/02/05 职场文书
网络编辑求职信
2014/04/30 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
经济国贸专业求职信
2014/06/18 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
男人帮观后感
2015/06/18 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android