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


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 相关文章推荐
javascript 当前日期加(天、周、月、年)
Aug 09 Javascript
Domino中运用jQuery读取视图内容的方法
Oct 21 Javascript
基于jquery的checkbox下拉框插件代码
Jun 25 Javascript
Web 前端设计模式--Dom重构 提高显示性能
Oct 22 Javascript
前端开发过程中浏览器版本的两种判定方法
Oct 30 Javascript
ES6中新增的Object.assign()方法详解
Sep 22 Javascript
AngularJS中的作用域实例分析
May 16 Javascript
使用webpack打包后的vue项目如何正确运行(express)
Oct 26 Javascript
vue 表单验证按钮事件交由父组件触发的方法
Dec 17 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
Jan 18 Javascript
webpack打包优化的几个方法总结
Feb 10 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
Feb 15 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自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
js直接编辑当前cookie的脚本
2008/09/14 Javascript
jquery 框架使用教程 AJAX篇
2009/10/11 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
js验证是否为数字的总结
2013/04/14 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
2013/12/23 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
javascript每日必学之循环
2016/02/19 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
Three.js快速入门教程
2016/09/09 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
Mac下安装vue
2018/04/11 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
pandas重新生成索引的方法
2018/11/06 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
jupyter 添加不同内核的操作
2021/02/06 Python
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
PHP如何自定义函数
2016/09/16 面试题
工作交流会欢迎词
2014/01/12 职场文书
2016年端午节寄语
2015/12/04 职场文书
校园安全教育心得体会
2016/01/15 职场文书
比较几种Redis集群方案
2021/06/21 Redis
javascript函数式编程基础
2021/09/15 Javascript
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android