更新记录

1.0.1(2023-01-03)

新增项目相关的蓝牙协议prot.js及其延伸js

1.0.0(2022-12-08)

首次提交,实现了蓝牙通信的api及简单页面(还包含项目需要的蓝牙协议等)


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.1.0 app-vue × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

yinrh-blue

蓝牙插件

  • 蓝牙搜索/连接的UI页面
  • 蓝牙API(详见blue.js)
  • 需要导入uni_modules/yinrh-core插件

组件介绍

yinrh-blue.uve 自定义蓝牙组件

  • template中,直接使用,无需import

blue.js 蓝牙操作API

1、导入js

import blueJs from '@/uni_modules/yinrh-blue/components/yinrh-blue/js/blue.js'

2、配置UUID

blueJs.config('meter_cj');

3、设置监听

blueJs.listener({
    stateChanged: (res) => {},
    notifyChanged: (res) => {},
});

4、定位,部分Android手机需要打开定位才能搜索到蓝牙设备

import locationJs from '@/uni_modules/yinrh-core/components/yinrh-core/js/location.js'

locationJs.location({
    that:this,
});

5、初始化蓝牙,调用blueJs.openAsync或者blueJs.open方法

blueJs.openAsync({
    that: this,
});

6、搜索蓝牙设备,调用blueJs.found方法

blueJs.found({
    deviceId: '', // 已连接的蓝牙设备ID
    prepare: (val) => {
        // 开始搜索的回调方法,用于重置数据等
    },
    finish: (val) => {
        // 结束搜索的回调方法,用于重置数据等
    },
    reject: (err) => {
        // 失败的回调方法
    },
    resolve: (dev) => {
        // 发现设备的回调方法,返回发现的设备
    },
});

7、连接设备,调用blueJs.connectAsync方法

let _connect = await blueJs.connectAsync({
    connect: '', // 已经连接的设备ID
    current: '', // 即将连接的设备ID
    that: this, // vue的this对象
    prepare: () => {
        // 准备连接的回调方法
    },
    finish: () => {
        // 完成连接的回调方法
    },
    result: (id) => {
        // 连接成功的回调方法
    },
}).catch((err) => {
    // 连接失败(包括mtu、notify、services等等的失败)的回调方法
});

8、发送指令到蓝牙设备

blueJs.sendCammand({
    deviceId: '', // 已经连接的设备ID
    buffer: [], // ArrayBuffer数组
});

prot.js 协议操作API

1、导入js

import protJs from '@/uni_modules/yinrh-blue/components/yinrh-blue/js/prot.js'

2、配置协议(配置密钥keys和类型type)

protJs.config('meter_cj');

3、封装指令(ArrayBuffer)

ArrayBuffer ab = protJs.buffer({
    meterId: '', // 表ID(8字节)
    index: -1, // =[-1|0|1], 密钥索引值,0-未开户、1-已开户,-1-不加密
    data: '', // 数据对象内容
    dataId: '3004', // 数据对象ID(2个字节)
    control:  '84', // 控制域(1字节)
    version: '17', // 协议框架版本(1字节)
});

4、透传指令(ArrayBuffer)

ArrayBuffer ab = protJs.report('');

5、处理数据(蓝牙返回的数据)

protJs.notify(buffer, {
    report: () => {
        // 透传的回调方法
    },
});

yinrh-blue/node_modules/crypto-js

  • 引用第三方库

隐私、权限声明

1. 本插件需要申请的系统权限列表:

定位权限、蓝牙权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问