更新记录

1.0.0(2026-08-13)

  • 首版:Android BLE + 经典蓝牙 SPP;iOS / 鸿蒙 / 微信小程序 BLE
  • 可配置协议档:yaohua_stx(STX…CR)、ascii_wwtemplate(正则)
  • RX 组帧:帧头/帧尾/定长/分隔符、缓冲区防爆
  • 连接后连续输出命令(默认 RN1)与无数据重试
  • 去皮 / 置零 / 切单位 / 原始命令发送(命令串可配)
  • onWeight 节流与 onlyStablegetLastWeightautoReconnectOnce
  • BLE UUID 与 discoverDelayMs 可配;nameHints 扫描过滤
  • 统一错误码 907xxxxx;App-nvue / uni-app x 声明

平台兼容性

uni-app(4.11)

Vue2 Vue3 Vue3插件版本 Chrome Safari app-vue app-vue插件版本 app-nvue app-nvue插件版本 Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本
× 1.0.0 × × 1.0.0 1.0.0 5.0 1.0.0 12 1.0.0 12 1.0.0
微信小程序 微信小程序插件版本 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
2.22.0 1.0.0 × × × × × × × × - × ×

uni-app x(4.11)

Chrome Safari Android Android插件版本 iOS iOS插件版本 鸿蒙 微信小程序 微信小程序插件版本
× × 5.0 1.0.0 12 1.0.0 × 2.22.0 1.0.0

breao-bleweight 使用说明

蓝牙电子秤接入插件,适用于收银、计件、巡检等连续称重场景。

当前版本:1.0.0

  • Android:BLE 与经典蓝牙 SPP
  • iOS / 鸿蒙 / 微信小程序:BLE
  • 能力:可配置协议档与组帧;连续称重回调;去皮 / 置零 / 切单位 / 原始命令
  • 不做 USB/RS232 有线秤、不做通用 BLE 调试器、不做多秤并行连接池

建议调用顺序:initstartScan / connect → 接收 onWeight 或发控制命令 → disconnect / destroy。各异步方法均支持 success / fail / completefailerrCode / errMsg。插件为单例连接语义:再次 init 会销毁上一实例。


1. 环境要求

  • HBuilderX 4.11 及以上
  • uni-app Vue3(App-vue / App-nvue)或 uni-app x(App;微信能力与 uni-app 一致)
  • 支持:App-Android、App-iOS、App-鸿蒙(仅 uni-app)、微信小程序
  • 不支持:H5 及其它小程序;uni-app x 下鸿蒙不支持
  • Android 最低 API:21;iOS 最低 12;鸿蒙最低 API:12;微信小程序基础库建议 2.22.0 及以上
  • App 真机调试须制作自定义基座;正式发版须购买授权后走云端传统打包
  • 授权绑定唯一 appid + 包名

2. 安装与引入

将插件目录放入工程的 uni_modules/breao-bleweight,或从插件市场导入后同步。

import {
  init,
  destroy,
  startScan,
  stopScan,
  connect,
  disconnect,
  getConnectionState,
  tare,
  zero,
  toggleUnit,
  sendRaw,
  getLastWeight,
} from '@/uni_modules/breao-bleweight'

3. API

3.1 init / destroy

init({
  transport: 'ble', // Android 老秤可设 'spp',详见 §4
  protocolProfile: 'yaohua_stx',
  onWeight(res) {
    console.log(res.weight, res.unit, res.stable)
  },
  onDisconnected(res) {
    console.log('disconnected', res)
  },
  success() {},
  fail(err) {
    console.error(err.errCode, err.errMsg)
  },
})

destroy({ success() {}, fail(err) { console.error(err.errCode, err.errMsg) } })

3.2 扫描与连接

startScan({
  timeout: 10000,
  success(res) {
    // res.devices: [{ name, address, rssi?, bonded? }]
  },
  fail(err) { console.error(err.errCode, err.errMsg) },
})

connect({
  address: 'XX:XX:XX:XX:XX:XX',
  success() {},
  fail(err) { console.error(err.errCode, err.errMsg) },
})

disconnect({ success() {}, fail() {} })
stopScan({ success() {}, fail() {} })

iOS 侧请先扫描再连接;Android SPP 建议系统已配对。参数默认值见 §4。

3.3 控制命令

tare({ success() {}, fail() {} })
zero({ success() {}, fail() {} })
toggleUnit({ success() {}, fail() {} })
sendRaw({ data: 'RN1', success() {}, fail() {} })

