更新记录

1.6(2024-04-01)

新增GX模块适配

1.5(2024-01-03)

调整兼容最低版本号为Android5.0

1.4(2023-06-29)

1.新增频率设置、频率获取接口 2.兼容新的RFID模块

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:6.0 - 11.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


使用前请仔细阅读上方的官方教程↑↑↑

使用前请仔细阅读上方的官方教程↑↑↑

使用前请仔细阅读上方的官方教程↑↑↑

iData UHF扫描插件

用于接收iData品牌扫描UHF标签数据

插件类导入

示例代码

//获取module
var uhfModel = uni.requireNativePlugin("iData-UHFPlugin-UHFModule")

插件接口方法

1.初始化扫描 initUHF

建议在页面 onLoad 方法里调用

示例代码

//接口initUHF(int mode,UniJSCallback callback)
//参数说明:mode - 1为SLR模块,0为UM模块,2为GX模块,如不清楚设备模块类型,请联系技术人员
//使用示例
//注意:此方法较为耗时,若频繁调用可能会导致出现ANR问题
uhfModel.initUHF(0,(ret) => {
    console.log(ret);
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

2.获取模块上电结果

通过 globalEvent 全局监听 POWEREvent

示例代码

//页面监听event事件,建议在页面onShow方法里调用
var globalEvent = uni.requireNativePlugin('globalEvent');

globalEvent.addEventListener('POWEREvent', function(e) {
    console.log(JSON.stringify(e));
    //模块上电结果示例:{"status":"connected"}
    if(e["status"] == "connected"){
        //上电成功
    }
});

3.获取UHF盘点扫描结果

通过 globalEvent 全局监听 iDataUHFEvent

示例代码

//页面监听event事件,建议在页面onShow方法里调用
var globalEvent2 = uni.requireNativePlugin('globalEvent');

globalEvent2.addEventListener('iDataUHFEvent', function(e) {
    console.log(JSON.stringify(e));
    //盘点扫描结果示例:{"tid":"0000","epc":"0000"}
});

4.开始/结束扫描 startOrStopRFID

根据业务进行触发,切换盘点开始或结束

示例代码

//接口closeScan(UniJSCallback callback)
//注意:调用前需确保模块上电成功,通常调用初始化接口后2-3秒会上电成功
uhfModel.startOrStopRFID((ret) => {
    console.log(JSON.stringify(ret));
    //开始/结束扫描结果示例:{"code":"success","msg":"start"}
    //说明:msg为start当前为盘点开始,否则为盘点结束
});

5.盘点标签返回的数据内容模式设置 readTagModeSet

默认盘点标签时仅返回标签的epc数据,如需返回其他区域的数据,需调用这个接口进行设置

示例代码

//接口readTagModeSet(int mode, UniJSCallback callback)
//参数说明:mode - 设置0只读取标签EPC,1读取标签EPC和TID
//注意:部分模块仅支持盘点标签时返回epc数据,如接口返回失败通常为模块不支持该功能,实际请以设备自带UHFDemo测试为准。
//注意:调用前需确保模块上电成功,通常调用初始化接口后2-3秒会上电成功
uhfModel.readTagModeSet(1, (ret) => {
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

6.盘点标签返回的数据内容模式获取 readTagModeGet

示例代码

//接口readTagModeGet(UniJSCallback callback)
uhfModel.readTagModeGet((ret) => {
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

7.模块下电 closeUHF

示例代码

//建议在页面生命周期onHide和onUnload进行调用
//同时需移除globalEvent,避免页面再次打开时重复接收数据
//接口closeUHF()
uhfModel.closeUHF();
globalEvent.removeEventListener('POWEREvent');
globalEvent.removeEventListener('iDataUHFEvent');

8.单标签读取,无过滤条件 readTagWithoutFilter

仅适用于单张标签的读取,建议适当调低天线功率,避免误读。

示例代码

//接口readTagWithoutFilter(int readBank, int startBlock, int len, String pwd, UniJSCallback callback)
//参数说明:
//readBank:0->RESERVED,1->EPC,2->TID,3->USR
//startBlock:读取的起始地址(Word类型)
//len:读取的数据长度(Word类型,大于0)
//pwd:访问密码,默认密码为:00000000
//注意:Word类型,一个长度表示标签存储4位字符
//EPC从地址2开始读取,tid通常从地址0开始读取
uhfModel.readTagWithoutFilter(1, 2, 6, "00000000", (ret) => {
    //返回数据示例:{"code":"success","data","12345678"}
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

9.单标签写入,无过滤条件 writeTagWithoutFilter

仅适用于单张标签的数据修改,建议适当调低天线功率,避免误读。

示例代码

//接口writeTagWithoutFilter(int writeBank, int startBlock, String writeData, String pwd, UniJSCallback callback)
//参数说明:
//writeBank:0->RESERVED,1->EPC,2->TID,3->USR
//startBlock:读取的起始地址(Word类型)
//writeData:写入的数据
//pwd:访问密码,默认密码为:00000000
//注意:Word类型,一个长度表示标签存储4位字符
uhfModel.writeTagWithoutFilter(1, 2, "1234567890ABCDEF", "00000000", (ret) => {
    //返回数据示例:{"code":"success"}
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

10.单标签读取,有过滤条件 readTagWithFilter

仅适用于单张标签的读取,建议适当调低天线功率,避免误读。

示例代码

//接口readTagWithFilter(int fBank, int fStartBlock, int fLen, String fData, int readBank, int startBlock, int len, String pwd, UniJSCallback callback)
//参数说明:
//过滤条件
//fBank:操作区域 0->RESERVED,1->EPC,2->TID,3->USR
//fStartBlock:起始地址,bit类型(4个长度代表标签存储1个字符)
//fLen:数据长度,bit类型(4个长度代表标签存储1个字符)
//fData:过滤数据
//读标签条件
//readBank:0->RESERVED,1->EPC,2->TID,3->USR
//startBlock:读取的起始地址(Word类型)
//len:读取长度(Word类型)
//pwd:访问密码,默认密码为:00000000
//注意:Word类型,一个长度表示标签存储4位字符
uhfModel.readTagWithFilter(1, 32, 32, "12345678", 1, 2, 6, "00000000", (ret) => {
    //返回数据示例:{"code":"success","data","12345678"}
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

11.单标签写入,有过滤条件 writeTagWithFilter

仅适用于单张标签的数据修改,建议适当调低天线功率,避免误读。

示例代码

//接口writeTagWithFilter(int fBank, int fStartBlock, int fLen, String fData, int writeBank, int startBlock, String writeData, String pwd, UniJSCallback callback)
//参数说明:
//过滤条件
//fBank:操作区域 0->RESERVED,1->EPC,2->TID,3->USR
//fStartBlock:起始地址,bit类型(4个长度代表标签存储1个字符,epc通常从32开始)
//fLen:数据长度,bit类型(4个长度代表标签存储1个字符)
//fData:过滤数据
//写标签条件
//writeBank:0->RESERVED,1->EPC,2->TID,3->USR
//startBlock:读取的起始地址(Word类型)
//writeData:写入的数据(Word类型)
//pwd:访问密码,默认密码为:00000000
//注意:Word类型,一个长度表示标签存储4位字符
uhfModel.writeTagWithFilter(1, 32, 32, "12345678", 1, 2, "1234567890ABCDE1", "00000000", (ret) => {
    //返回数据示例:{"code":"success"}
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

12.盘点模式设置 inventoryModeSet

不同的盘点模式适应不同的使用场景

示例代码

//接口inventoryModeSet(int mode, UniJSCallback callback)
//参数说明:mode - UM设置0:多标签模式,侧重读全标签,读取距离较近 1:快盘模式,侧重快速读取标签,读取距离较远 2.低功耗模式  SLR设置0:异步模式 SLR5100模组使用  2:智能控温模式(不支持设置占空比)  3:新快速模式 E系列模组使用(不支持设置占空比)  4:普通模式
uhfModel.inventoryModeSet(0, (ret) => {
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

13.盘点模式获取 inventoryModeGet

示例代码

//接口inventoryModeGet(UniJSCallback callback)
uhfModel.inventoryModeGet((ret) => {
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

14.占空比参数设置 inventoryWaitTimeSet

用于解决长时间盘点标签,导致模块发热并降低性能 注有些模式不支持设置占空比

示例代码

//接口inventoryWaitTimeSet(int scanTime, int waitTime, boolean save, UniJSCallback callback)
//参数说明:
//scanTime:盘点时间
//waitTime:休眠时间
//save:是否断电保存配置
uhfModel.inventoryWaitTimeSet(0, (ret) => {
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

15.占空比参数获取 inventoryWaitTimeGet

示例代码

//接口inventoryWaitTimeGet(UniJSCallback callback)
uhfModel.inventoryWaitTimeGet((ret) => {
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

16.天线功率参数设置 setPower

天线功率直接影响读取标签的距离,值越大,读取的距离越远

示例代码

//接口setPower(int power, UniJSCallback callback)
//参数说明:
//power:0-33
//不同模块支持的功率值不同,如果返回失败通常是不支持
uhfModel.setPower(20, (ret) => {
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

17.天线功率参数获取 getPower

示例代码

//接口getPower(UniJSCallback callback)
uhfModel.getPower((ret) => {
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

18.频率设置 setFrequencyMode mode 0:中国(840-845MHz),1:中国(920-925MHz),2:欧洲(865-868MHz), 3:美国(902-928MHz)

示例代码

//接口 setFrequencyMode(int mode , UniJSCallback callback)
uhfModel.setFrequencyMode(1,(ret) => {
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

19.频率获取 getFrequencyMode

### 示例代码

// 接口 getFrequencyMode(UniJSCallback callback)
uhfModel.getFrequencyMode((ret) => {
    modal.toast({
        message: ret,
        duration: 1.5
    });
});

备注

示例代码用到modal变量,用于显示Toast信息,导入方法如下:

const modal = uni.requireNativePlugin('modal');

隐私、权限声明

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

无,安卓原生插件开发定制模块,不需要安卓系统任何权限

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

插件不采集任何数据

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

许可协议

iData Copyright (c) 2021 Lzy

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

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