首页 > 解决方案 > 布莱诺 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());
    ...
}

注意:如果我可以发布任何其他相关代码,请告诉我。

标签: bluetooth-lowenergycore-bluetoothbleno

解决方案


您的特征设置看起来不错。虽然我对Android一无所知,但在iOS中,你应该可以通过调用这个来获得价值。

peripheral.readValue(for: yourCharacteristic)

您还可以使用 LightBlue 等 BLE 实用程序来探索您的特征。


推荐阅读