命令内容取自 init 中的 tareCommand / zeroCommand / toggleUnitCommand;亦可用 sendRaw 发送任意 ASCII 串。

3.4 状态与最近称重

getConnectionState({
  success(res) {
    // res.state: disconnected | connecting | connected
  },
})

getLastWeight({
  success(res) {
    // res.sample 为最近一次解析结果;尚无数据时为 null
  },
})

3.5 onWeight 字段

字段 类型 说明
weight number 主重量数值
unit string 单位,如 kg、g、lb
stable boolean 是否稳定
zero boolean 是否零位
overload boolean 是否超载
gross number 毛重;协议含则解析,否则可能缺省
net number 净重;协议含则解析,否则可能缺省
tare number 皮重;协议含则解析,否则可能缺省
raw string 原始帧文本

4. 可配置项

字段 位置 默认 说明
transport init ble ble 或 spp;spp 仅 Android;其它端选 spp 返回 9070009
protocolProfile init yaohua_stx 协议档:yaohua_stx、ascii_ww、template
debug init false 调试日志
bleServiceUuid init BLE 服务 UUID;无则遍历服务
bleNotifyUuid init 通知特征 UUID;无则宽松匹配首个可通知特征
bleWriteUuid init 写入特征 UUID;无则宽松匹配可写特征
bleChunkSize init 端默认 BLE 分片写字节数;经典 SPP 忽略
bleWriteInterval init 端默认 BLE 分片写间隔毫秒;经典 SPP 忽略
discoverDelayMs init 300 连接成功后延迟再发现服务/开通知,单位毫秒
continuousCommand init RN1 连接成功后发送的连续输出命令串;空串表示不自动发送
continuousRetryCount init 3 连接后若暂无称重数据,重发连续命令的次数
continuousRetryIntervalMs init 2000 无数据重试间隔,单位毫秒
tareCommand init ST07 去皮命令 ASCII 串,由 tare 发送
zeroCommand init SZ09 置零命令 ASCII 串,由 zero 发送
toggleUnitCommand init SU06 切单位命令 ASCII 串,由 toggleUnit 发送
frameHeader init 0x02 组帧帧头;yaohua_stx 默认 STX
frameTrailer init 0x0d 组帧帧尾;yaohua_stx 默认 CR
frameDelimiter init 分隔符组帧;非空时按分隔符切帧
frameFixedLen init 0 定长组帧字节数;大于 0 时按定长切帧
maxBufferSize init 4096 RX 缓冲区上限,防止粘包堆积占满内存
templateRegex init protocolProfile=template 时使用的正则,须能捕获重量
templateWeightGroup init 1 template 正则中重量所在捕获组序号(从 1 起)
weightThrottleMs init 0 onWeight 最小回调间隔毫秒;0 表示不节流
onlyStable init false true 时仅在 stable 为 true 时触发 onWeight
autoReconnectOnce init false 意外断线后自动重连一次
nameHints init / startScan 内置关键字 扫描名称过滤;默认含 SCALE、WEIGHT、YAOHUA 等
onWeight init 解析成功后的称重回调
onDisconnected init 被动断开回调
timeout startScan 10000 扫描超时毫秒
includeBonded startScan true 是否合并系统已配对设备(Android SPP 常用)
address connect 必填 设备地址:Android 多为 MAC;iOS/微信为 BLE deviceId
timeout connect 15000 连接超时毫秒
data sendRaw 必填 自定义 ASCII 命令串,按字节原样写出

不传参即用默认值。

4.1 协议档说明

档名 说明
yaohua_stx 以 STX(0x02)开头、CR(0x0D)结尾的帧;解析重量、单位及稳定/零位/超载等位(协议含则填)
ascii_ww 文本中含 ww/wn 等连续输出关键字的行式帧;ww 等视为稳定,wn 等视为未稳定
template 使用 templateRegex / templateWeightGroup 从帧文本提取重量;其它状态位按匹配结果尽力填充

5. 完整示例

import {
  init,
  startScan,
  connect,
  tare,
  getLastWeight,
  disconnect,
  destroy,
} from '@/uni_modules/breao-bleweight'

init({
  transport: 'ble',
  protocolProfile: 'yaohua_stx',
  continuousCommand: 'RN1',
  weightThrottleMs: 200,
  onWeight(res) {
    console.log('weight', res.weight, res.unit, 'stable=', res.stable)
  },
  onDisconnected() {
    console.log('scale disconnected')
  },
  success() {
    startScan({
      timeout: 8000,
      success(scanRes) {
        const dev = scanRes.devices && scanRes.devices[0]
        if (!dev) return
        connect({
          address: dev.address,
          success() {
            tare({
              success() {
                getLastWeight({
                  success(last) {
                    console.log('last', last.sample)
                    disconnect({ success() { destroy({}) } })
                  },
                })
              },
            })
          },
        })
      },
    })
  },
  fail(err) {
    console.error(err.errCode, err.errMsg)
  },
})

