问题描述
我正在尝试通过 BLE 连接将实时温度数据(浮点数)从 Arduino Nano 33 BLE Sense 发送到 RaspBerry Pi 4B。我已经成功通过广播传输数据。所以,这次我想在central和peripheral之间建立连接并发送数据。但是,有一些模糊的东西我无法理解:
1 - BLECharacteristic()
方法有浮动版本 BLEFloatCharacteristic
,所以我使用的是给定的 here. 但是,writeValue
有两个版本:
bleCharacteristic.writeValue(buffer,length)
bleCharacteristic.writeValue(value)
这是否意味着 value
可以是浮点数,如果我的特征也是浮点数,或者我应该发送 字节数组 并尝试提到的解决方法 here?
2 - 我也读过 |通知允许连续读取数据,如下所示:
BLEFloatCharacteristic tempCharacteristic(TEMP_UUID,BLERead | BLENotify);
BLEFloatCharacteristic humCharacteristic(HUM_UUID,BLERead | BLENotify);
在 RaspBerry Pi 部分
1 - 我正在使用 noble.js 库通过在 Node-RED 环境中运行的 node.js 获取数据。我能够建立连接并读取特征,但在尝试读取数据时遇到问题。下面我添加了让我读取一些数据的代码部分:
await noble.stopScanningAsync().catch(e => node.send(e));
await peripheral.connectAsync().catch(e => node.send(e));
const { characteristics } = await peripheral.discoverAllServicesAndcharacteristicsAsync().catch(e => node.send(e));
characteristics.forEach((characteristic) => {
node.send(characteristic);
characteristic.read(function callback(error,data) {
if (error){
node.send(error);
} else {
node.send(data);
}
});
});
正如预期的那样,我只能阅读一次。此外,我无法理解这些数据。
持续获取有意义的数据:
- 我需要订阅某个特征。
- 然后我还需要解释数据。
问题是我尝试了诸如 characteristic.subscribe([callback(error)]);
之类的可用方法,但无法成功。当我通过 Serial.println(tempCharacteristic.subscribed());
检查它时,它总是返回 0。
因此,我希望得到有关这些主题的指导。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)