bluetooth-lowenergy - 布莱诺 BLE 库未按预期传输特征值
问题描述
我正在为发送 BLE 数据的 IOT 外围设备开发 Android/iOS 应用程序。这两个应用程序实际上与物理外围设备(使用德州仪器的 BLE 库)配合得非常好。
现在实际的外围设备正在工作,我正在尝试使用Bleno编写一个模拟器,以便开发团队可以提高效率,但在传输特性的静态字符串值时遇到了问题。
我正在这样设置我的特征:
var bleCharacteristic = function() {
bleCharacteristic.super_.call(this, {
uuid: '0321',
properties: ['read'],
value: new Buffer('12345'),
});
};
Bleno 说我必须使用 node.js 缓冲区来发送字符串数据,但是在 Android 和 IOS 上,接收到的数据不是12345
,而是这样的:
{
value: '3031333031383133303630303864666234643030323030333065303332656530313330313831333036303,
}
关于为什么会发生这种情况的想法?是否有一些我忘记在模拟器中设置的其他广告数据以使值按预期返回?
这是我如何读取有效负载值的示例。这是来自我们的 Android 应用程序:
@Override
public void onCharacteristicRead(final BluetoothGatt gatt, final BluetoothGattCharacteristic characteristic, int status) {
...
String payload = bytesToHex(characteristic.getValue());
...
}
注意:如果我可以发布任何其他相关代码,请告诉我。
解决方案
您的特征设置看起来不错。虽然我对Android一无所知,但在iOS中,你应该可以通过调用这个来获得价值。
peripheral.readValue(for: yourCharacteristic)
您还可以使用 LightBlue 等 BLE 实用程序来探索您的特征。
推荐阅读
- python - 删除以熊猫系列中特定字符串开头的所有文本
- tensorflow - 使用 Deep Q 网络进行机器人路径规划
- c - 如果在 for 循环内(普通年和闰年的日差)不起作用
- java - 我们如何更新深度克隆的实体?
- c - 为什么我尝试打印字符时没有输出?
- reactjs - setState 一个 CSV 文件一旦返回 null
- swift - 无法在 Swift 中使用 filemaneger.default.copyItem 将文件复制到外部驱动器?
- r - 如何在 R 的 tidyversse 中使用 dplyr 根据时间(hh:mm:ss)过滤行?
- c++ - 如何在 Windows 中以编程方式添加“虚拟”音频输入设备/麦克风
- python - 如何在kivy中更新函数内的布局