can-log-tools/src/main/java/com/rusefi/can/reader/CANoeReader.java

50 lines
1.5 KiB
Java
Raw Normal View History

2022-02-02 16:48:51 -08:00
package com.rusefi.can.reader;
import com.rusefi.can.CANPacket;
2022-02-02 19:37:29 -08:00
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Stream;
public class CANoeReader implements CANLineReader {
@Override
2022-02-02 16:48:51 -08:00
public CANPacket readLine(String line) {
2022-02-02 19:37:29 -08:00
if (line.contains("ErrorFrame"))
return null;
String[] tokens = line.trim().split("\\s+");
2022-02-02 16:48:51 -08:00
double timeStamp = Double.parseDouble(tokens[0]);
int sid = Integer.parseInt(tokens[2], 16);
int counter = Integer.parseInt(tokens[5]);
byte[] data = new byte[counter];
for (int i = 0; i < counter; i++)
data[i] = (byte) Integer.parseInt(tokens[6 + i], 16);
return new CANPacket(timeStamp, sid, data);
2022-02-02 19:37:29 -08:00
}
2022-02-02 16:48:51 -08:00
2022-02-02 19:37:29 -08:00
public List<CANPacket> readFile(String fileName) throws IOException {
List<CANPacket> result = new ArrayList<>();
try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
stream.forEach(new Consumer<String>() {
int index = 0;
2022-02-02 16:48:51 -08:00
2022-02-02 19:37:29 -08:00
@Override
public void accept(String s) {
if (index++ < 5)
return;
CANPacket packet = readLine(s);
if (packet != null)
result.add(packet);
}
});
return result;
}
2022-02-02 16:48:51 -08:00
}
}