我是andriod dev的新手,我正在尝试构建一个应用程序,该应用程序连接到一个ble设备,该设备可用于创建csv文件并存储具有notify属性的任何特征的值。我已经实现了oncharacteristicchanged(…),并且能够在订阅特征后接收原始字节。
然而,我不知道我应该如何创建一个csv文件,并写入这些原始字节,直到我取消订阅的特点或断开与设备。请帮忙。
edit:我正在尝试用csvwriter编写它,每次收到oncharacteristicchanged回调时都调用以下方法:
private void broadcastUpdate(final BluetoothGattCharacteristic characteristic, byte[] value){
if(isCharacteristicNotifiable(characteristic)){
String value_str = bytesToHex(value);
if(characteristic.getUuid().toString() == TX_CHARACTERISTIC){
value_str = bytestoformat(characteristic.getValue());
}
String[] line = value_str.split(" ");
Log.i("broadcastUpdate", value_str);
try {
CSVWriter writer = new CSVWriter(new FileWriter(csv, true));
writer.writeNext(line);
writer.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
每次特性更改得到的字节数为2字节或4字节。所以csv文件应该在一行中打印4个十六进制值,当只有2个字节的数据时,将2个值留空。
但是,如果第一个通知提供2字节的数据,那么我的整个文件对于每个更改只显示2字节的数据(即使在第一个通知之后接收到4字节的数据)。如果第一个通知有4个字节的数据,那么我就得到了我想要的。
1条答案
按热度按时间6psbrbz91#
csv文件可以像其他文件一样创建。首先打开要写入的文件:
这样写下你的价值观:
别忘了关闭文件:
编辑:尝试区分两种可能的状态。一种方式可能是这样的: