updated alpha version of maf scaler

git-svn-id: http://svn.3splooges.com/romraider-arch/trunk@783 d2e2e1cd-ba16-0410-be16-b7c4453c7c2d
This commit is contained in:
kascade 2007-08-25 00:48:01 +00:00
parent fda03364e9
commit 486b5e7f55
6 changed files with 107 additions and 40 deletions

View File

@ -122,6 +122,8 @@ import enginuity.logger.ecu.ui.paramlist.ParameterListTableModel;
import enginuity.logger.ecu.ui.paramlist.ParameterRow; import enginuity.logger.ecu.ui.paramlist.ParameterRow;
import enginuity.logger.ecu.ui.swing.menubar.EcuLoggerMenuBar; import enginuity.logger.ecu.ui.swing.menubar.EcuLoggerMenuBar;
import enginuity.logger.ecu.ui.swing.menubar.action.ToggleButtonAction; import enginuity.logger.ecu.ui.swing.menubar.action.ToggleButtonAction;
import enginuity.logger.ecu.ui.tab.maf.MafTab;
import enginuity.logger.ecu.ui.tab.maf.MafTabImpl;
import static enginuity.util.ParamChecker.checkNotNull; import static enginuity.util.ParamChecker.checkNotNull;
import static enginuity.util.ParamChecker.isNullOrEmpty; import static enginuity.util.ParamChecker.isNullOrEmpty;
import enginuity.util.SettingsManagerImpl; import enginuity.util.SettingsManagerImpl;
@ -180,7 +182,7 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
private GraphUpdateHandler graphUpdateHandler; private GraphUpdateHandler graphUpdateHandler;
private JPanel dashboardPanel; private JPanel dashboardPanel;
private DashboardUpdateHandler dashboardUpdateHandler; private DashboardUpdateHandler dashboardUpdateHandler;
private JPanel mafPanel; private MafTab mafTab;
private MafUpdateHandler mafUpdateHandler; private MafUpdateHandler mafUpdateHandler;
private EcuInit ecuInit; private EcuInit ecuInit;
private JToggleButton logToFileButton; private JToggleButton logToFileButton;
@ -243,8 +245,8 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
graphUpdateHandler = new GraphUpdateHandler(graphPanel); graphUpdateHandler = new GraphUpdateHandler(graphPanel);
dashboardPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 3, 3)); dashboardPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 3, 3));
dashboardUpdateHandler = new DashboardUpdateHandler(dashboardPanel); dashboardUpdateHandler = new DashboardUpdateHandler(dashboardPanel);
mafPanel = new JPanel(new BorderLayout(2, 2)); mafTab = new MafTabImpl(ecuEditor);
mafUpdateHandler = new MafUpdateHandler(mafPanel, ecuEditor); mafUpdateHandler = new MafUpdateHandler(mafTab);
controller = new LoggerControllerImpl(settings, ecuInitCallback, this, liveDataUpdateHandler, controller = new LoggerControllerImpl(settings, ecuInitCallback, this, liveDataUpdateHandler,
graphUpdateHandler, dashboardUpdateHandler, mafUpdateHandler, fileUpdateHandler, TableUpdateHandler.getInstance()); graphUpdateHandler, dashboardUpdateHandler, mafUpdateHandler, fileUpdateHandler, TableUpdateHandler.getInstance());
resetManager = new ResetManagerImpl(settings, this); resetManager = new ResetManagerImpl(settings, this);
@ -581,7 +583,7 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
tabbedPane.add("Data", buildSplitPane(buildParamListPane(dataTabParamListTableModel, dataTabSwitchListTableModel, dataTabExternalListTableModel), buildDataTab())); tabbedPane.add("Data", buildSplitPane(buildParamListPane(dataTabParamListTableModel, dataTabSwitchListTableModel, dataTabExternalListTableModel), buildDataTab()));
tabbedPane.add("Graph", buildSplitPane(buildParamListPane(graphTabParamListTableModel, graphTabSwitchListTableModel, graphTabExternalListTableModel), buildGraphTab())); tabbedPane.add("Graph", buildSplitPane(buildParamListPane(graphTabParamListTableModel, graphTabSwitchListTableModel, graphTabExternalListTableModel), buildGraphTab()));
tabbedPane.add("Dashboard", buildSplitPane(buildParamListPane(dashboardTabParamListTableModel, dashboardTabSwitchListTableModel, dashboardTabExternalListTableModel), buildDashboardTab())); tabbedPane.add("Dashboard", buildSplitPane(buildParamListPane(dashboardTabParamListTableModel, dashboardTabSwitchListTableModel, dashboardTabExternalListTableModel), buildDashboardTab()));
tabbedPane.add("MAF", mafPanel); tabbedPane.add("MAF", mafTab.getPanel());
return tabbedPane; return tabbedPane;
} }

