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
    评论
三菱PLC连接条码扫描枪需要编写相应的程序来实现数据的读取和传输。以下是一个示例程序的简要描述: 首先,需要在PLC的编程软件中创建一个新的项目,并在该项目中创建一个新的程序。然后,根据具体的硬件连接,选择合适的通信模块和通信口,将条码扫描枪与PLC进行连接。 程序的主要流程如下: 1. 初始化:在程序的开始部分,可以设置一些初始化的参数,如通信口的波特率、数据位数等。 2. 打开通信口:使用合适的指令打开通信口,确保PLC与条码扫描枪之间能够正常进行数据传输。 3. 循环读取:使用循环语句,不断地从条码扫描枪中读取数据。这可以通过发送读取指令给条码扫描枪,并使用相应的指令接收数据来实现。 4. 数据处理:获取到条码扫描枪读取到的数据后,可以进行一些必要的处理,比如解码、验证等。 5. 数据传输:将处理后的数据传输到PLC的其他部分进行进一步的处理或使用。可以通过相应的指令将数据传输到特定的寄存器或数据存储区域中。 6. 关闭通信口:在程序的结尾部分,使用合适的指令关闭通信口,释放资源。这是一个良好的编程习惯,以确保程序的稳定性和可靠性。 需要注意的是,具体的程序细节可能会根据PLC型号、通信模块等因素有所不同。因此,在编写程序时,需要参考相关的PLC和条码扫描枪的技术文档,并根据实际情况进行调整和优化。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值