uniapp 编译器下PDA实现广播模式(海康 、斑马)已实现

1.来源灵感的两位作者:

        第一位:MUI集成新大陆、斑马PDA_com.motorolasolutions.emdk.datawedge.data_string-CSDN博客

        第二位:关于uinapp 调用PDA设备激光扫码 - 广播模式_uniapp pad扫码-CSDN博客

关于uinapp 调用PDA设备激光扫码 - 广播模式_uniapp pad扫码-CSDN博客

  2.重要组件以下代码:

		 <template>
		 	<view>
		 		<view class="content"></view>
		 	</view>
		 </template>
		 <!-- 激光扫码,广播模式 -->
		 <script>
		 	var main, receiver, filter;
		 	var codeQueryTag = false;
		 	export default {
		 		data() {
		 			return {
		 				scanCode: ''
		 			}
		 		},
		 		created() {
					// 初始化
		 			this.initScan()
					// 启动广播
		 			this.startScan();
		 		},
		 		onHide() {
					// 结束广播
		 			this.stopScan();
		 		},
		 		destroyed() {
					// 结束广播
		 			this.stopScan();
		 		},
		 		methods: {
					// 初始化
		 			initScan() {
		 				//  #ifdef APP
		 				// console.log('initScan:扫码初始化');
		 				let that = this;
		 				main = plus.android.runtimeMainActivity(); //获取activity
		 				//var context = plus.android.importClass('android.content.Context'); //上下文
		 				var IntentFilter = plus.android.importClass('android.content.IntentFilter');
		 				filter = new IntentFilter();
		 				//下面的addAction 改为自己 pad 设备的广播动作(在扫描设置或者厂商附带的app 里面设置为广播模式,然后查看相应参数)
		 				filter.addAction("com.service.scanner.data");
		 				receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
		 					onReceive: (context, intent) => {
								
		 						console.log('---onReceive:', context, intent);
		 						plus.android.importClass(intent);
		 						//下面的getStringExtra内改为自己的广播标签(键值/key): data
		 						console.log('---***getStringExtra: ', intent.getStringExtra("ScanCode"));
		 						// 海康
								// let code = intent.getStringExtra("ScanCode");
								// console.log('---扫码data: ', code);
								//斑马 TC20
								var banMaSacanInfo = intent.getStringExtra('com.motorolasolutions.emdk.datawedge.data_string');	 // callback(intent.getStringExtra('com.motorolasolutions.emdk.datawedge.data_string'));
								console.log('斑马扫描结果', banMaSacanInfo)
		 						
								// 传入接收到的参数
		 						that.queryCode(banMaSacanInfo);
		 					}
		 				});
		 				// #endif
		 			},
		 			// 开启广播
					startScan() {
		 				//  #ifdef APP
		 				console.log('startScan,开启广播接收');
		 				main.registerReceiver(receiver, filter);
		 				// #endif
		 			},
					// 关闭广播
		 			stopScan() {
		 				//  #ifdef APP
		 				console.log('stopScan,结束');
		 				main.unregisterReceiver(receiver);
		 				// #endif
		 			},
		 			// 避免重复扫码
		 			queryCode: function(code) {
		 				//  #ifdef APP
		 				if (codeQueryTag) return false;
		 				codeQueryTag = true;
		 				setTimeout(function() {
		 					codeQueryTag = false;
		 				}, 150);
		 				// console.log('-****--扫码code: ', code);
		 				let data = code
		 				uni.$emit('xwscan', {
		 					code: data
		 				})
		 				// #endif
		 			}
		 		}
		 	}
		 </script>

3.其中最重要的两个: 

       

 1.let code = intent.getStringExtra("ScanCode");//(海康PDA已实现)

        2.var banMaSacanInfo = intent.getStringExtra('com.motorolasolutions.emdk.datawedge.data_string');   // (斑马PDA已实现)

4.使用组件的方法(页面开始监听后退出页面必须要销毁,不然会出现多个监听,扫描慢)

<template>
	<view class="content">
		<view class="uni-form-item uni-column">
			<view class="title">实时获取请扫描输入值:{{value}}</view>
			<u-input class="input" v-model="value" placeholder="请扫描"  clearable 
				/>
		</view>
		<xw-scan></xw-scan>
	</view>
</template>

<script>
	// 广播模式激光扫码
	import xwScan from '@/components/padDevice/scan-code.vue'
	export default {
		components: {
			xwScan
		},
		data() {
			return {
				value: '',
				focus: false,
				scanTitle: "扫描结果",

			}
		},
		onLoad() {
			// console.log('页面开启(onLoad)广播监听事件:xwscan')
			// 开启广播监听事件
			uni.$on('xwscan',this.BroadcastScanningToObtainData)
		},
        onUnload(){
			// console.log('页面销毁(onUnload)广播监听事件:xwscan')
			// 销毁广播监听事件
			uni.$off('xwscan', this.BroadcastScanningToObtainData)
		},
		
        methods:{
			   BroadcastScanningToObtainData(res){
					console.log('获取次数', res.code)
					let _this = this
						  let barcode = res.code
                    console.log('打印数据', barcode )
				},
            }

		
	}
</script>

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值