zkcPDA手持终端机5502型号打印功能实现

这篇博客记录了使用uniapp进行安卓设备开发时,如何实现与ZKC5502型号PDA手持终端的蓝牙连接并打印条形码和文本。开发者通过获取蓝牙适配器,建立蓝牙连接,写入数据到输出流,实现了蓝牙打印机的二维码和文字打印功能。在过程中,特别强调了设备连接状态检查和关闭连接的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

zkcPDA手持终端机5502型号打印功能实现

记录一下uniapp开发安卓终端设备遇到的坑,也给和我同样经历着前端开发安卓设备的工友提供一点点帮助

<div id="btnPrint" type="button" value="打印" @click="print('00:11:22:33:44:55')">打印</div>
print(mac_address) {
				if (!mac_address) {
					mui.toast('请选择蓝牙打印机');
					return;
				}
				var main = plus.android.runtimeMainActivity();
				var BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
				var UUID = plus.android.importClass("java.util.UUID");
				var uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
				var BAdapter = BluetoothAdapter.getDefaultAdapter();
				var device = BAdapter.getRemoteDevice(mac_address);
				plus.android.importClass(device);
				var bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);
				plus.android.importClass(bluetoothSocket);
				if (!bluetoothSocket.isConnected()) {
					console.log('检测到设备未连接,尝试连接....');
					bluetoothSocket.connect(); //连接蓝牙
				}
				console.log('设备已连接');
				if (bluetoothSocket.isConnected()) { //判断是否连接设备蓝牙
					var outputStream = bluetoothSocket.getOutputStream(); //返回一个指向服务器端的数据
					plus.android.importClass(outputStream); //importClass导入Java类对象
					var OutputStreamWriter = plus.android.importClass('java.io.OutputStreamWriter')
					var writer = new OutputStreamWriter(outputStream, 'GBK')
					plus.android.importClass(writer)



					var byteStr = '101013Q73898'
					var moduleSize = 15
					var bytes = plus.android.invoke(byteStr, 'getBytes', 'gbk')
					var length = bytes.length

					// 缓存二维码数据
					writer.write(0x1D) // init
					writer.write('(k') // adjust height of barcode
					writer.write(length + 3) // pl
					writer.write(0) // ph
					writer.write(49) // cn
					writer.write(80) // fn
					writer.write(48) //
					writer.write(byteStr)
					// 二维码纠错等级
					// writer.write(0x1D)
					// writer.write('(k')
					// writer.write(3)
					// writer.write(0)
					// writer.write(49)
					// writer.write(69)
					// writer.write(90)
					// // 设置二维码块大小
					writer.write(0x1D)
					writer.write('(k')
					writer.write(3)
					writer.write(0)
					writer.write(49)
					writer.write(67)
					writer.write(moduleSize)
					// 打印已缓存的数据二维码
					writer.write(0x1D)
					writer.write('(k')
					writer.write(3) // pl
					writer.write(0) // ph
					writer.write(49) // cn
					writer.write(81) // fn
					writer.write(75) // m

					writer.flush()

					// device = null //这里关键
					// bluetoothSocket.close();
					var string = "打印测试\r\n";
					var bytes = plus.android.invoke(string, 'getBytes', 'gbk'); //invoke调用对象(类对象/实例对象)的方法
					outputStream.write(bytes);
					outputStream.flush();
					// 换行
					outputStream.write('\n')
					outputStream.flush()
					device = null //这里关键
					bluetoothSocket.close(); //必须关闭蓝牙连接否则意外断开的话打印错误
				}
			},
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值