uniapp 打印机wifi链接 蓝牙链接

我们正常的打印机是有属于自己的命令来传输的 如我所写的是打印机的zpl指令(斑马打印机实测没有问题)

结尾附上我的ZPL指令 你们可以用来做测试用  很多新手小伙伴可能不太懂,所以直接复制先研究

wifi打印 蓝牙打印 适配斑马等一系列打印 - DCloud 插件市场  该插件已发布到市场  不想看我下面代码的直接去这个地址下载使用 有引入案例 

如有问题请留言

蓝牙链接打印

1、获取蓝牙列表  获取后的蓝牙列表保存在deviceList 中

	var that = this;
		that.deviceList = [];
		var main = plus.android.runtimeMainActivity();
		var Context = plus.android.importClass('android.content.Context');
		var BManager = main.getSystemService(Context.BLUETOOTH_SERVICE);
		plus.android.importClass(BManager);
		var BAdapter = BManager.getAdapter();
		plus.android.importClass(BAdapter);
		var lists = BAdapter.getBondedDevices();
		plus.android.importClass(lists);
		var iterator = lists.iterator();
		plus.android.importClass(iterator);
		while (iterator.hasNext()) {
			var d = iterator.next();
			plus.android.importClass(d);
			var temp = {
				name: d.getName(),
				address: d.getAddress(),
				status: d.getBondState(),
				uuids: d.getUuids(),
				op: d
			};
			that.deviceList.push(temp);
		}

2、蓝牙打印 我这边默认取的是获取到的第一个蓝牙打印机,可以根据需求来改

	var that = this;
		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(this.deviceList[0].address);
		plus.android.importClass(device);
		var bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);
		plus.android.importClass(bluetoothSocket);
		if (!bluetoothSocket.isConnected()) {
			bluetoothSocket.connect();
			if (bluetoothSocket.isConnected()) {
				var outputStream = bluetoothSocket.getOutputStream();
				plus.android.importClass(outputStream);
                //this.ZPLString 是我传入的ZPL指令
				var arrayBuffer = plus.android.invoke(this.ZPLString, 'getBytes', 'gbk');
				outputStream.write(arrayBuffer);
				outputStream.flush();
				bluetoothSocket.close();
				if (!bluetoothSocket.isConnected()) {
					console.log('设备已关闭');
				}
			} else {
				uni.showToast({
					title: '设备连接失败',
					icon: 'error',
					duration: 2000
				});
			}
		}

wifi链接打印

 wifi打印这一块比较简单  传入ip地址与端口号就行  这一块个人认为的难点在于打印机的配置 而不在于写代码

	if (plus.os.name == 'Android') {
			var Socket = plus.android.importClass('java.net.Socket');
			var PrintWriter = plus.android.importClass('java.io.PrintWriter');
			var BufferedWriter = plus.android.importClass('java.io.BufferedWriter');
			var OutputStreamWriter = plus.android.importClass('java.io.OutputStreamWriter');
			var BufferedReader = plus.android.importClass('java.io.BufferedReader');
			var InputStreamReader = plus.android.importClass('java.io.InputStreamReader');

			var StrictMode = plus.android.importClass('android.os.StrictMode');
			var Build = plus.android.importClass('android.os.Build');
			if (Build.VERSION.SDK_INT > 9) {
				var policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
				StrictMode.setThreadPolicy(policy);
			}
			console.log('ip...' + ipAddress, port);
            // 注意这个地方传IP地址和prot端口号
			var socket = new Socket(`${ipAddress}`, port * 1); // "172.16.19.***", 91**
			socket.setSoTimeout(5000);
			var inputStreamReader = new InputStreamReader(socket.getInputStream());
			var socketReader = new BufferedReader(inputStreamReader);

			var outputStreamWriter = new OutputStreamWriter(socket.getOutputStream());
			var bufferWriter = new BufferedWriter(outputStreamWriter);
			var socketWriter = new PrintWriter(bufferWriter, true);
			socketWriter.println(this.ZPLString);

			console.log('socketWriter...' + socketWriter);
		}

zpl

jsons: `^XA
				^MD30
				^CWJ,E:SIMSUN.TTF^FS   
				^BYW3.0,2.0
				^A0N,30,50^FO100,40^BCW,130,100,N,N,A^FD123^FS
				^FO50,240^GB700,180,3^FS
				^FO400,240^GB3,180,3^FS
				^FO50,417^GB700,180,3^FS
				^FO400,417^GB3,180,3^FS
				^FO50,594^GB700,180,3^FS
				^FO400,594^GB3,180,3^FS
				^FO50,771^GB700,180,3^FS
				^FO400,771^GB3,180,3^FS
				^FO50,947^GB700,150,3^FS
				^FO400,947^GB3,150,3^FS
				^FO50,1094^GB700,80,3^FS
				^FO400,1094^GB3,80,3^FS
				^FO70,280^AJN,42,42^CI28^FD生产订单号:^FS^CI28
				^FO70,280^FB300,3,0,L^AJN,38,38^CI28^FD中转仓库^FS^CI28
				^FO70,350^FB300,3,0,L^AJN,38,38^CI28^FDChannel Code^FS^CI28
				^FO70,450^FB300,3,0,L^AJN,38,38^CI28^FD件数^FS^CI28
				^FO70,520^FB300,3,0,L^AJN,38,38^CI28^FDPieces^FS^CI28
				^FO70,630^FB300,3,0,L^AJN,38,38^CI28^FD重量^FS^CI28
				^FO70,690^FB300,3,0,L^AJN,38,38^CI28^FDWeight^FS^CI28
				^FO70,800^FB300,3,0,L^AJN,38,38^CI28^FD包裹编号^FS^CI28
				^FO70,870^FB300,3,0,L^AJN,38,38^CI28^FDNO.^FS^CI28
				^FO70,1000^FB300,3,0,L^AJN,38,38^CI28^FD操作员   1^FS^CI28
				^CF0,50
				^FO420,300^FB300,3,0,L^AJN^CI28^FD123^FS^CI28
				^CF0,80
				^FO430,480^FB300,3,0,L^AJN^CI28^FD123^FS^CI28
				^FO430,640^FB300,3,0,L^AJN^CI28^FD123^FS^CI28
				^CF0,100
				^FO430,820^FB300,3,0,L^AJN^CI28^FD$123^FS^CI28
				^CF0,25
				^FO430,990^FB300,3,0,L^AJN^CI28^FD打印时间 ^FS^CI28
				^FO540,990^FB150,3,0,L^AJN^CI28^FD123^FS^CI28
				^CF0,35
				^FO440,1120^FB300,3,0,L^AJN^CI28^FDmade in china^FS^CI28
				^XZ`

你可能感兴趣的:(uni-app)