+++ /dev/null
-
-// Copyright (c) 2010 Anthony Towns
-// GPL v2 or later
-
-package altosui;
-
-import java.lang.UnsupportedOperationException;
-import java.util.HashMap;
-import java.util.NoSuchElementException;
-import java.util.Iterator;
-import java.io.*;
-import com.csvreader.CsvReader;
-
-import altosui.AltosDataPoint;
-
-class AltosCsvReader implements Iterable<AltosDataPoint>
-{
- public CsvReader csv;
- public AltosDataPoint next = null;
-
- static protected String [] headers = "version serial flight call time rssi state state_name acceleration pressure altitude height accel_speed baro_speed temperature battery_voltage drogue_voltage main_voltage connected locked nsat latitude longitude altitude year month day hour minute second pad_dist pad_range pad_az pad_el".split(" ");
-
- AltosCsvReader(Reader stream) {
- csv = new CsvReader(stream);
- csv.setComment('#');
- csv.setUseComments(true);
- csv.setHeaders(headers);
- }
- AltosCsvReader(String filename) throws FileNotFoundException {
- csv = new CsvReader(filename);
- csv.setComment('#');
- csv.setUseComments(true);
- csv.setHeaders(headers);
- }
-
- public Iterator<AltosDataPoint> iterator() {
- return new Iterator<AltosDataPoint>() {
- public void remove() {
- throw new UnsupportedOperationException();
- }
- public boolean hasNext() {
- if (next == null) {
- try {
- if (csv.readRecord()) {
- next = new CsvRow();
- } else {
- close();
- return false;
- }
- } catch (IOException e) {
- close();
- return false;
- }
- }
- return true;
- }
- public AltosDataPoint next() {
- if (!hasNext())
- throw new NoSuchElementException();
- AltosDataPoint res = next;
- next = null;
- return res;
- }
- };
- }
-
- public void close() {
- csv.close();
- }
-
- private class CsvRow extends HashMap<String,String>
- implements AltosDataPoint
- {
- CsvRow() throws IOException {
- for (int i = 0; i < headers.length; i++) {
- this.put(headers[i], csv.get(headers[i]).trim());
- }
- }
-
- private int intField(String name) {
- return Integer.parseInt(get(name).trim());
- }
- private double doubleField(String name) {
- return Double.valueOf(get(name)).doubleValue();
- }
- private String stringField(String name) {
- return get(name);
- }
-
- public int version() { return intField("version"); }
- public int serial() { return intField("serial"); }
- public int flight() { return intField("flight"); }
- public String callsign() { return stringField("call"); }
- public double time() { return doubleField("time"); }
- public double rssi() { return doubleField("rssi"); }
-
- public int state() { return intField("state"); }
- public String state_name() { return stringField("state_name"); }
-
- public double acceleration() { return doubleField("acceleration"); }
- public double pressure() { return doubleField("pressure"); }
- public double altitude() { return doubleField("altitude"); }
- public double height() { return doubleField("height"); }
- public double accel_speed() { return doubleField("accel_speed"); }
- public double baro_speed() { return doubleField("baro_speed"); }
- public double temperature() { return doubleField("temperature"); }
- public double battery_voltage() {
- return doubleField("battery_voltage");
- }
- public double drogue_voltage() { return doubleField("drogue_voltage"); }
- public double main_voltage() { return doubleField("main_voltage"); }
- }
-}
import java.util.prefs.*;
import altosui.AltosPreferences;
-import altosui.AltosCsvReader;
import altosui.AltosDataPointReader;
import altosui.AltosEepromIterable;
import altosui.AltosTelemetryIterable;
} else if (filename.endsWith("telem")) {
FileInputStream in = new FileInputStream(file);
return new AltosDataPointReader(new AltosTelemetryIterable(in));
- } else if (filename.endsWith("csv")) {
- return new AltosCsvReader(new FileReader(file));
} else {
throw new FileNotFoundException();
}
frame = in_frame;
setDialogTitle("Select Flight Record File");
setFileFilter(new FileNameExtensionFilter("Flight data file",
- "csv", "telem", "eeprom"));
+ "telem", "eeprom"));
setCurrentDirectory(AltosPreferences.logdir());
}
}
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
-import altosui.AltosCsvReader;
import altosui.AltosDataPoint;
import altosui.AltosGraphTime;
return graph;
}
-
- public static void main(String[] args)
- throws java.io.FileNotFoundException, java.io.IOException
- {
- if (args.length < 1 || 2 < args.length)
- {
- System.out.println("Please specify telemetry csv");
- return;
- }
-
- AltosCsvReader csv = new AltosCsvReader(args[0]);
- if (args.length == 1) {
- for (AltosGraph g : createGraphs(csv)) {
- g.toPNG();
- }
- } else {
- int which = Integer.parseInt(args[1].trim());
- AltosGraphUI demo = new AltosGraphUI(csv, which);
- }
- }
}
/* gnuplot bits...