目 录CONTENT

文章目录

uniapp 实现手持机识别RFID

萧瑟
2023-03-01 / 3 评论 / 2 点赞 / 1,509 阅读 / 2,311 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-12-19,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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

RFID是什么

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

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

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

RFID长这个样子

RL200-UHF-RFID-Label-639x420

手持机长这个样子
MT7

实现的方法

下述代码为scan.vueRFID扫码识别组件

这要用到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>

在组件中使用

<template>
    <view>
		<scan></scan>
     </view>
</template>
<script>
import scan from '@/components/scan/scan.vue'
    
export default {
    components: {
		scan
    },
    methods: {
        test(){
            // 触发识别
            uni.$off('scanData') // 每次进来先 移除全局自定义事件监听器
	    	uni.$on('scanData', function(data) {
				console.log('扫码结果:', data.data);
       		})
        }
    }
}
</script>

weixin_white

2

评论区