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


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 相关文章推荐
asp.net 30分钟掌握无刷新 Repeater
Sep 16 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
Jun 09 Javascript
Bootstrap栅格系统学习笔记
Nov 25 Javascript
浅谈箭头函数写法在ReactJs中的使用
Aug 22 Javascript
使用canvas进行图像编辑的实例
Aug 29 Javascript
解决vue-router进行build无法正常显示路由页面的问题
Mar 06 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
Mar 09 Javascript
微信小程序实现搜索历史功能
Mar 26 Javascript
node基于async/await对mysql进行封装
Jun 20 Javascript
使用vue for时为什么要key【推荐】
Jul 11 Javascript
js实现图片跟随鼠标移动效果
Oct 16 Javascript
js实现限定区域范围拖拉拽效果
Nov 20 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 面向对象 PHP5 中的常量
2010/05/05 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
Javascript的一种模块模式
2008/03/22 Javascript
javascript 随机展示头像实现代码
2011/12/06 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
2016/05/12 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
JavaScript剩余操作符Rest Operator详解
2019/07/20 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
Python的词法分析与语法分析
2013/05/18 Python
python Django框架实现自定义表单提交
2016/03/25 Python
Python实现的双色球生成功能示例
2017/12/18 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
Python入门学习指南分享
2018/04/11 Python
python一键去抖音视频水印工具
2018/09/14 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
Python 如何展开嵌套的序列
2020/08/01 Python
Python实现迪杰斯特拉算法过程解析
2020/09/18 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
宣传口号大全
2014/06/16 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
精神病医院见习报告
2014/11/03 职场文书
辞职离别感言
2015/08/04 职场文书
学校教学管理制度
2015/08/06 职场文书
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang