uni-app 小程序 低功耗蓝牙写数据 主机间隔150ms通知的数据 小程序没能收到
uni-app 小程序 低功耗蓝牙写数据 主机间隔150ms通知的数据 小程序没能收到
3 回复
具体的 api 有问题,使用原生写一个 demo 验证是微信小程序的问题还是 uniapp 导致的。如果小程序有问题考虑是否可以规避,或者向微信社区反馈
更多关于uni-app 小程序 低功耗蓝牙写数据 主机间隔150ms通知的数据 小程序没能收到的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在处理 uni-app
小程序低功耗蓝牙写数据以及接收主机间隔 150ms 通知的数据时,确保数据正确接收通常涉及几个关键步骤,包括蓝牙连接管理、数据写入、特征值(Characteristic)的订阅以及数据的处理。以下是一个简化的代码示例,展示了如何在 uni-app
中实现这些功能。
1. 初始化蓝牙适配器
首先,确保蓝牙适配器已经初始化并启用:
uni.openBluetoothAdapter({
success: function(res) {
console.log('Bluetooth adapter opened', res);
// 继续扫描设备
startBluetoothDevicesDiscovery();
},
fail: function(err) {
console.error('Failed to open Bluetooth adapter', err);
}
});
2. 扫描并连接设备
扫描并连接到目标蓝牙设备:
function startBluetoothDevicesDiscovery() {
uni.startBluetoothDevicesDiscovery({
allowDuplicatesKey: false,
success: function(res) {
// 假设已找到目标设备并连接
connectToDevice('目标设备MAC地址');
}
});
}
function connectToDevice(deviceId) {
uni.createBLEConnection({
deviceId: deviceId,
success: function(res) {
// 连接成功后,开始获取服务
getBLEDeviceServices(deviceId);
}
});
}
3. 获取服务并启用通知
获取服务,找到目标特征值,并启用通知:
function getBLEDeviceServices(deviceId) {
uni.getBLEDeviceServices({
deviceId: deviceId,
success: function(res) {
const serviceId = res.services[0].uuid; // 假设我们需要的服务是第一个
getBLEDeviceCharacteristics(deviceId, serviceId);
}
});
}
function getBLEDeviceCharacteristics(deviceId, serviceId) {
uni.getBLEDeviceCharacteristics({
deviceId: deviceId,
serviceId: serviceId,
success: function(res) {
const characteristicId = res.characteristics[0].uuid; // 假设我们需要的特征值是第一个
enableBLECharacteristicNotification(deviceId, serviceId, characteristicId);
}
});
}
function enableBLECharacteristicNotification(deviceId, serviceId, characteristicId) {
uni.notifyBLECharacteristicValueChange({
state: true,
deviceId: deviceId,
serviceId: serviceId,
characteristicId: characteristicId,
success: function(res) {
console.log('Notification enabled', res);
// 监听数据变化
uni.onBLECharacteristicValueChange(function(res) {
console.log('Received data', res.value);
});
}
});
}
注意
- 以上代码省略了错误处理和连接管理的细节,如重连逻辑、超时处理等。
- 确保设备支持并正确配置了通知机制。
uni.onBLECharacteristicValueChange
事件监听器将在整个小程序生命周期内有效,因此需要在小程序销毁时适当移除监听。- 如果仍无法收到数据,请检查蓝牙设备的固件设置,确保它以正确的间隔发送数据,并且数据格式与小程序预期匹配。