微信小程序扫描蓝牙及操作(低功耗)蓝牙数据(全套流程)

这篇具有很好参考价值的文章主要介绍了微信小程序扫描蓝牙及操作(低功耗)蓝牙数据(全套流程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Android与iOS之间的不同(开启蓝牙)

扫描蓝牙首先需要打开手机上的蓝牙。iOS只需打开蓝牙即可开始扫描蓝牙;Android需要打开蓝牙及位置信息才可以开始扫描蓝牙。下面的代码可以在扫描之前使用,用来检查是否已经很打开蓝牙及位置信息
官方地址https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.stopBluetoothDevicesDiscovery.html
代码如下:

wx.getSystemInfo({
      success: function (res) {
        var res = wx.getSystemInfoSync();
        if (!res.bluetoothEnabled && !res.locationEnabled) {
          wx.showModal({
            title: '提示',
            content: '您的蓝牙和GPS未开启,请先开启蓝牙和GPS',
            showCancel: false,
            success: function () {
              wx.navigateBack({
                delta: 1,
              })
            }
          })
        } else if (!res.bluetoothEnabled) {
          wx.showModal({
            title: '提示',
            content: '您的蓝牙未开启,请先开启蓝牙',
            showCancel: false,
            success: function () {
              wx.navigateBack({
                delta: 1,
              })
            }
          })
        } else if (!res.locationEnabled) {
          wx.showModal({
            title: '提示',
            content: '您的GPS未开启,请先开启GPS',
            showCancel: false,
            success: function () {
              wx.navigateBack({
                delta: 1,
              })
            }
          })
        } else if (res.bluetoothEnabled && res.locationEnabled) {
          if (callback) {// 这里是回调方法
            callback() // 这里是回调方法
          }
        }
      },
    })

二、打开与关闭蓝牙适配器

wx.openBluetoothAdapter与wx.closeBluetoothAdapter配套使用,在开始时调用wx.openBluetoothAdapter,在不需要继续扫描蓝牙的时候调用wx.closeBluetoothAdapter。
代码如下(示例):

//打开蓝牙适配器
wx.openBluetoothAdapter({
  success (res) {
    console.log(res)
  }
})
//关闭蓝牙适配器
wx.closeBluetoothAdapter({
  success (res) {
    console.log(res)
  }
})

三、开始与关闭搜寻附近的蓝牙外围设备

代码中的services是一个蓝牙设备中的UUID所包含的字符串。
(iOS的蓝牙ID名叫UUID,Android的蓝牙ID名叫MAC地址)只搜索ID中含有它的蓝牙设备。
代码如下(示例):

//开始搜寻附近的蓝牙外围设备
wx.startBluetoothDevicesDiscovery({
  services: ['FEE7'],
  success (res) {
    console.log(res)
  }
})
//关闭搜寻附近的蓝牙外围设备
wx.stopBluetoothDevicesDiscovery({
  success (res) {
    console.log(res)
  }
})

四、开启与取消监听搜索到新设备的事件

在开启监听之后你可以陆陆续续扫描到新的蓝牙设备(第一次扫描的不够全面,不能扫到附近所有蓝牙设备)
提示:Android扫描蓝牙能力不如iOS扫描蓝牙能力。大致形容(一共30个蓝牙设备在附近,且各不相同。安卓三次左右扫描到所有蓝牙设备。iOS一次左右扫描到所有蓝牙设备)
代码如下(示例):

// ArrayBuffer转16进度字符串示例
function ab2hex(buffer) {
  var hexArr = Array.prototype.map.call(
    new Uint8Array(buffer),
    function(bit) {
      return ('00' + bit.toString(16)).slice(-2)
    }
  )
  return hexArr.join('');
}
//开启监听搜索到新设备的事件
wx.onBluetoothDeviceFound(function(res) {
  console.log(res)
})
//取消监听搜索到新设备的事件
wx.offBluetoothDeviceFound()

五、获取蓝牙

获取在蓝牙模块生效期间所有搜索到的蓝牙设备。包括已经和本机处于连接状态的设备。

wx.getBluetoothDevices({
  success: function (res) {
    console.log(res)//蓝牙列表
  }
})

六、连接与断开蓝牙

想要读取、监听、修改(低功耗BLE)蓝牙的数据,也就必须先连接蓝牙。拿到蓝牙广播包并解密广播包。(利用上面的方法将广播包中的数据转16进制-----方法ab2hex()解密)

//开始连接蓝牙
    wx.createBLEConnection({
      deviceId: deviceId,
      success: function (res) {
		console.log(res)
     }
   })
//断开蓝牙连接
wx.closeBLEConnection({
   deviceId: deviceId,
  success (res) {
    console.log(res)
  }
})

七、读取、监听、修改(写入)蓝牙

微信小程序扫描蓝牙及操作(低功耗)蓝牙数据(全套流程)deviceId(这个设备的UUID), serviceId为Time顶上的UUID(这整个服务的UUID), characteristicId下面每个单独的小UUID(功能性UUID—读、监听、写入)。每个单独的模式下的Properties代表的就是可以进行读、监听、写入的功能。

// 读取低功耗蓝牙设备的特征值的二进制数据值。注意:必须设备的特征值支持 read 才可以成功调用
  Read: function (deviceId, serviceId, characteristicId, callback) {
    wx.readBLECharacteristicValue({
      deviceId: deviceId,
      serviceId: serviceId,
      characteristicId: characteristicId,
      success: function (res) {
        wx.onBLECharacteristicValueChange(function (res) {
          if (callback) {
            callback(res)
          }
        })
      },
      fail: function (res) {
        if (callback) {
          callback(res)
        }
      }
    })
  },
  //监听
  notify: function (deviceId, serviceId, characteristicId, callback) {
    wx.notifyBLECharacteristicValueChange({
      state: true,
      deviceId: deviceId,
      serviceId: serviceId,
      characteristicId: characteristicId,
      success: function (res) {
        if (callback) {
          callback(characteristicId)
        }
      },
      fail: function (res) {
        if (callback) {
          callback(res)
        }
      }
    })
  },
  //写入
  write: function (deviceId, serviceId, characteristicId, callback) {
    let buffer = new ArrayBuffer(1)
    let dataView = new DataView(buffer)
    dataView.setUint8(0, 0x01)
    wx.writeBLECharacteristicValue({
      deviceId: deviceId,
      serviceId: serviceId,
      characteristicId: characteristicId,
      value: buffer,
      success: function (res) {
        console.log(res)
        wx.onBLECharacteristicValueChange(function (res) {
          // console.log(res)
          if (callback) {
            callback(res)
          }
        })
      },
      fail: function (res) {
        // console.log(res)
        if (callback) {
          callback(res)
        }
      }
    })
  },

尾言

这也只是做完项目之后对于蓝牙扫描的一个总结。有大佬觉得不对需要补充的可以评论联系我,觉得有用或者不懂得兄弟也可以在下面评论,我也会把我所知道的都告诉你的。文章来源地址https://www.toymoban.com/news/detail-483405.html

到了这里,关于微信小程序扫描蓝牙及操作(低功耗)蓝牙数据(全套流程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp(小程序)低功耗蓝牙分包发送数据

    最近用uniapp开发的一个项目中用到了低功耗蓝牙,但是其中写入数据的时候不能超过20字节,所以就需要我们来进行分包操作了。 主要代码:

    2024年02月14日
    浏览(45)
  • 微信小程序连接蓝牙设备并传递数据

    流程图 分步详解 wx.getSystemInfo(Object object)  获取系统信息 获取操作系统及版本 页面加载的时候(或者app.js中 ) ↓ 初始化蓝牙模块  wx.openBluetoothAdapter(Object object) 在用户蓝牙开关未开启或者手机不支持蓝牙功能的情况下,通过错误码(errCode=10001),提示打开蓝牙或蓝牙功能

    2024年02月08日
    浏览(55)
  • 安卓手机(微信小程序)抓蓝牙通信数据包

    因为公司需要......所以我就弄了一下,参考了很多别人的文章。 成果:它可以抓取微信小程序、安卓APP的蓝牙数据通信包。 我是小米手机,所以我以我自己手机为例 第一步 打开开发者选项,打开 蓝牙调试日志 和 蓝牙数据包日志 开关(如果两者只有其中一个,只需开启一

    2024年02月13日
    浏览(63)
  • 微信小程序获取数据的方法——iBeacon蓝牙

    1.判断用户是否打开蓝牙: 由于iBeacon是基于蓝牙传输数据的,所以第一步要判断是否打开蓝牙,如果没有打开则提示用户去打开蓝牙,然后在下拉刷新时重新判断,确认用户打开之后再搜索iBeacon设备 2.通过wx.startBeaconDiscovery接口,搜索iBeacon设备,如需搜索多个设备,需要将

    2024年02月08日
    浏览(39)
  • uniapp微信小程序蓝牙连接与设备数据对接

    蓝牙连接并通信方法封装大致步骤。 初始化蓝牙并搜索; 获取并启用service服务; 数据读取和监听设备返回数据 需要使用uniapp官方提供api: 1、开启蓝牙适配器初始化蓝牙模块,获取手机蓝牙是否打开 2、开启蓝牙设备搜索 3、获取搜索到的设备信息 4、关闭蓝牙搜索 5、连接

    2024年02月04日
    浏览(49)
  • 保姆级微信小程序对接蓝牙设备教程。微信小程序发送不同蓝牙指令(定时发送,断开重连,判断是否有蓝牙权限等)

    本文是一个完整的对接设备,发送不同指令监听不同返回的完整示例,可根据实际项目按需更改。 注: app.showModal 为在app.js中封装的showModal方法, then(()={}) 代表用户点击 confirm ,可用 wx.showModal 代替。 公用方法 请求设备列表 1. 判断是否有蓝牙权限 2. 初始化蓝牙 wx.openBluet

    2024年03月20日
    浏览(65)
  • 微信小程序 - 蓝牙连接

    官网 蓝牙 (Bluetooth) | 微信开放文档        蓝牙低功耗是从蓝牙 4.0 起支持的协议,与经典蓝牙相比,功耗极低、传输速度更快,但传输数据量较小。常用在对续航要求较高且只需小数据量传输的各种智能电子产品中,比如智能穿戴设备、智能家电、传感器等,应用场景

    2024年02月05日
    浏览(61)
  • 微信小程序蓝牙连接 uniApp蓝牙连接设备

     蓝牙列表期待效果  代码  js里面注意getBLEDeviceCharacteristics获取特征值的时候,极个别设备参数write,read,notify是乱来的,需要自己打单独处理,通过对应write,read,notify 为true的时候拿到对应的uuid,

    2024年02月04日
    浏览(69)
  • 微信小程序获取蓝牙权限

    要获取微信小程序中的蓝牙权限,您可以按照以下步骤进行操作: 1. 在 app.json 文件中添加以下代码:    ```    \\\"permissions\\\": {      \\\"scope.userLocation\\\": {        \\\"desc\\\": \\\"需要获取您的地理位置授权以搜索附近的蓝牙设备。\\\"      },      \\\"scope.bluetooth\\\": {        \\\"desc\\\": \\\"需要获取您

    2024年02月11日
    浏览(30)
  • 基于SpringBoot停车微信小程序+92714(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、全套文案

    在信息飞速发展的今天,网络已成为人们重要的信息交流平台。每天都有大量的农产品需要通过网络发布,为此,本人开发了一个基于springboot停车微信小程序小程序。 对于本停车微信小程序的设计来说,它主要是采用后台采用java语言、springboot框架,它是应用mysql数据库、微

    2024年02月19日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包