View File

@ -21,6 +21,7 @@
package enginuity.logger.ecu.comms.io.connection; package enginuity.logger.ecu.comms.io.connection;
import java.util.Collection;
import enginuity.io.connection.ConnectionProperties; import enginuity.io.connection.ConnectionProperties;
import enginuity.io.connection.SerialConnection; import enginuity.io.connection.SerialConnection;
import enginuity.io.connection.SerialConnectionImpl; import enginuity.io.connection.SerialConnectionImpl;
@ -34,8 +35,6 @@ import static enginuity.util.ParamChecker.checkNotNullOrEmpty;
import static enginuity.util.ThreadUtil.sleep; import static enginuity.util.ThreadUtil.sleep;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import java.util.Collection;
public final class SSMLoggerConnection implements LoggerConnection { public final class SSMLoggerConnection implements LoggerConnection {
private static final Logger LOGGER = Logger.getLogger(SSMLoggerConnection.class); private static final Logger LOGGER = Logger.getLogger(SSMLoggerConnection.class);
private LoggerProtocol protocol; private LoggerProtocol protocol;

View File

@ -1,53 +1,31 @@
package enginuity.logger.ecu.ui.handler.maf; package enginuity.logger.ecu.ui.handler.maf;
import static java.awt.BorderLayout.CENTER;
import static java.awt.BorderLayout.WEST;
import java.util.Set; import java.util.Set;
import javax.swing.JPanel;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import enginuity.ECUEditor;
import enginuity.logger.ecu.comms.query.Response; import enginuity.logger.ecu.comms.query.Response;
import enginuity.logger.ecu.definition.LoggerData; import enginuity.logger.ecu.definition.LoggerData;
import enginuity.logger.ecu.ui.handler.DataUpdateHandler; import enginuity.logger.ecu.ui.handler.DataUpdateHandler;
import enginuity.logger.ecu.ui.tab.maf.MafChartPanel; import enginuity.logger.ecu.ui.tab.maf.MafTab;
import enginuity.logger.ecu.ui.tab.maf.MafControlPanel;
import org.jfree.data.xy.XYSeries;
public final class MafUpdateHandler implements DataUpdateHandler { public final class MafUpdateHandler implements DataUpdateHandler {
private static final String MAFV = "P18"; private static final String MAFV = "P18";
private static final String AF_LEARNING_1 = "P4"; private static final String AF_LEARNING_1 = "P4";
private static final String AF_CORRECTION_1 = "P3"; private static final String AF_CORRECTION_1 = "P3";
private final XYSeries series = new XYSeries("MAF Analysis"); private final MafTab mafTab;
private final XYTrendline trendline = new XYTrendline();
private final JPanel mafPanel;
private final ECUEditor ecuEditor;
private final MafControlPanel controlPanel;
public MafUpdateHandler(JPanel mafPanel, ECUEditor ecuEditor) { public MafUpdateHandler(MafTab mafTab) {
this.mafPanel = mafPanel; this.mafTab = mafTab;
this.ecuEditor = ecuEditor;
controlPanel = buildControlPanel();
mafPanel.add(controlPanel, WEST);
mafPanel.add(buildGraphPanel(), CENTER);
}
private MafControlPanel buildControlPanel() {
return new MafControlPanel(mafPanel, trendline, series, ecuEditor);
}
private MafChartPanel buildGraphPanel() {
return new MafChartPanel(trendline, series);
} }
public synchronized void registerData(LoggerData loggerData) { public synchronized void registerData(LoggerData loggerData) {
} }
public synchronized void handleDataUpdate(Response response) { public synchronized void handleDataUpdate(Response response) {
if (controlPanel.isRecordData() && containsData(response, MAFV, AF_LEARNING_1, AF_CORRECTION_1)) { if (mafTab.isRecordData() && containsData(response, MAFV, AF_LEARNING_1, AF_CORRECTION_1)) {
boolean valid = true; boolean valid = true;
// cl/ol check // cl/ol check
if (valid && (containsData(response, "E3") || containsData(response, "E27"))) { if ((containsData(response, "E3") || containsData(response, "E27"))) {
double clOl = -1; double clOl = -1;
if (containsData(response, "E3")) { if (containsData(response, "E3")) {
clOl = (int) findValue(response, "E3"); clOl = (int) findValue(response, "E3");
@ -55,31 +33,31 @@ public final class MafUpdateHandler implements DataUpdateHandler {
if (containsData(response, "E27")) { if (containsData(response, "E27")) {
clOl = (int) findValue(response, "E27"); clOl = (int) findValue(response, "E27");
} }
valid = controlPanel.isValidClOl(clOl); valid = mafTab.isValidClOl(clOl);
} }
// afr check // afr check
if (valid && containsData(response, "P58")) { if (valid && containsData(response, "P58")) {
double afr = findValue(response, "P58"); double afr = findValue(response, "P58");
valid = controlPanel.isValidAfr(afr); valid = mafTab.isValidAfr(afr);
} }
// rpm check // rpm check
if (valid && containsData(response, "P8")) { if (valid && containsData(response, "P8")) {
double rpm = findValue(response, "P8"); double rpm = findValue(response, "P8");
valid = controlPanel.isValidRpm(rpm); valid = mafTab.isValidRpm(rpm);
} }
// maf check // maf check
if (valid && containsData(response, "P12")) { if (valid && containsData(response, "P12")) {
double maf = findValue(response, "P12"); double maf = findValue(response, "P12");
valid = controlPanel.isValidMaf(maf); valid = mafTab.isValidMaf(maf);
} }
// coolant temp check // coolant temp check
if (valid && containsData(response, "P2")) { if (valid && containsData(response, "P2")) {
double temp = findValue(response, "P2"); double temp = findValue(response, "P2");
valid = controlPanel.isValidCoolantTemp(temp); valid = mafTab.isValidCoolantTemp(temp);
} }
if (valid) { if (valid) {
@ -88,7 +66,7 @@ public final class MafUpdateHandler implements DataUpdateHandler {
final double correction = findValue(response, AF_CORRECTION_1); final double correction = findValue(response, AF_CORRECTION_1);
SwingUtilities.invokeLater(new Runnable() { SwingUtilities.invokeLater(new Runnable() {
public void run() { public void run() {
series.add(mafv, learning + correction); mafTab.addData(mafv, learning + correction);
} }
}); });
} }

View File

@ -0,0 +1,7 @@
package enginuity.logger.ecu.ui.tab;
import javax.swing.JPanel;
public interface Tab {
JPanel getPanel();
}

View File

@ -0,0 +1,19 @@
package enginuity.logger.ecu.ui.tab.maf;
import enginuity.logger.ecu.ui.tab.Tab;
public interface MafTab extends Tab {
boolean isRecordData();
boolean isValidClOl(double value);
boolean isValidAfr(double value);
boolean isValidRpm(double value);
boolean isValidMaf(double value);
boolean isValidCoolantTemp(double value);
void addData(double mafv, double correction);
}

View File

@ -0,0 +1,62 @@
package enginuity.logger.ecu.ui.tab.maf;
import java.awt.BorderLayout;
import static java.awt.BorderLayout.CENTER;
import static java.awt.BorderLayout.WEST;
import javax.swing.JPanel;
import enginuity.ECUEditor;
import enginuity.logger.ecu.ui.handler.maf.XYTrendline;
import org.jfree.data.xy.XYSeries;
public final class MafTabImpl extends JPanel implements MafTab {
private final XYSeries series = new XYSeries("MAF Analysis");
private final XYTrendline trendline = new XYTrendline();
private final MafControlPanel controlPanel;
public MafTabImpl(ECUEditor ecuEditor) {
super(new BorderLayout(2, 2));
controlPanel = buildControlPanel(ecuEditor);
add(controlPanel, WEST);
add(buildGraphPanel(), CENTER);
}
private MafControlPanel buildControlPanel(ECUEditor ecuEditor) {
return new MafControlPanel(this, trendline, series, ecuEditor);
}
private MafChartPanel buildGraphPanel() {
return new MafChartPanel(trendline, series);
}
public boolean isRecordData() {
return controlPanel.isRecordData();
}
public boolean isValidClOl(double value) {
return controlPanel.isValidClOl(value);
}
public boolean isValidAfr(double value) {
return controlPanel.isValidAfr(value);
}
public boolean isValidRpm(double value) {
return controlPanel.isValidRpm(value);
}
public boolean isValidMaf(double value) {
return controlPanel.isValidMaf(value);
}
public boolean isValidCoolantTemp(double value) {
return controlPanel.isValidCoolantTemp(value);
}
public void addData(double mafv, double correction) {
series.add(mafv, correction);
}
public JPanel getPanel() {
return this;
}
}