微信小程序蓝牙发送长包
时间: 2025-09-08 20:01:47 AIGC 浏览: 13
微信小程序实现蓝牙发送长包时,由于蓝牙单次发送数据一般有长度限制(如20字符),当蓝牙指令超出该长度时需要截断多次发送。以下是相关代码示例及说明:
```javascript
/**
* 发送蓝牙指令。蓝牙指令超出20字符时需要截断多次发送
* @param {string} cmdStr 蓝牙指令
* @param {string} cmdName 蓝牙指令名称——可选用于打印调试
*/
async writeBLECharacteristicValue(cmdStr, cmdName) {
return new Promise((resolve, reject) => {
let _this = this;
let data = cmdStr.split(',');
let buffer = new ArrayBuffer(data.length);
let dataViewLast = new DataView(buffer);
for (let i = 0; i < data.length; i++) {
dataViewLast.setUint8(i, data[i]);
}
let param = {
deviceId: _this.deviceId,
serviceId: _this.serviceId,
characteristicId: _this.characteristicId,
value: dataViewLast.buffer,
};
console.log("param", param);
wx.writeBLECharacteristicValue({
...param,
success: function () {
console.log("发送指令成功", cmdName);
resolve({ data: { cmdName, success: true } });
},
fail: function (error) {
reject({ data: { data: error, success: false } });
},
});
});
}
```
此代码中,`writeBLECharacteristicValue` 函数用于发送蓝牙指令。对于超出长度限制的指令,可将其截断后多次调用该函数来实现长包发送。具体步骤为:先将指令字符串按逗号分割成数组,再将数组元素存入 `ArrayBuffer` 中,最后通过 `wx.writeBLECharacteristicValue` 方法发送数据。若发送成功,会在控制台输出成功信息并通过 `resolve` 返回结果;若失败,则通过 `reject` 返回错误信息 [^1]。
阅读全文
相关推荐



















