/*往桩里面写入数据*/
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();
}
})
},
微信小程序蓝牙分包发送数据
最新推荐文章于 2024-05-24 17:12:45 发布