更新记录

1.0.5(2026-07-10)

sdk 104 版本更新

1.0.0(2025-12-20)

一、首次提交


平台兼容性

uni-app(4.62)

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

uni-app x(4.76)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

hl-iuhfq-uts — 设备型号=T91 Pro, iData Q3000 UHF RFID 读写器插件

基于 iUHFQ SDK V1.0.4,封装为 uni-app UTS 插件,支持 Android 平台。

这个插件能做什么?

  • 读写 RFID 标签:盘点、读取、写入、锁定、销毁
  • 蓝牙连接:扫描并连接 Q3000 蓝牙读写器
  • 设备配置:功率、Session、盘点模式、区域、蜂鸣器等
  • 固件升级:模块固件 + Q3000 固件

快速开始

第 1 步:导入插件

在页面中引入插件并获取客户端实例:

import { getUhfClient } from '@/uni_modules/hl-iuhfq-uts'
const uhf = getUhfClient()

第 2 步:注册标签回调(页面加载时)

必须做:在 onLoad 里注册回调,否则盘点时收不到标签数据。

import { onLoad, onUnload } from '@dcloudio/uni-app'

onLoad(() => {
  uhf.onTagCallback((res) => {
    if (res.code !== 0) return

    if (res.type === 'tagReport') {
      // 盘点到标签:res.epc / res.tid / res.count
      console.log('标签:', res.epc, 'TID:', res.tid)
    } else if (res.type === 'inventoryRate') {
      // 盘点速率:res.rate(标签/秒)
      console.log('速率:', res.rate)
    } else if (res.type === 'log') {
      // 诊断日志(排查问题时会用到)
      console.log('日志:', res.message)
    }
  })
})

第 3 步:初始化设备

有两种初始化方式,根据设备类型选择:

// 方式一:内置串口设备(直接初始化)
uhf.initDevice({ mode: 1 }, (res) => {
  if (res.code === 0) {
    console.log('初始化成功:', res.deviceModel)
    // 可以开始盘点或配置参数了
  } else {
    console.log('初始化失败:', res.message)
    // 如果失败,可能是蓝牙外接设备,请走方式二
  }
})

// 方式二:蓝牙外接 Q3000(先扫描再连接)
// 1. 扫描蓝牙设备
uhf.scanBluetooth((res) => {
  if (res.type === 'log') {
    console.log(res.message)  // 诊断日志
  }
  if (res.code === 0 && res.type === 'btDevice') {
    // res.devices 是扫描到的设备列表 [{name, mac, rssi}]
    // 选择 Q3000 设备进行连接
    const target = res.devices.find(d => d.name.includes('Q3000'))
    if (target) {
      // 2. 连接设备(连接成功后自动初始化)
      uhf.connectBluetooth({ mac: target.mac, mode: 1 }, (res) => {
        if (res.type === 'log') console.log(res.message)
        if (res.type === 'btConnected') {
          console.log('蓝牙连接并初始化成功')
          // 可以开始盘点了
        }
      })
    }
  }
})

第 4 步:开始盘点

// 最简单的方式:只盘 EPC(与官方 demo 一致,兼容性最好)
uhf.startInventory((res) => {
  if (res.code === 0) {
    console.log('盘点已开始,标签数据通过 onTagCallback 回调')
  }
})

// 需要高级配置时:
uhf.startInventoryEx(
  {
    readMode: 0,        // 0:仅EPC(推荐) / 1:EPC+TID / 2:EPC+TID+USER
    invMode: 0,         // 0:远距离 / 1:多标签
    enableFastId: true,
    isFilter: false     // true 时需设置 filterBank/filterAddress/filterLength/filterData
  },
  (res) => {
    if (res.code === 0) console.log('盘点已开始')
  }
)

// 停止盘点
uhf.stopInventory((res) => {
  // res.totalTags / res.uniqueTags / res.lastRate
})

接口列表

设备管理

方法 说明 参数
initDevice 初始化设备(串口模式) { mode?: 0\|1 }
disconnect 断开连接
getBatteryLevel 获取电池电量
getCurrentMode 获取当前工作模式 返回 currentMode: 0-扫描 / 1-RFID

盘点

方法 说明
startInventory 默认盘点(仅 EPC,与官方 demo 一致)
startInventoryTag 简单盘点(仅 EPC)
startInventoryEx 高级盘点(可配 readMode / 过滤等)
stopInventory 停止盘点
getTagList 获取已盘点的标签列表
clearTagList 清空标签列表

参数配置

