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


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延迟加载
Mar 09 Javascript
splice slice区别
Oct 09 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
Feb 22 Javascript
IE中图片的onload事件无效问题和解决方法
Jun 06 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
Jun 12 Javascript
两行代码轻松搞定JavaScript日期验证
Aug 03 Javascript
微信小程序 PHP生成带参数二维码
Feb 21 Javascript
JQuery.dataTables表格插件添加跳转到指定页
Jun 09 jQuery
JavaScript设计模式之工厂模式简单实例教程
Jul 03 Javascript
解决layer.prompt无效的问题
Sep 24 Javascript
小程序实现文字循环滚动动画
Jun 14 Javascript
JavaScript数组reduce()方法的语法与实例解析
Jul 07 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出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
php正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
PHP分享图片的生成方法
2018/04/25 PHP
jquery 经典动画菜单效果代码
2010/01/26 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
2013/01/04 Javascript
javascript正则表达式使用replace()替换手机号的方法
2015/01/19 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
微信小程序 PHP后端form表单提交实例详解
2017/01/12 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
Python文件去除注释的方法
2015/05/25 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
Python实现随机漫步功能
2018/07/09 Python
Python魔法方法功能与用法简介
2019/04/04 Python
使用python实现kNN分类算法
2019/10/16 Python
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
维也纳通行证:Vienna PASS
2019/07/18 全球购物
英国健身专家:WIT Fitness
2021/02/09 全球购物
团组织关系介绍信
2014/01/12 职场文书
搞笑征婚广告词
2014/03/17 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
python 判断字符串当中是否包含字符(str.contain)
2022/06/01 Python
Java异常体系非正常停止和分类
2022/06/14 Java/Android
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL