uni-app 蓝牙锁 writeBLECharacteristicValue 函数中 value 的值怎么设置
uni-app 蓝牙锁 writeBLECharacteristicValue 函数中 value 的值怎么设置
示列报文
F1 1F FF EE 03 10 00 04 01 24 01 00 D6 F2 2F
1 回复
在 uni-app
中使用蓝牙 API 与蓝牙设备进行交互时,writeBLECharacteristicValue
函数用于向蓝牙设备的某个特征值(Characteristic)写入数据。这个函数的关键在于正确设置 value
参数,该参数应该是一个 ArrayBuffer
或者一个包含数据的 DataView
、TypedArray
对象。
以下是一个使用 writeBLECharacteristicValue
函数的示例代码,演示了如何设置 value
参数的值:
// 假设已经通过 uni-app 的蓝牙 API 获取到了蓝牙设备和服务的相关信息
// 例如:deviceId, serviceId, characteristicId
// 要写入的数据,这里以写入一个16位的无符号整数为例
let data = new Uint16Array([12345]); // 12345 是要写入的数据
// 将 TypedArray 转换为 ArrayBuffer
let value = data.buffer;
// 调用 writeBLECharacteristicValue 函数
uni.writeBLECharacteristicValue({
// 设备ID
deviceId: 'your-device-id',
// 服务ID
serviceId: 'your-service-id',
// 特征值ID
characteristicId: 'your-characteristic-id',
// 要写入的数据,必须是 ArrayBuffer 类型
value: value,
success(res) {
console.log('写入成功', res);
},
fail(err) {
console.error('写入失败', err);
}
});
// 如果需要写入更复杂的数据结构,可以使用 DataView 来构建
let complexData = new DataView(new ArrayBuffer(4)); // 创建一个4字节的 ArrayBuffer
complexData.setUint8(0, 0x01); // 设置第一个字节为0x01
complexData.setUint16(1, 5678, true); // 从第二个字节开始,以小端模式设置一个16位无符号整数5678
// 使用 DataView 写入数据
uni.writeBLECharacteristicValue({
deviceId: 'your-device-id',
serviceId: 'your-service-id',
characteristicId: 'your-characteristic-id',
value: complexData.buffer,
success(res) {
console.log('复杂数据写入成功', res);
},
fail(err) {
console.error('复杂数据写入失败', err);
}
});
在上面的示例中,我们首先创建了一个 Uint16Array
,它表示一个包含16位无符号整数的数组,并将其转换为 ArrayBuffer
。然后,我们调用 writeBLECharacteristicValue
函数,将 ArrayBuffer
作为 value
参数传递。
对于更复杂的数据结构,我们使用了 DataView
来构建 ArrayBuffer
,并设置了不同的字节。这样可以精确地控制要写入的数据格式。
注意,your-device-id
、your-service-id
和 your-characteristic-id
需要替换为实际设备的ID、服务ID和特征值ID。