Bleno BLE库未按预期传输特征值

时间:2018-05-25 11:20:58

标签: bluetooth-lowenergy core-bluetooth bleno

我正在开发用于发送BLE数据的IOT外设的Android / iOS应用程序。这两个应用程序实际上与物理外围设备(使用Texas Instrument的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());
    ...
}

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

1 个答案:

答案 0 :(得分:0)

您的特征设置看起来不错。尽管我对Android一无所知,但在iOS中,您应该可以通过调用它来获取价值。

peripheral.readValue(for: yourCharacteristic)

您还可以使用BLE实用程序应用程序(例如LightBlue)来探索您的特征。