微信小程序蓝牙分包发送数据

			/*往桩里面写入数据*/
			writeDataToEquip(msg) {
				let _ = this;

				function hexStringToArrayBuffer(str) {
					if (!str) {
						return new ArrayBuffer(0);
					}
					var buffer = new ArrayBuffer(str.length / 2);
					let dataView = new DataView(buffer)
					let ind = 0;
					for (var i = 0, len = str.length / 2; i < len; i += 1) {
						let code = parseInt(str.substr(2 * i, 2), 16)

						// console.log(code)
						dataView.setUint8(ind, code)
						ind++
					}
					return buffer;
				}

				function hexStringToArrayBuffer1(str) {
					if (!str) {
						return new ArrayBuffer(0);
					}
					var buffer = new ArrayBuffer(str.length);
					let dataView = new DataView(buffer)
					let ind = 0;
					for (var i = 0, len = str.length; i < len; i += 2) {
						let code = parseInt(str.substr(i, 2), 16)

						// console.log(code)
						dataView.setUint8(ind, code)
						ind++
					}
					return buffer;
				}
				const bufferNew = hexStringToArrayBuffer(msg)
				//-------------------开始分包发送---------------------
				let offset = 20;//偏移量
				let pos = 0;//位置下标
				let bytes = bufferNew.byteLength;
				console.log('bytes的长度=' + bytes)
				var resulut = '';
				while (bytes > 0) {
					let endPos = bytes > offset ? (pos + offset) : (pos + bytes);
					const tempBuffer = bufferNew.slice(pos, endPos);
					pos += offset;
					bytes -= offset;
					_.sendDelay(100, tempBuffer).then(res => {
						_.writeData(res)
					})
				}
			},
			/**延时函数*/
			sendDelay(delay, tempHex) {
				console.log('延时方法调用')
				console.log(tempHex)
				let that = this;
				return new Promise((resolve, reject) => {
					setTimeout(() => {
						resolve(tempHex)
					}, delay);
				})
			},
			/*往桩里写数据*/
			writeData(tmpBuffer) {
				uni.writeBLECharacteristicValue({
					deviceId: uni.getStorageSync('currentDeviceId'), // 设备ID,在【4】里获取到
					serviceId: uni.getStorageSync('currentServiceId'), // 服务UUID,在【6】里能获取到
					characteristicId: this.writeCharacteristicId, // 特征值,在【7】里能获取到
					value: tmpBuffer,
					success(res) {
						console.log('写入指令成功===' + res)
					},
					fail(err) {
						console.error(err)
						utils.errMsg('指令写入失败,请重新连接');
						uni.hideLoading()
						// 断开连接,重新连接
						_.closeDeviceConnect();
					}
				})
			},
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值