我正在开发用于发送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());
...
}
注意:如果我可以发布任何其他相关代码,请告诉我。
答案 0 :(得分:0)
您的特征设置看起来不错。尽管我对Android一无所知,但在iOS中,您应该可以通过调用它来获取价值。
peripheral.readValue(for: yourCharacteristic)
您还可以使用BLE实用程序应用程序(例如LightBlue)来探索您的特征。