uniapp 蓝牙连接条码枪/扫描枪 HID模式

需求:要求蓝牙连接条码枪,接受条码枪扫描的数据

一、原理

  1. 蓝牙连接条码枪HID模式,其实就相当于一个键鼠输入设置,按下条码枪按钮,input的就自动显示输入的数据
  2. 蓝牙连接条码枪BLE模式,是蓝牙广播模式,需要主动接收广播,这一块我还没有实现出来,后续研究后再补上

二、代码

1. 获取已经连接上的蓝牙设备(原生native.js)

// 原生native.js蓝牙 获取已经连接的条码枪,这一步需要提前连接条码枪
search() {
	var main = plus.android.runtimeMainActivity()
	var Context = plus.android.importClass("android.content.Context")
	var BManager = main.getSystemService(Context.BLUETOOTH_SERVICE)
	plus.android.importClass(BManager) // 引入相关的method函数
	var BAdapter = BManager.getAdapter()
	plus.android.importClass(BAdapter) // 引入相关的method函数,这样之后才会有isEna
	var lists = BAdapter.getBondedDevices();
	plus.android.importClass(lists)
	var iterator = lists.iterator()
	plus.android.importClass(iterator)
	console.log('iterator')
	console.log(iterator)
	while(iterator.hasNext()) {
		var d = iterator.next()
		plus.android.importClass(d)
		this.deviceId = d.getName()
		this.state = 'working'
		console.log(d)
		console.log("名称:"+d.getName()+",地址:"+d.getAddress());
	}
	if(!this.deviceId) {
		this.showToastInfo({ msg: '请确认已经连上扫码枪' })
	}
}

2. input元素接收条码枪数据

<template>
	<!- 条形码输入会显示在这个input里面,可以通过css将他隐藏->
	<!- 要聚焦才可以扫描进来 ->
	<input 
			class="unshow-input" 
			v-model="inputValue" 
			type="number" 
			:focus="isFocus" 
			placeholder="输入" 
			@focus="focus" 
			@confirm="confirm"
	/>
</template>

3. 数据参数和方法

isFocus: true // 是否聚焦
// 输入框方法
focus() {
	setTimeout(function(){
		uni.hideKeyboard() // 隐藏软键盘:隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作
		// plus.key.hideSoftKeybord() // 隐藏软键盘:隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作
	}, 100);  
},
async confirm(e) {
	await this.saveRecords(e.detail.value)
	this.inputValue = '' // 重置输入框内容
},

三、踩坑

  1. 一开始不知道条码枪其实是个键盘外设设备,其实代码很简单就可以实现
  2. HID模式和BLE模式是不同的接收方式
  3. 如果出现中文乱码,就是你的键盘输入设置为中文了,加个type=“number”,就可以解决了
  4. 后续我再研究下怎么用原生native.js连接HID模式
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值