更新记录

1.3.1(2023-10-22)

更新支持H6s不读标签的bug

1.3.0(2023-07-19)

更新为全局对象,切换页面不用重新初始化!退出时需要手动释放 调用 rfid.release()

1.2.2(2022-12-16)

修改了工作方式,仅仅在调用页面保持,调用结束可以退出销毁。

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.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原生插件配置”->”云端插件“列表中删除该插件重新选择


使用说明

  • 声明 : 本模块代码,仅兼容深圳市探索智能科技有限公司的设备,本公司保留最终解释权。
  • 机型 : H1/H2/H3,S1,H5/H5s,H6/H6s/H7,H8,R0/R1/R4/R8/R16,D1/D2.
  • 版本 : 1.3.1
  • 日期 : 2023年7月18日(最后更新日期)
  • 作者 : 施探宇

说明:

  1. 修改全局对象,使用完需要手动释放!

1. 引入模块

 var rfid = uni.requireNativePlugin("Tanso-Rfid-Module-Android");

2. 添加消息接口

    // 读写器消息(必须)
    plus.globalEvent.addEventListener('OnRfidResponse', function(e) {
         console.log("系统消息:" + e);
    });

    // 端口消息(非必须)
    plus.globalEvent.addEventListener('OnPortEvent', function(e) {
         console.log("端口事件:" + e.portType + "," + e.portEven);
    });

    // 蓝牙设备(非必须)
    plus.globalEvent.addEventListener('OnPortMessage', function(e) {
        console.log("蓝牙消息:" + e);
    });

    // 按键消息,扳机事件(非必须)
    plus.globalEvent.addEventListener('OnKeyEvent', function(e) {
        console.log("按键消息:" + e);
    });

3. 初始化系统

    //-------------------------------------------------------------------------
    // 设备初始化 (不区分大小写)
    //
    // rfid   : 读写器参数
    //          Reader#type='QM100/R2000/G2000/J2000/SLR1200',ch=1/2/4/8/16
    //
    // port   : 端口参数
    //          BLE#index=<n>/addr='xx.xx.xx.xx.xx.xx'/name='RFID_READER'
    //          USB#index=<n>/sn=xxxxxxxxxxx
    //          UART#path='ttyS<n>'/index=<n>,baud=115200
    //          TCP#ip='xxx.xxx.xxx.xxx',port=<n>
    //          UDP#ip='xxx.xxx.xxx.xxx',port=<n>
    //          SIO#index=0
    //
    // device : 设备类型参数,(仅针对安卓手持机,其他机型省略) [可选参数]
    //          "H5/H5S/H6/H6S/H7/H8/H9/H10"
    //
    //-------------------------------------------------------------------------
    rfid.rfidSystemInit({
        'rfid'   : "Reader#type='QM100',ch=1",
        'port'   : "BLE#dev='88:99:AA:BB:CC:DD'",
        //'device' : 'H1'
    },
    (ret) => {});

4. 开始扫描[蓝牙设备]

    rfid.rfidScanStart(
        (ret) => {
            // 发现设备,加入列表
            if (IsContainDev(this.devices, ret)) {
                // 已经添加,不再处理!
            } else {
                // 添加到列表
                this.devices.push(ret);
            }
    });

5. 停止扫描[蓝牙设备]

 rfid.rfidScanStop();

6. 连接到[设备]

    //  默认序号
    rfid.rfidConnectByIdx(dev.index);
    //  或者 指定序号
    rfid.rfidConnect({'sel' : 1},(ret)=>{});
    //  或者 指定路径
    rfid.rfidConnect({'path' : 'ttyS4'},(ret)=>{});

7. 开始轮询[标签]

    rfid.rfidSystemStart(
        (ret) => {
            // 有效标签
            if (ret.epc.length > 0) {
                // 不添加重复的数据
                if (IsContainTag(this.tags, ret)) {
                    // 重复标签,更新标签状态。
                    UpdateTag(this.tags, ret);
                } else {
                    //  新标签,添加序号和计数器
                    ret.index = this.tags.length;、
                    //  0开始计数
                    ret.count = 0;
                    //  添加标签
                    this.tags.push(ret);
                }
            }
        }
    );

8. 停止轮询[标签]

    rfid.rfidSystemStop();

9. 清空数据[标签]

    rfid.rfidSystemClean();

10. 读取[标签]

    rfid.rfidRead({
            'epc'  : tag.epc,   // 标签:默认是EPC内容
            'pass' : 0,         // 密码:(0x00000000~0xFFFFFFFF)
            'bank' : 'tid',     // 区域:(epc/tid/rfu/usr)
            'pos'  : 0,         // 起始:(0~63)
            'len'  : 12         // 长度:(1~64)(字节,必须是2的倍数)
        },
        (ret) => {}
    );

11.写入[标签]

 rfid.rfidWrite({
            'epc'  : tag.epc,   // 标签:默认是EPC内容
            'pass' : 0,         // 密码:(0x00000000~0xFFFFFFFF)
            'bank' : 'usr',     // 区域:epc/tid/rfu/usr
            'pos'  : 0,         // 起始:(0~63)
            'dat'  : '00112233445566778899' // 数据:hex格式
        },
        (ret) => {}
    );

