gettin close

git-svn-id: http://svn.3splooges.com/romraider-arch/trunk@546 d2e2e1cd-ba16-0410-be16-b7c4453c7c2d
This commit is contained in:
Tgui 2007-03-02 06:32:43 +00:00
parent 0a1d957cfa
commit 3d7b68dee9
12 changed files with 210 additions and 102 deletions

View File

@ -25,9 +25,9 @@ import enginuity.logger.utec.properties.UtecProperties;
// CommPortOwnershipListener {
import gnu.io.*;
public class UtecSerialConnection {
public class UtecSerialConnection{
private static GetMapFromUtecListener getMapFromUtecListener = null;
// Parameters used to define serial connection
public static SerialParameters parameters = new SerialParameters();
@ -50,14 +50,7 @@ public class UtecSerialConnection {
// Listeners
private static Vector portListeners = new Vector();
// Define whether or not we are recieving a map from the UTEC
private static boolean isMapFromUtecPrep = false;
private static boolean isMapFromUtec = false;
private static UtecMapData currentMap = null;
private static String totalDat = "";
private static UtecSerialListener serialListener = null;
public static void init(UtecSerialListener se){
@ -100,6 +93,7 @@ public class UtecSerialConnection {
* @throws SerialConnectionException
*/
public static void openConnection() throws SerialConnectionException {
System.out.println("Opening connection now.");
// if(sPort == null){ System.err.println("No port selected or available to open."); return; }
@ -158,7 +152,7 @@ public class UtecSerialConnection {
// Add this object as an event listener for the serial port.
try {
sPort.addEventListener(serialListener);
sPort.addEventListener(new UtecSerialListener());
} catch (TooManyListenersException e) {
System.err.println("Too Many listeners");
sPort.close();
@ -282,4 +276,17 @@ public class UtecSerialConnection {
public static boolean isOpen(){
return open;
}
public static InputStream getInputFromUtecStream() {
return inputFromUtecStream;
}
public static OutputStream getOutputToUtecStream() {
return outputToUtecStream;
}
public void serialEvent(SerialPortEvent arg0) {
// TODO Auto-generated method stub
}
}

View File

@ -48,27 +48,17 @@ public class LoggerEvent {
if(theData.startsWith("--")){
theData = "0.0";
}
if(theData.startsWith("ECU")){
theData = "0.0";
}
try{
doubleData[i] = Double.parseDouble(theData);
}catch (NumberFormatException e) {
System.out.println("Number error in commevent.");
//System.out.println("Number error in commevent.");
this.isValidData = false;
return;
}
// Valid data found
String[] afrIndex = UtecProperties.getProperties("utec.afrIndex");
if(afrIndex == null || afrIndex[0] == null || afrIndex[0].length() < 1){
// No afr data available
}else{
System.out.println("AFR Data available.");
UtecAFRListener utecAFRListener = DataManager.getUtecAFRListener();
if(utecAFRListener != null){
utecAFRListener.receivedUtecAFRData(Double.parseDouble(afrIndex[0]));
}
}
}
}

View File

@ -3,6 +3,7 @@ package enginuity.logger.utec.commEvent;
import java.util.TimerTask;
import enginuity.logger.utec.comm.UtecSerialConnection;
import enginuity.logger.utec.gui.JutecGUI;
public class UtecTimerTask extends TimerTask{
private UtecTimerTaskListener listener = null;
@ -14,16 +15,19 @@ public class UtecTimerTask extends TimerTask{
this.listener = listener;
this.data = data;
this.stringBuffer = new StringBuffer(data);
JutecGUI.getInstance().getJProgressBar().setMinimum(0);
JutecGUI.getInstance().getJProgressBar().setMaximum(data.length());
}
public void run(){
char theChar = stringBuffer.charAt(counter);
System.out.println("->"+theChar+"<- :"+(int)theChar+"");
// System.out.println("->"+theChar+"<- :"+(int)theChar+"");
//Send the data to the Utec
UtecSerialConnection.sendCommandToUtec((int)theChar);
counter++;
JutecGUI.getInstance().getJProgressBar().setValue(counter);
// Kill the timer after a at the end of the string
if(counter == data.length()){

View File

@ -36,7 +36,7 @@ import enginuity.logger.utec.commEvent.UtecTimerTaskManager;
public class UtecInterface{
//Store string vector of known system comm ports
private static Vector portChoices = listPortChoices();
private static UtecSerialListener se = new UtecSerialListener();
private static UtecSerialListener serialEventListener = new UtecSerialListener();
private static Vector<LoggerListener> loggerListeners = new Vector<LoggerListener>();
/**
@ -44,7 +44,7 @@ public class UtecInterface{
*
*/
public static void init(){
UtecSerialConnection.init(se);
UtecSerialConnection.init(serialEventListener);
}
/**
@ -166,8 +166,7 @@ public class UtecInterface{
* @param mapNumber
*/
public static void pullMapData(int mapNumber, GetMapFromUtecListener listener) {
/*
public static void pullMapData(int mapNumber) {
// Sanity check
if (mapNumber < 1 || mapNumber > 5) {
System.err.println("Map selection out of range.");
@ -184,14 +183,11 @@ public class UtecInterface{
System.out.println("UtecControl, getting map:" + mapNumber);
// Null out any previously loaded map
this.currentMap = null;
// Who will get this map in the end?
this.getMapFromUtecListener = listener;
serialEventListener.currentMap = null;
// Setup map transfer prep state
this.isMapFromUtecPrep = true;
this.isMapFromUtec = false;
serialEventListener.isMapFromUtecPrep = true;
serialEventListener.isMapFromUtec = false;
// Iterate through command string
int starCounter = 0;
@ -201,32 +197,32 @@ public class UtecInterface{
// Select map
if (mapNumber == 1) {
this.sendCommandToUtec(33);
UtecTimerTaskManager.execute(33);
System.out.println("Requested Map 1");
}
if (mapNumber == 2) {
this.sendCommandToUtec(64);
UtecTimerTaskManager.execute(64);
System.out.println("Requested Map 2");
}
if (mapNumber == 3) {
this.sendCommandToUtec(35);
UtecTimerTaskManager.execute(35);
System.out.println("Requested Map 3");
}
if (mapNumber == 4) {
this.sendCommandToUtec(36);
UtecTimerTaskManager.execute(36);
System.out.println("Requested Map 4");
}
if (mapNumber == 5) {
this.sendCommandToUtec(37);
UtecTimerTaskManager.execute(37);
System.out.println("Requested Map 5");
}
}else if(starCounter == 1){
// Make this class receptive to map transfer
this.isMapFromUtec = true;
serialEventListener.isMapFromUtec = true;
// No longer map prep
this.isMapFromUtecPrep = false;
serialEventListener.isMapFromUtecPrep = false;
}else{
System.err.println("No operation supported for properties value '*'");
@ -235,10 +231,9 @@ public class UtecInterface{
starCounter++;
}else{
// Send parsed command to the utec
this.sendCommandToUtec(Integer.parseInt(commandList[i]));
UtecTimerTaskManager.execute(Integer.parseInt(commandList[i]));
}
}
*/
}
@ -343,4 +338,8 @@ public class UtecInterface{
public static void addLoggerListener(LoggerListener ll){
loggerListeners.add(ll);
}
public static Vector<LoggerListener> getLoggerListeners() {
return loggerListeners;
}
}

View File

@ -3,26 +3,29 @@ package enginuity.logger.utec.commInterface;
import java.io.IOException;
import java.util.Iterator;
import enginuity.logger.utec.comm.UtecSerialConnection;
import enginuity.logger.utec.commEvent.LoggerEvent;
import enginuity.logger.utec.commEvent.LoggerListener;
import enginuity.logger.utec.gui.mapTabs.DataManager;
import enginuity.logger.utec.mapData.UtecMapData;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
public class UtecSerialListener implements SerialPortEventListener{
// Define whether or not we are recieving a map from the UTEC
public boolean isMapFromUtecPrep = false;
public boolean isMapFromUtec = false;
public UtecMapData currentMap = null;
public String totalDat = "";
public UtecSerialListener(){
System.out.println("Serial listener was instantiated.");
}
/**
* Handles SerialPortEvents. The two types of SerialPortEvents that this
* program is registered to listen for are DATA_AVAILABLE and BI. During
* DATA_AVAILABLE the port buffer is read until it is drained, when no more
* data is availble and 30ms has passed the method returns. When a BI event
* occurs the words BREAK RECEIVED are written to the messageAreaIn.
*/
public void serialEvent(SerialPortEvent e) {
/*
System.out.println("Got serial event.");
// Create a StringBuffer and int to receive input data.
StringBuffer inputBuffer = new StringBuffer();
int newData = 0;
@ -37,20 +40,12 @@ public class UtecSerialListener implements SerialPortEventListener{
// Append new output to buffer
while (newData != -1) {
try {
newData = inputFromUtecStream.read();
newData = UtecSerialConnection.getInputFromUtecStream().read();
if (newData == -1) {
break;
}
//if ('\r' == (char) newData) {
// inputBuffer.append('\n');
//} else {
// inputBuffer.append((char) newData);
//}
inputBuffer.append((char) newData);
System.out.print((char)newData);
this.totalDat += (char)newData;
@ -60,7 +55,7 @@ public class UtecSerialListener implements SerialPortEventListener{
return;
}
}
// Ouput to console
//System.out.println(inputBuffer);
if (this.isMapFromUtecPrep == true) {
@ -93,14 +88,17 @@ public class UtecSerialListener implements SerialPortEventListener{
this.currentMap.populateMapDataStructures();
System.out.println("hi 3");
// Inform data manager of new map
DataManager.setCurrentMap(this.currentMap);
// Notify listner if available
System.out.println("Calling listeners.");
if (this.getMapFromUtecListener != null) {
System.out.println("Listener called.");
this.getMapFromUtecListener.mapRetrieved(this.currentMap);
}else{
System.out.println("Calling listeners, but none found.");
}
//System.out.println("Calling listeners.");
//if (this.getMapFromUtecListener != null) {
// System.out.println("Listener called.");
// this.getMapFromUtecListener.mapRetrieved(this.currentMap);
//}else{
// System.out.println("Calling listeners, but none found.");
//}
// Empty out map storage
this.currentMap = null;
@ -114,11 +112,14 @@ public class UtecSerialListener implements SerialPortEventListener{
loggerEvent.setLoggerData(new String(inputBuffer));
loggerEvent.setLoggerData(true);
Iterator portIterator = portListeners.iterator();
Iterator portIterator = UtecInterface.getLoggerListeners().iterator();
while (portIterator.hasNext()) {
LoggerListener theListener = (LoggerListener) portIterator.next();
if(loggerEvent.isValidData() == true){
//System.out.println("Valid data");
theListener.getCommEvent(loggerEvent);
}else{
//System.out.println("Invalid data");
}
}
@ -130,7 +131,5 @@ public class UtecSerialListener implements SerialPortEventListener{
//System.out.println("BREAK RECEIVED.");
}
*/
}
}

View File

@ -27,7 +27,7 @@ import enginuity.logger.utec.commInterface.UtecInterface;
/**
* @author botman
*/
public class JutecGUI extends JFrame implements ActionListener,GetMapFromUtecListener, KeyListener {
public class JutecGUI extends JFrame implements ActionListener, KeyListener {
// Top level desktop pane
public JLayeredPane desktop = null;
@ -78,17 +78,17 @@ public class JutecGUI extends JFrame implements ActionListener,GetMapFromUtecLis
private static JutecGUI instance = null;
public static UtecMapData currentMap = null;
// Text input field for sending commands directly to the UTEC
private JTextField textInput = new JTextField();
private JLabel utecInputLabel = new JLabel(" Send Single Char Commands to UTEC: ");
// Map tabs
private MapJPanel timingMapPanel = new MapJPanel(MapJPanel.TIMINGMAP);
private MapJPanel fuelMapPanel = new MapJPanel(MapJPanel.FUELMAP);
private MapJPanel boostMapPanel = new MapJPanel(MapJPanel.BOOSTMAP);
private JProgressBar jProgressBar = new JProgressBar();
public JProgressBar getJProgressBar() {
return jProgressBar;
}
public static JutecGUI getInstance() {
return instance;
@ -103,12 +103,15 @@ public class JutecGUI extends JFrame implements ActionListener,GetMapFromUtecLis
this.setResizable(false);
this.setDefaultCloseOperation(setDefaultCloseOperation);
this.jProgressBar.setSize(790,20);
// *************************
// Voice the welcome message
// *************************
SpeakString vc = new SpeakString("Welcome to you teck logger! Use at your own risk.");
System.out.println("UTEC Gui is loading now.");
// Actions to take when window is closing
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
@ -221,7 +224,8 @@ public class JutecGUI extends JFrame implements ActionListener,GetMapFromUtecLis
JPanel totalPanel = new JPanel(new BorderLayout());
JPanel commandPanel = new JPanel(new BorderLayout());
this.textInput.addKeyListener(this);
commandPanel.add(this.jProgressBar, BorderLayout.NORTH);
commandPanel.add(this.utecInputLabel, BorderLayout.WEST);
commandPanel.add(this.textInput, BorderLayout.CENTER);
@ -312,14 +316,14 @@ public class JutecGUI extends JFrame implements ActionListener,GetMapFromUtecLis
else if (cmd.equals("Save Map To File")) {
System.out.println("Saving map to file.");
if (this.currentMap != null) {
if (DataManager.getCurrentMapData() != null) {
String saveFileName = null;
System.out.println("Save map now.");
fileChosen = fileChooser.showSaveDialog(this);
if (fileChosen == JFileChooser.APPROVE_OPTION) {
saveFileName = fileChooser.getSelectedFile().getPath();
this.currentMap.writeMapToFile(saveFileName);
DataManager.getCurrentMapData().writeMapToFile(saveFileName);
}
} else {
@ -329,27 +333,27 @@ public class JutecGUI extends JFrame implements ActionListener,GetMapFromUtecLis
else if (cmd.equals("Load Map #1")) {
System.out.println("Starting to get map 1");
UtecInterface.pullMapData(1, this);
UtecInterface.pullMapData(1);
}
else if (cmd.equals("Load Map #2")) {
System.out.println("Starting to get map 2");
UtecInterface.pullMapData(2, this);
UtecInterface.pullMapData(2);
}
else if (cmd.equals("Load Map #3")) {
System.out.println("Starting to get map 3");
UtecInterface.pullMapData(3, this);
UtecInterface.pullMapData(3);
}
else if (cmd.equals("Load Map #4")) {
System.out.println("Starting to get map 4");
UtecInterface.pullMapData(4, this);
UtecInterface.pullMapData(4);
}
else if (cmd.equals("Load Map #5")) {
System.out.println("Starting to get map 5");
UtecInterface.pullMapData(5, this);
UtecInterface.pullMapData(5);
}
else if (cmd.equals("Load Map File")) {
@ -453,12 +457,6 @@ public class JutecGUI extends JFrame implements ActionListener,GetMapFromUtecLis
}
public void mapRetrieved(UtecMapData theMap) {
System.out.println("@@@@@@@@@@@@@@@@@@ Got a map from the utec:" + theMap.getMapName());
this.currentMap = theMap;
DataManager.setCurrentMap(theMap);
}
public void keyPressed(KeyEvent arg0) {
//System.out.println("Key Pressed");
// System.out.println("Key Pressed:"+arg0.getKeyCode()+" :"+arg0.getKeyChar()+" :"+arg0.getModifiers()+" :"+(int)arg0.getKeyChar());

View File

@ -36,12 +36,23 @@ public class MapJPanel extends JPanel{
}
this.tableModel = new UtecTableModel(this.mapType, initialData);
init();
if(this.mapType == MapJPanel.FUELMAP){
init(-8.0, 8.0);
}
if(this.mapType == MapJPanel.TIMINGMAP){
init(-1.0, 5.0);
}
if(this.mapType == MapJPanel.BOOSTMAP){
init(0.0, 500.0);
}
}
public void init(){
table = new UtecJTable(tableModel, mapType);
public void init(double min, double max){
table = new UtecJTable(tableModel, mapType, min, max);
//table.setPreferredScrollableViewportSize(new Dimension(500, 70));
//Create the scroll pane and add the table to it.

View File

@ -1,13 +1,26 @@
package enginuity.logger.utec.gui.mapTabs;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
public class UtecJTable extends JTable{
public UtecJTable(UtecTableModel theModel, int modelType){
public UtecJTable(UtecTableModel theModel, int modelType, double minValue, double maxValue){
super(theModel);
//this.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
//this.getColumnModel().getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
//this.setRowSelectionAllowed(false);
this.setCellSelectionEnabled(true);
//this.setColumnSelectionAllowed(false);
this.getSelectionModel().addListSelectionListener(new UtecSelectionListener(this));
this.setDefaultRenderer(Object.class, new UtecTableCellRenderer(minValue, maxValue));
// ************************
// Utec Specific code below
// ************************
if(modelType == MapJPanel.FUELMAP){
System.out.println("Setting the fuel listener");
DataManager.setFuelListener(theModel);
}
else if(modelType == MapJPanel.BOOSTMAP){
@ -19,7 +32,6 @@ public class UtecJTable extends JTable{
}
public void updateData(double[][] newData){
System.out.println("Hi ya spanky");
((UtecTableModel)this.dataModel).replaceData(newData);
}
}

View File

@ -0,0 +1,34 @@
package enginuity.logger.utec.gui.mapTabs;
import javax.swing.JTable;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class UtecSelectionListener implements ListSelectionListener{
private JTable parentTable = null;
public UtecSelectionListener(JTable parentTable){
this.parentTable = parentTable;
}
public void valueChanged(ListSelectionEvent event) {
//System.out.println("1: "+ event.getFirstIndex()+" 2: "+event.getLastIndex());
int selRow[] = parentTable.getSelectedRows();
int selCol[] = parentTable.getSelectedColumns();
for(int i = 0; i < selRow.length; i++){
//System.out.println("Row Value: "+selRow[i]);
}
for(int i = 0; i < selCol.length; i++){
//System.out.println("Col Value: "+selCol[i]);
}
//System.out.println("---------------------------");
Object[] selectedCells = new Object[selRow.length * selCol.length];
}
}

View File

@ -0,0 +1,40 @@
package enginuity.logger.utec.gui.mapTabs;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.vecmath.Color3f;
import com.ecm.graphics.tools.ColorTable;
public class UtecTableCellRenderer extends DefaultTableCellRenderer{
private double min;
private double max;
public UtecTableCellRenderer(double min, double max){
this.min = min;
this.max = max;
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col){
Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
if(isSelected){
cell.setBackground(Color.BLUE);
}else{
if(value instanceof Double){
//System.out.println("Amount:"+(Double)value);
}
ColorTable.initColorTable(min, max);
Color3f theColor = ColorTable.getColor((Double)value);
cell.setBackground(new Color(theColor.x, theColor.y, theColor.z));
}
return cell;
}
}

View File

@ -20,6 +20,7 @@ public class UtecTableModel extends AbstractTableModel {
for (int i = 0; i < columnNames.length; i++) {
columnNames[i] = i + "";
}
}
public int getColumnCount() {

View File

@ -0,0 +1,13 @@
package enginuity.logger.utec.gui.mapTabs;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
public class UtecTableSelectionListener implements TableModelListener{
public void tableChanged(TableModelEvent arg0) {
// TODO Auto-generated method stub
}
}