package eclipse.controller.app;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.log4j.Logger;
import eclipse.controller.acqui.DataAcquisition;
import eclipse.controller.util.TelemetrySettings;
import eclipse.model.data.DataManager;
/**
* This class provide specific information for matlab file, for mecanical analyses
* @author Marco
*
*/
public class MatLab implements Runnable{
private static final int VOLANT_ID = 7;
private static final int VOLANT_VVELOCITY_ID = 4;
private static final int VOLANT_MVELOCITY_ID = 5;
private static final int VOLANT_BUSVOLTAGE_ID = 6;
private static final int VOLANT_BUSCURRENT_ID = 7;
private static final int VOLANT_ODOMETER_ID = 8;
private static final int VOLANT_AMPHOUR_ID = 9;
private String sep = ",";
public void run() {
DataManager dd = DataManager.getInstance();
FileWriter fstream;
BufferedWriter out;
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("yyyy_MM_dd_hh_mm_ss");
String dirName = "MathLab_" + ft.format(dNow);
File dir = new File("log/" + dirName);
dir.mkdir();
try {
while(true){
if(DataAcquisition.getInstance().getAcquiStatus()){
fstream = new FileWriter(dir.getPath() + "/" + TelemetrySettings.getInstance().getSetting("MATLABFILE")+".dat",true);
Date date = new Date();
out = new BufferedWriter(fstream);
out.write(
date.toString()+sep+//HEURE
dd.getRawValue(VOLANT_ID, VOLANT_VVELOCITY_ID)+sep+//LAT
dd.getRawValue(VOLANT_ID, VOLANT_MVELOCITY_ID)+sep+//LON
dd.getRawValue(VOLANT_ID, VOLANT_BUSVOLTAGE_ID)+sep+//DRIVE_RPM
dd.getRawValue(VOLANT_ID, VOLANT_BUSCURRENT_ID)+sep+//DRIVE_C
dd.getRawValue(VOLANT_ID, VOLANT_ODOMETER_ID)+sep+//DRIVE_T
dd.getRawValue(VOLANT_ID, VOLANT_AMPHOUR_ID)+//DRIVE_T
"\r\n"
);
out.close();
fstream.close();
try {
Thread.sleep(Integer.parseInt(TelemetrySettings.getInstance().getSetting("MATLABTIMER")));
} catch (InterruptedException e) {
StringWriter stack = new StringWriter();
Logger.getLogger("main").error("Caught exception; decorating with appropriate status template : " + stack.toString());
}
}
else
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
StringWriter stack = new StringWriter();
e.printStackTrace(new PrintWriter(stack));
Logger.getLogger("main").error("Caught exception; decorating with appropriate status template : " + stack.toString());
}
}
}
} catch (IOException e) {
}
}
}