12.锁定[标签]

    rfid.rfidLock({
            'epc'  : tag.epc,       // 标签:默认是EPC内容
            'pass' : 0,             // 密码:(0x00000000~0xFFFFFFFF)
            'area' : 'tid',         // 区域:epc/tid/rfu/usr/access/kill
            'type' : 'flash lock',  // 类型:flash lock/flash open/otp lock/otp open
        },
        (ret) => {}
    );

13.灭活[标签]

    rfid.rfidKill({
            'epc'  : tag.epc,   // 标签:默认是EPC内容
            'pass' : 0,         // 密码:灭活密码
        },
        (ret) => {}
    );

14.运行状态

    rfid.rfidIsRunning(
        (ret) => {
            console.log("运行状态:" + ret);
        }
    );
 // 或者
    var bRun = rfid.IsRunning();
 console.log("运行状态:" + bRun);

15.设置参数

 rfid.rfidSet({
  'tx_power' : 33,          // 功率:(0~33)
  'region' : 'CHINA_900',   // 区域:(CHINA_800/CHINA_900/USA/EROUP)
  'antenna' : 2,            // 天线:(0~15)
  'gpio'  : 1,              // 端口:(0~3)
  'hilo'  : 0,              // 高低:(0/1)
 },(ret)=>{});

不同设备用例

1. 设备H1/H2(蓝牙便携机)

    rfid.rfidSystemInit({
        'rfid' : "Reader#type='M100',ch=1",
        'port' : "BLE#addr='xx:xx:xx:xx:xx:xx'",
    },
    (ret) => {});

2. 设备H3/S1(蓝牙便携机)

    rfid.rfidSystemInit({
        'rfid' : "Reader#type='R2000',ch=1",
        'port' : "BLE#addr='xx:xx:xx:xx:xx:xx'",
    },
    (ret) => {});

3. 设备H5/H5s (Android手持机)

    rfid.rfidSystemInit({
        'rfid'   : "Reader#type='QM100',ch=1",
        'port'   : "SIO#index=0",
        'device' : 'H5'
    },
    (ret) => {});

4. 设备H6/H6s (Android手持机)

    rfid.rfidSystemInit({
        'rfid'   : "Reader#type='SLR1200',ch=1",
        'port'   : "SIO#index=0",
        'device' : 'H6S'
    },
    (ret) => {});

5. 设备H8 (Android手持机)

    rfid.rfidSystemInit({
        'rfid'   : "Reader#type='R2000',ch=1",
        'port'   : "USART#path='ttyS4'",
        'device' : 'H8'
    },
    (ret) => {});

6. 设备R1/R4/R8/R16/D2 (固定式读写器)

    // 串口模式
    rfid.rfidSystemInit({
        'rfid' : "Reader#type='R2000',ch=1/4/8/16", // 设备类型:ch=实际通道数
        'port' : "USART#path='ttyS1',baud=115200",  // 串口参数:path=实际的串口路径
    },
    (ret) => {});

    // 网口模式
    rfid.rfidSystemInit({
        'rfid' : "Reader#type='R2000',ch=1/4/8/16", // 设备类型:ch=实际通道数
        'port' : "TCP#ip='192.168.0.100',port=7000",// 网络接口
    },
    (ret) => {});

7. 使用红外扫描(H5/H5s/H6/H6s)


    // 初始化
  rfid.barcodeInit({
   'dev': 'H6S', // H5/H5s/H6/H6s
  });

    // 打开设备
  rfid.barcodeOpen({
            'key': 'mode',
            'val': 0
        },
        (ret) => {
            console.log("barcode:" + JSON.stringify(ret));           
        });

    // 开始扫描
    rfid.barcodeScanStart();

    // 停止扫描
    rfid.barcodeScanStop();

    // 关闭设备
    rfid.barcodeClose();

联系方式

  • 公司 : 深圳市探索智能科技有限公司
  • 网站 : http://www.ts-rfid.com
  • 作者 : 施探宇
  • 电话 : 18680399436(同微信号)
  • 邮箱 : Alecksty@163.com
  • 地址 : 广东省深圳市宝安区西乡航城工业区智汇创新中心B座西607室

隐私、权限声明

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

// 定位权限 Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION, // 外存储器 Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, // 蓝牙权限 Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH, // WIFI和网络权限 Manifest.permission.ACCESS_WIFI_STATE, Manifest.permission.CHANGE_WIFI_STATE, Manifest.permission.ACCESS_NETWORK_STATE, Manifest.permission.INTERNET,

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

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

许可协议

许可协议

深圳市探索智能科技有限公司设计并制作了此原生插件,插件永久免费,且不开源。

此插件主要用来和本公司的各种型号的RFID设备交互,并且不提供对其他公司的同类设备兼容支持。

任何人可以免费使用此插件,用于二次开发,不受任何限制!

  • 公司 : 深圳市探索智能科技有限公司
  • 网址 : http://www.ts-rfid.com
  • 作者 : 施探宇
  • 电话 : 18680399436
  • 日期 : 2022年1月5日

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