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


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更改class和id的方法
Oct 10 Javascript
ajax无刷新动态调用股票信息(改良版)
Nov 01 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
Sep 02 Javascript
jquery制作 随机弹跳的小球特效
Feb 01 Javascript
jquery实现二级导航下拉菜单效果
Dec 18 Javascript
浅谈javascript的url参数parse和build函数
Mar 04 Javascript
微信小程序页面开发注意事项整理
May 18 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 jQuery
利用vue.js把静态json绑定bootstrap的table方法
Aug 28 Javascript
小程序如何使用分包加载的实现方法
May 22 Javascript
javascript面向对象程序设计实践常用知识点总结
Jul 29 Javascript
Vue前端项目部署IIS的实现
Jan 06 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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
IE/FireFox具备兼容性的拖动代码
2007/08/13 Javascript
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
js获取本机的外网/广域网ip地址完整源码
2013/08/12 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
JS高级运动实例分析
2016/12/20 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
vue配置nprogress实现页面顶部进度条
2019/09/21 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
js实现购物车商品数量加减
2020/09/21 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
Python3.x和Python2.x的区别介绍
2013/02/12 Python
在RedHat系Linux上部署Python的Celery框架的教程
2015/04/07 Python
python daemon守护进程实现
2016/08/27 Python
Python中enumerate函数代码解析
2017/10/31 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
简历中个人自我评价范文
2013/12/26 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
社区平安建设汇报材料
2014/08/14 职场文书
财务管理专业自荐书
2014/09/02 职场文书
2014年学生会工作总结
2014/11/07 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
导游词之黄帝陵景区
2019/09/16 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript
Docker部署Mysql8的实现步骤
2022/07/07 Servers