javascript
复制代码
// 连接蓝牙设备并发送数据
function sendDataOverBLE(deviceId, data) {
// 首先连接蓝牙设备
uni.createBLEConnection({
deviceId: deviceId,
success: function(res) {
// 连接成功后,获取服务
uni.getBLEDeviceServices({
deviceId: deviceId,
success: function(res) {
// 假设我们使用第一个服务
var serviceId = res.services[0].uuid;
uni.getBLEDeviceCharacteristics({
deviceId: deviceId,
serviceId: serviceId,
success: function(res) {
// 假设我们写入特性的uuid是已知的
var characteristicId = res.characteristics[0].uuid;
// 分包发送数据
var chunkSize = 20; // 假设每个包的大小是20字节
var chunks = splitArrayIntoChunks(data, chunkSize);
chunks.forEach((chunk, index) => {
uni.writeBLECharacteristicValue({
deviceId: deviceId,
serviceId: serviceId,
characteristicId: characteristicId,
value: chunk,
success: function(res) {
if (index === chunks.length - 1) {
// 所有分包发送成功后的回调
console.log('所有数据分包发送成功');
}
},
fail: function(err) {
console.error('分包发送失败', err);
}
});
});
},
fail: function(err) {
console.error('获取特性失败', err);
}
});
},
fail: function(err) {
console.error('获取服务失败', err);
}
});
},
fail: function(err) {
console.error('连接蓝牙设备失败', err);
}
});
}
// 分割数组为指定大小的多个分包
function splitArrayIntoChunks(array, chunkSize) {
var chunks = [];
for (var i = 0; i < array.length; i += chunkSize) {
chunks.push(array.slice(i, i + chunkSize));
}
return chunks;
}
// 使用示例
var deviceId = 'your-device-id'; // 蓝牙设备ID
var data = new Uint8Array([/* 你的数据 */]); // 需要发送的数据
sendDataOverBLE(deviceId, data);