当前位置:   article > 正文

uniapp蓝牙连接热敏打印机_uniapp 低功耗蓝牙 打印标签

uniapp 低功耗蓝牙 打印标签

uniapp蓝牙连接热敏打印机

需求:通过小程序连接蓝牙,打印指定内容

前提:根据打印机的品牌型号不同,所遵循的打印规范不同(具体询问卖家)
我使用的是佳博的tspl规范

准备:需要几个外部js(具体品牌不一样),相当于工具类 jar包 用于发送指令和对字符编码操作(重点)
js地址
流程: 打开蓝牙 搜索蓝牙设备 连接 打印 断开

简单来说就是:调用外部 js set值 js中的方法通过再调取其他js将值转化成指令,然后指令发送,

searchBle() {
	var that = this
		if(uni.getStorageSync('deviceId')){
			uni.showToast({
			  title: '蓝牙已连接!要搜索蓝牙请先退出',
			  icon: 'none',
			  duration: 2000
			})
			return
		}
		console.log("点击搜索蓝牙")
		uni.openBluetoothAdapter({
			success(res) {
				console.log("打开 蓝牙模块")
				console.log(res)
				that.onDevice()
				uni.getBluetoothAdapterState({  //获取本机蓝牙适配状态
					success: function(res) {
						console.log(res)
						if (res.available) {
							if (res.discovering) {
								uni.stopBluetoothDevicesDiscovery()
							}
							//搜索蓝牙
							//开始搜寻附近的蓝牙外围设备
							console.log("开始搜寻附近的蓝牙外围设备")
							uni.startBluetoothDevicesDiscovery({
								success(res) {
									console.log("搜寻附近的蓝牙外围设备")
									console.log(res)
								}
							})
	
						}
						 else {
							console.log('本机蓝牙不可用')
						}
					},
				})
			}
		})
	},
	//监听寻找到新设备的事件
	onDevice(){
		console.log("监听寻找到新设备的事件---------------")
		var that = this
		//监听寻找到新设备的事件
		uni.onBluetoothDeviceFound(function(devices) {
			console.log('--------------new-----------------------'+JSON.stringify(devices))
			var re = JSON.parse(JSON.stringify(devices))
			console.log("搜索到的蓝牙设备名字",re.devices[0].name + " 搜索到的蓝牙设备id " + re.devices[0].deviceId)
			let name = re.devices[0].name
			if (name != "") {
				// this.getBluetoothDevices()
				console.log("搜索到的蓝牙:",name)
				let deviceId = re.devices[0].deviceId
				that.devices.push({    //把搜索到的新设备保存起来
					name: name,
					deviceId: deviceId,
					services: []
				})
				
			}
					
		})
	},
	//点击链接蓝牙
	onConn(item) {
		if(uni.getStorageSync('deviceId')){
			uni.showToast({
			  title: '蓝牙已连接!',
			  icon: 'none',
			  duration: 2000
			})
			return
		}
		console.log(item)
		uni.showLoading({
			title: '蓝牙连接中',
			mask: true
		}) //显示加载动画
		var that = this
		console.log("保存到的设备有;",that.devices)
		console.log("连接蓝牙---------------" + item.deviceId)
		let deviceId = item.deviceId
		console.log(deviceId)
		uni.createBLEConnection({
			deviceId: deviceId,
			success:(res) => {
				if (res.errMsg == "createBLEConnection:ok") {
					console.log("连接蓝牙-[" + item.name + "]--成功")
					that.connId = deviceId;
					that.currDev = item
					setTimeout(function() {
						that.getBLEServices(deviceId)
					}, 1500)
					uni.setStorageSync("deviceId",item.deviceId)//把已经连接的蓝牙设备信息放入缓存
				} else {
					uni.showToast({
					  title: '连接蓝牙失败!请退出蓝牙重新连接',
					  icon: 'none',
					  duration: 2000
					})
					console.log(res)
				}
				//连接成功 关闭搜索
				uni.stopBluetoothDevicesDiscovery()
			},
		})
	},
	//获取已经连接的蓝牙设备的所有服务
	getBLEServices(_deviceId) {
		var that = this;
		let deviceId = _deviceId
		console.log("获取蓝牙设备所有服务(service)。---------------")
		
		uni.getBLEDeviceServices({
			// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
			deviceId: deviceId,
			success:(res) => {
				console.log(res)
				let serviceId = ""
				console.log("获取蓝牙设备成功的信息:",res)
				if(res.services.length == 0){
					uni.hideNavigationBarLoading()   //关闭加载动画
					uni.showToast({
					  title: '获取蓝牙服务失败!请退出蓝牙重新连接',
					  icon: 'none',
					  duration: 2000
					})
					
				}
				for (var s = 0; s < res.services.length; s++) {
					let serviceId = res.services[s].uuid
					uni.getBLEDeviceCharacteristics({
						// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
						deviceId: deviceId,
						// 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取
						serviceId: serviceId,
						success:(res) => {
							var re = JSON.parse(JSON.stringify(res))
	
							console.log('deviceId = [' + deviceId + ']  serviceId = [' + serviceId + ']')
							for (var c = 0; c < re.characteristics.length; c++) {
								if (re.characteristics[c].properties.write == true) {
									let uuid = re.characteristics[c].uuid
									console.log(' deviceId = [' + deviceId + ']  serviceId = [' + serviceId + '] characteristics=[' +
										uuid)
	
									for (var index in that.devices) {
										if (that.devices[index].deviceId == deviceId) {
											uni.showToast({
											  title: '连接蓝牙成功',
											  icon: 'success',
											  duration: 2000
											})
											uni.hideNavigationBarLoading()   //关闭加载动画
											that.bbb = true
											uni.setStorageSync("bbb",true)
											uni.setStorageSync("characteristicId",uuid)//把已经连接的蓝牙设备标识放入缓存
											uni.setStorageSync("serviceId",serviceId)//把已经连接的蓝牙设备ID放入缓存
											that.devices[index].services.push({
												serviceId: serviceId,
												characteristicId: uuid
											})
											break
										}
	
									}
	
								}
							}
						}	
					})
	
				}
	
	
	
			},
			fail(res) {
				console.log(res)
			},
		})
	
	},
	//打印的数据

	 daying(){
	 
	  
	  let deviceId = this.currDev.deviceId;
	  			let serviceId = this.currDev.services[0].serviceId;
	  			let characteristicId = this.currDev.services[0].characteristicId;
	  			var command = tsc.jpPrinter.createNew()//引入tsc 创建对象 为了传输数据
	  			 console.log(command)
	  			 
	  	
			command.setCls()//清除缓冲区,防止下一个没生效
			command.setSize(39, 30)//设置标签大小,单位mm.具体参数请用尺子量一下
			command.setGap(0)//设置两个标签之间的间隙,单位mm.具体参数请用尺子量一下
			command.setCls()//清除缓冲区
			command.setText(75, 20, "TSS24.BF2", 0, 1, 1, this.info.name)//绘制商品名称
			// command.setText(50, 100, "TSS24.BF2", 0, 1, 1, "货号:______")
			command.setText(75, 115, "TSS24.BF2", 0, 1, 1, this.info.comNum)//绘制商品编号
			command.setText(75, 60, "TSS24.BF2", 0, 1, 1, "售价:")//绘制文字
			command.setText(140, 60, "TSS24.BF2", 0, 1, 1,this.info.selPrice)//绘制价格
			command.setBarCode(20, 155, "128", 48, 0, 0, 2, 2, this.info.comNum)//绘制code128条码
			command.setBar(300, 80, 5, 150);//绘制一条黑线
	  		command.setPrint(this.count)打印 this.count张
	  
	},// 点击断开蓝牙连接
	tomy (){
		var _this = this
		uni.closeBluetoothAdapter({
			success(res) {
				uni.removeStorageSync('deviceId')
				uni.removeStorageSync("serviceId");
				uni.removeStorageSync("characteristicId");
				uni.setStorageSync("bbb",false);
				console.log(_this.bbb)
				console.log("退出蓝牙:",uni.getStorageSync('deviceId')+"和"+uni.getStorageSync("serviceId"))
				this.$navTo.togo("pages/zongcang/zongcang")
				
			}
		})
		
	},
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/559020
推荐阅读
相关标签
  

闽ICP备14008679号