我正在为一个发送BLE数据的IOT外设开发Android/iOS应用程序。这两个应用程序实际上都能很好地与物理外围设备(使用德州仪器的BLE库)协同工作。
现在,实际的外围设备可以正常工作了,我正在尝试用Bleno编写一个仿真器,以便开发团队能够更高效地工作,但是在传输特征的静态字符串值时遇到了问题。
我这样设置我的特征:
var bleCharacteristic = function() {
bleCharacteristic.super_.call(this, {
uuid: '0321',
properties: ['read'],
value: new Buffer('12345'),
});
};Bleno说我必须使用node.js缓冲区来发送字符串数据,但在安卓和IOS上,接收到的数据都不是12345,而是类似这样的数据:
{
value: '3031333031383133303630303864666234643030323030333065303332656530313330313831333036303,
}对于为什么会发生这种情况,你有什么想法?是否还有一些我忘记在模拟器中设置的广告数据,这样值就会像预期的那样返回?
下面是我如何读取有效负载值的一个示例。这是来自我们的Android应用程序:
@Override
public void onCharacteristicRead(final BluetoothGatt gatt, final BluetoothGattCharacteristic characteristic, int status) {
...
String payload = bytesToHex(characteristic.getValue());
...
}注意:如果有任何其他相关代码可以发布,请让我知道。
发布于 2018-06-30 08:23:26
您的特征设置看起来很好。虽然我对Android一无所知,但在iOS中,你应该可以通过调用以下代码来获取值。
peripheral.readValue(for: yourCharacteristic)你也可以使用像LightBlue这样的BLE实用程序来探索你的特征。
https://stackoverflow.com/questions/50528059
复制相似问题