方法 说明 参数
setPower / getPower 天线功率 { power: 0–33 }
setSession / getSession Session { session: 0–2 }
setInventoryMode 盘点模式 { mode: 0-远距离 / 1-多标签 }
setInventoryInterval 盘点间歇 { scanTime, waitTime }
setPerformanceMode 待机模式 { mode: 0-常规 / 1-低功耗 }
setRegion / getRegion 工作区域 { region: 0-北美 / 1-中国 / 2-欧洲 }
setTarget / getTarget Target { target: 0-A / 1-B / 2-A→B / 3-B→A }
setRssiFilter / getRssiFilter RSSI 过滤 { threshold } (0=关闭)
setAutoPowerOffTime 自动关机 { time } (分钟)
setBeep 蜂鸣器 { enable: boolean }
switchTriggerMode 扫描键锁定 { lock: boolean }

标签读写

方法 说明
readTag 读取标签数据
writeTag 写入标签数据
lockOrUnlockTag 锁定/解锁标签
killTag 销毁标签

存储区(bank)说明:0-保留区 / 1-EPC / 2-TID / 3-USER

// 读标签示例
uhf.readTag({ bank: 1, address: 2, length: 4, password: '00000000' }, (res) => {
  if (res.code === 0) console.log('读取数据:', res.readData)
})

// 写标签示例
uhf.writeTag({ bank: 1, address: 2, data: '30001234', password: '00000000' }, (res) => {
  if (res.code === 0) console.log('写入成功')
})

蓝牙

方法 说明
scanBluetooth 扫描蓝牙设备(只显示名称含 Q3000 的设备)
stopScanBluetooth 停止扫描
connectBluetooth 连接蓝牙设备(连接成功后自动初始化)

固件升级

方法 说明
getQ3000Version 查询 Q3000 版本
updateModuleFirmware 模块固件升级
updateQ3000Firmware Q3000 固件升级
uhf.updateModuleFirmware({ path: '/sdcard/module.bin' }, (res) => {
  if (res.type === 'firmwareProgress') console.log('进度:', res.progress + '%')
  if (res.type === 'firmwareSuccess') console.log('升级完成')
})

回调数据结构

所有接口的回调都返回 HlIuhfqUtsResult

字段 类型 说明
code number 0=成功,非0=失败
message string? 结果描述
type string? 回调类型(见下表)
level string? type="log" 时的日志级别:info / warn / error

type 字段含义

type 值 说明
tagReport 盘点标签上报(含 epc/tid/count)
inventoryRate 盘点速率上报(含 rate)
btDevice 蓝牙扫描设备列表上报(含 devices)
btConnected 蓝牙连接成功
btDisconnected 蓝牙已断开
btConnectionFailed 蓝牙连接失败
firmwareProgress 固件升级进度(含 progress 0-100)
firmwareSuccess 固件升级完成
firmwareFailure 固件升级失败
log 诊断日志(排查问题时查看 message 和 level)

诊断日志

插件内置全链路诊断日志,通过 type='log' 回传前端,方便排查问题:

uhf.onTagCallback((res) => {
  if (res.type === 'log') {
    console.log(`[${res.level}] ${res.message}`)
    // 在日志面板显示:addLog(res.message, res.level)
  }
})

日志覆盖范围:设备初始化每一步、蓝牙状态/权限/扫描流程、SDK 回调、异常堆栈、系统信息(型号/品牌/系统版本)。

Demo 页面说明

页面 功能
pages/uhf/uhf-demo.vue 主页:设备初始化、盘点、参数配置
pages/uhf/uhf-tag.vue 标签读写:读取、写入、锁定、销毁
pages/uhf/uhf-bluetooth.vue 蓝牙:扫描、连接、断开
pages/uhf/uhf-firmware.vue 固件升级

每个页面的操作日志区域都有「复制」按钮,可以一键复制日志发给开发者排查问题。

注意事项

  1. 先初始化再操作:所有读写/盘点操作前必须先 initDeviceconnectBluetooth 成功
  2. 内置设备 vs 蓝牙设备
    • 内置串口设备 → 用 initDevice
    • 蓝牙外接 Q3000 → 用 scanBluetooth + connectBluetooth(连接成功自动初始化)
    • 如果 initDevice 失败,大概率是蓝牙外接设备,请改走蓝牙连接
  3. 盘点模式readMode=0(仅 EPC)兼容性最好,与官方一致;readMode=1/2(读 TID/USER)部分设备可能不兼容
  4. 回调注册:页面 onLoad 必须调用 onTagCallback,否则收不到标签数据
  5. 及时断开:页面 onUnload 中调用 disconnect,释放设备连接

隐私、权限声明

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

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

插件不采集任何数据

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

暂无用户评论。