uniapp 识别RFID

之前的项目要实现识别RFID的功能,那我们得先知道RFID是什么

RFID是什么

射频识别(英语:Radio Frequency IDentification,缩写:RFID)是一种无线通信技术,可以通过无线电信号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或者光学接触。

无线电的信号是通过调成无线电频率的电磁场,把数据从附着在物品上的标签上传送出去,以自动辨识与追踪该物品。某些标签在识别时从识别器发出的电磁场中就可以得到能量,并不需要电池;也有标签本身拥有电源,并可以主动发出无线电波(调成无线电频率的电磁场)。标签包含了电子储存的信息,数米之内都可以识别。与条形码不同的是,射频标签不需要处在识别器视线之内,也可以嵌入被追踪物体之内。

许多行业都运用了射频识别技术。将标签附着在一辆正在生产中的汽车,厂方便可以追踪此车在生产线上的进度。仓库可以追踪药品的位置。射频标签也可以附于牲畜与宠物上,方便对牲畜与宠物的积极识别(防止数只牲畜使用同一个身份)。射频识别的身份识别卡可以使员工得以进入建筑锁住的部分,汽车上的射频应答器也可以用来征收收费路段与停车场的费用。

RFID长这个样子

RFID图片
手持机长这个样子

手持机

实现的方法

这要用到 H5+ 中plus.android 里面的方法,具体实现方法如下

<template>  
    <view class="scanContent"></view>  
</template>  

<script>  
var main,receiver,filter;    
var _codeQueryTag = false;    
export default {  
    data() {  
        return {  
            scanCode: '',
				url:{
					xxx: '...',	// 需要手持机获取到的数据后调用的接口(业务接口)
				}
        }
    },  
    created: function (option) {  
        this.initScan()  
		this.startScan();    
    },    
    onHide:function(){    
        this.stopScan();    
    },  
    destroyed:function(){    
        /*页面退出时一定要卸载监听,否则下次进来时会重复,造成扫一次出2个以上的结果*/    
        this.stopScan();    
    },    
    methods: {  
        initScan() {  
            let _this = this;  
            main = plus.android.runtimeMainActivity();//获取activity  
            var IntentFilter = plus.android.importClass('android.content.IntentFilter');   
            filter = new IntentFilter();    
			// android.intent.ACTION_DECODE_DATA
            filter.addAction("android.intent.action.scanner.RFID"); // 换你的广播动作  net.deniro.android.MY_BROADCAST
            receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver',{  
				onReceive: function(context, intent) {
					plus.android.importClass(intent);     
					let code = intent.getStringExtra("data");// 换你的广播标签  
					// for(let i = 1; i < 3; i++){
					_this.queryCode(code);    
					// }
				},
			});    
        },    
        startScan(){ 
			main.registerReceiver(receiver,filter);  
        },    
        stopScan(){  
            main.unregisterReceiver(receiver);    
        },    

        // 这里的code就是获取到时数据信息
        queryCode: function(code){  
            //防重复  
            if(_codeQueryTag)return false;    
            _codeQueryTag = true;    
            setTimeout(function(){    
                _codeQueryTag = false;    
            },150);  
			
			
        },
    }  
}  
</script>  

<style>  
    page {  
        background-color: #efeff4;  
    }  
    .scanContent {  
        text-align: center;  
    }  
</style>


欢迎来到我的博客 踏浪而行 , 有更多好玩的工具和IT分享

猜你喜欢

转载自blog.csdn.net/weixin_45849072/article/details/129276803
今日推荐