更新记录
1.0.0(2026-04-10) 下载此版本
smart_school_uhf
平台兼容性
| HbuilderX/cli最低兼容版本 |
|---|
| 3.0.0 |
HBuilderX插件通用注意事项
HBuilderX-2.7.12以下版本安装插件市场内的插件后,卸载时需手动卸载,详细教程参考:如何手动卸载插件
智慧校园 UHF RFID 插件使用说明 (SmartSchool-UHF)
本插件为定制开发的 PDA UHF RFID uni-app 原生插件,主要用于在 uni-app 移动端项目中集成硬件 PDA 的 RFID 标签盘点与读取功能。
1. 插件配置与引入
1.1 插件目录结构
在您的 uni-app 项目根目录下,需保证包含以下文件结构(注意是放在 src/nativeplugins 目录下,以便通过 Vite 复制或被 HBuilderX 识别):
src/nativeplugins/
└── SmartSchool-UHF/
├── package.json # 插件配置文件
└── android/
├── uniplugin_uhf-release.aar # 插件主产物
├── App_Demo_API.jar # 硬件厂商依赖
├── DeviceAPIverxxx.jar # 硬件厂商依赖
├── ModuleAPI_J.jar # 硬件厂商依赖
├── UHF67_v3.6.jar # 硬件厂商依赖
├── logutil-1.5.1.1.jar # 硬件厂商依赖
└── reader(1).jar # 硬件厂商依赖
1.2 manifest.json 配置
在 uni-app 项目的 manifest.json 中,需要在 app-plus -> nativePlugins 节点下声明本插件:
"app-plus": {
"nativePlugins": {
"smart_school_uhf": {}
}
}
注意: 如果使用 Vue3/Vite 构建项目,在 HBuilderX 云打包前,确保上述 nativeplugins 文件夹已存在于打包输出根目录(如 dist/build/app/nativeplugins)。
2. API 接口说明
在页面/组件中,通过以下方式引入插件:
// 注意:引入的模块名称必须和 package.json 中配置的 module name 保持一致
const uhfPlugin = uni.requireNativePlugin('smart_school_uhf')
2.1 初始化模块 (initModule)
用于初始化 UHF RFID 硬件模块并设置默认功率。
uhfPlugin.initModule({}, (res) => {
if (res.code === 0) {
console.log('初始化成功:', res.msg)
} else {
console.error('初始化失败:', res.msg)
}
})
2.2 开启盘点 (startInventory)
开启硬件模块的异步循环读取模式。盘点到的标签数据将通过全局事件 onUhfInventory 持续返回。
uhfPlugin.startInventory({}, (res) => {
if (res.code === 0) {
console.log('开启盘点成功:', res.msg)
} else {
console.error('开启盘点失败:', res.msg)
}
})
2.3 停止盘点 (stopInventory)
停止标签读取循环。
uhfPlugin.stopInventory({}, (res) => {
if (res.code === 0) {
console.log('停止盘点成功:', res.msg)
}
})
2.4 关闭模块 (closeModule)
关闭并释放硬件模块资源。建议在页面卸载或 App 退出时调用。
uhfPlugin.closeModule({}, (res) => {
console.log('模块已关闭:', res.msg)
})
3. 全局事件监听 (接收标签数据)
在开启盘点(startInventory)后,插件底层会通过 fireGlobalEventCallback 持续向前端发送读取到的标签数据。前端需要注册一个全局事件监听器来接收数据。
监听事件名:onUhfInventory
// 在 Vue 组件的 onLoad 或 onMounted 中注册监听
plus.globalEvent.addEventListener('onUhfInventory', (event) => {
const epc = event.epc; // 标签的 EPC 编码 (十六进制字符串)
const rssi = event.rssi; // 信号强度
console.log('读取到标签:', epc, '信号强度:', rssi);
// TODO: 在这里处理您的业务逻辑,例如将 EPC 加入列表并去重
});
// 在 Vue 组件的 onUnload 或 onBeforeUnmount 中移除监听,防止内存泄漏
plus.globalEvent.removeEventListener('onUhfInventory');
4. 完整使用示例 (Vue 3 语法)
<template>
<view>
<button @click="initUHF">1. 初始化设备</button>
<button @click="startRead">2. 开始扫描</button>
<button @click="stopRead">3. 停止扫描</button>
<view>
<text>已扫描标签:</text>
<view v-for="(tag, index) in tagList" :key="index">
EPC: {{ tag.epc }} | RSSI: {{ tag.rssi }}
</view>
</view>
</view>
</template>
<script setup>
import { ref, onMounted, onUnmounted } from 'vue'
const uhfPlugin = uni.requireNativePlugin('smart_school_uhf')
const tagList = ref([])
// 初始化设备
const initUHF = () => {
uhfPlugin.initModule({}, (res) => {
uni.showToast({ title: res.msg, icon: res.code === 0 ? 'success' : 'none' })
})
}
// 开启扫描
const startRead = () => {
uhfPlugin.startInventory({}, (res) => {
console.log('扫描状态:', res.msg)
})
}
// 停止扫描
const stopRead = () => {
uhfPlugin.stopInventory({}, (res) => {
console.log('扫描状态:', res.msg)
})
}
// 监听回调处理函数
const handleInventory = (event) => {
const { epc, rssi } = event
// 简单去重逻辑
const exists = tagList.value.find(item => item.epc === epc)
if (!exists) {
tagList.value.push({ epc, rssi })
}
}
onMounted(() => {
// 注册全局事件监听
if (typeof plus !== 'undefined') {
plus.globalEvent.addEventListener('onUhfInventory', handleInventory)
}
})
onUnmounted(() => {
// 移除监听并关闭模块
if (typeof plus !== 'undefined') {
plus.globalEvent.removeEventListener('onUhfInventory', handleInventory)
}
if (uhfPlugin) {
uhfPlugin.closeModule({}, () => {})
}
})
</script>

收藏人数:
下载插件并导入HBuilderX
下载插件ZIP
赞赏(0)
下载 3
赞赏 0
下载 11542474
赞赏 1903
赞赏
京公网安备:11010802035340号