6. 权限

请在应用 manifest / 隐私弹窗中按需声明,并说明用于连接电子秤与接收称重数据。

平台 权限 说明
Android android.permission.BLUETOOTH 蓝牙基础访问(API≤30)
Android android.permission.BLUETOOTH_ADMIN 蓝牙管理(API≤30)
Android android.permission.BLUETOOTH_SCAN 蓝牙扫描(Android 12+)
Android android.permission.BLUETOOTH_CONNECT 蓝牙连接(Android 12+)
Android android.permission.ACCESS_FINE_LOCATION 蓝牙扫描辅助定位
Android android.permission.ACCESS_COARSE_LOCATION 蓝牙扫描辅助定位
iOS NSBluetoothAlwaysUsageDescription 始终访问蓝牙
iOS NSBluetoothPeripheralUsageDescription 蓝牙外设访问
鸿蒙 ohos.permission.ACCESS_BLUETOOTH 蓝牙访问
鸿蒙 ohos.permission.DISCOVER_BLUETOOTH 蓝牙发现
鸿蒙 ohos.permission.MANAGE_BLUETOOTH 蓝牙管理
微信 openBluetoothAdapter 初始化蓝牙适配器
微信 startBluetoothDevicesDiscovery 扫描蓝牙设备
微信 createBLEConnection 建立 BLE 连接
微信 getBLEDeviceServices 获取 BLE 服务
微信 getBLEDeviceCharacteristics 获取 BLE 特征
微信 writeBLECharacteristicValue 写入 BLE 特征
微信 notifyBLECharacteristicValueChange 订阅 BLE 通知
微信 onBLECharacteristicValueChange 接收 BLE 通知数据

7. 错误码(907)

含义
9070001 成功
9070002 失败(忙碌、连接失败等)
9070003 未初始化或配置缺失
9070004 蓝牙未开启或不可用
9070005 未连接
9070006 参数非法
9070007 当前平台不支持
9070008 驱动不匹配或创建失败
9070009 传输方式不支持(如非 Android 选 spp)
9070010 尚未实现(预留)
9070011 帧解析错误

8. 平台注意

  • Android 默认 transport: 'ble';老式经典蓝牙秤请设 transport: 'spp',建议系统先配对
  • Android 12+ 扫描通常需要定位权限;请在运行时申请并引导用户开启蓝牙
  • iOS / 微信几乎只能 BLE;iOS 请先 startScanconnect,以便缓存外设
  • 鸿蒙本期为 BLE GATT 通知读,不支持 spp
  • 耀华类秤连上后若无数据,插件会按配置发送 continuousCommand(默认 RN1)并重试
  • BLE UUID 留空时自动匹配可通知 / 可写特征;特殊机型请在 init 填写厂商 UUID
  • template 档须提供能捕获重量的正则,并用 templateWeightGroup 指定组号
  • 切换 transport 或彻底释放资源时,请 destroy 后再重新 init

隐私、权限声明

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

Android: android.permission.BLUETOOTH、android.permission.BLUETOOTH_ADMIN(API≤30); android.permission.BLUETOOTH_SCAN、android.permission.BLUETOOTH_CONNECT(Android 12+); android.permission.ACCESS_FINE_LOCATION、android.permission.ACCESS_COARSE_LOCATION(蓝牙扫描辅助)。 iOS: NSBluetoothAlwaysUsageDescription、NSBluetoothPeripheralUsageDescription。 鸿蒙: ohos.permission.ACCESS_BLUETOOTH、ohos.permission.DISCOVER_BLUETOOTH、ohos.permission.MANAGE_BLUETOOTH。 微信小程序: 蓝牙能力(openBluetoothAdapter、startBluetoothDevicesDiscovery、createBLEConnection、getBLEDeviceServices、getBLEDeviceCharacteristics、writeBLECharacteristicValue、notifyBLECharacteristicValueChange、onBLECharacteristicValueChange;需用户授权蓝牙)。 用途:电子秤扫描、连接、连续称重数据接收与控制命令发送。

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

不采集、不上传任何数据;称重数据仅经本机蓝牙从已连接电子秤读取,控制命令仅发往用户已连接的设备。

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

暂无用户评论。