Interfaces Parcial Uno

27
INTERFACES Y EQUIPOS PERIFÉRICOS Titular: Dr. Renán Cóntreras Luis Alberto Hernández Córdova A00803664 José Luis Barragán García A01099012 Iliani Carro Pérez A01096221 Enero - Mayo 2012 INTERFAZ GRÁFICA DE UN AUTOMÓVIL

Transcript of Interfaces Parcial Uno

Page 1: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS Titular: Dr. Renán Cóntreras

Luis Alberto Hernández Córdova

A00803664

José Luis Barragán García A01099012

Iliani Carro Pérez A01096221

Enero - Mayo 2012

INTERFAZ GRÁFICA DE UN AUTOMÓVIL

Page 2: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

La interfaz está creada con 3 clases en java y 1 programa en arduino. El programa de

arduino consiste en mandar un carácter y mandar un carácter y posteriormente mandar la

lectura de uno de los canales analógicos que se tienen y posteriormente con ese carácter

que se mandó, se informa al programa en java en donde tiene que asiganar el entero para

que funcione el tacómetro, esto se hace para dos potenciómetros. Posteriormente el

programa de arduino tiene una función de evento serial para poder recibir los datos de

entrada, este programa tiene un arreglo de banderas para que dependiendo del carácter

que se reciba asigne un valor al PWM o prenda alguno de los focos.

Por el lado de Java, se tienen tres clases las cuales son la MainSerial, la GUI y la

Communicator, en las cuales se hace lo siguiente:

MainSerial: está clase se encarga de inicializar la interfaz y de que la comunicación se

pueda ejecutar.

GUI: esta clase se encarga de realizar al interfaz(botones, focos, tacómetros y sliders).

Los cuales están realizados con los mismos códigos y librerías que se vieron en clase.

Communicator: esta clase tiene como fin, recibir los datos que vienen del serial con el fin

de que se puedan mostrar en la interfaz que se forma en la clase GUI. Específicamente,

la forma en la que recibe y envía los datos en uno por uno, lo cual hace activa un pequeño

sistema debanderas que se tiene para que dependiendo el carácter que reciba va a ser el

valor y el lugar en donde se va a mostrar en la interfaz.

Page 3: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

PROGRAMA DE ARDUINO

int A = 0;

int B = 0;

int C = 0;

int D = 0;

int E = 0;

int F = 0;

const int ledPin = 6;

int brightness=0;

char data;

char bandera=0,contador=1,contador1=1;

void setup() {

Serial.begin(9600);

pinMode(ledPin, OUTPUT);

pinMode(11, OUTPUT);

pinMode(10, OUTPUT);

pinMode(2, INPUT);

pinMode(3, INPUT);

}

void loop() {

A=map(analogRead(A1),0,1023,0,255);

Serial.write('a');

Page 4: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

Serial.write(A);

delay(35);

B=map(analogRead(A2),0,1023,0,255);

Serial.write('b');

Serial.write(B);

delay(35);

if(digitalRead(2)==HIGH)

{

Serial.write('c');

}

else

{

Serial.write('d');

}

if(digitalRead(2)==HIGH)

{

Serial.write('c');

}

else

{

Serial.write('d');

}

Page 5: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

if(digitalRead(3)==HIGH)

{

Serial.write('e');

}

else

{

Serial.write('f');

}

analogWrite(ledPin, brightness);

delay(150);

}

void serialEvent() {

if (Serial.available()) {

data=Serial.read();

if(bandera==0){

if(data=='h')

{

if (contador==1){

Page 6: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

digitalWrite(11,HIGH);

contador=0;

}

else{

digitalWrite(11,LOW);

contador=1;

}

}

if(data=='l')

{

if (contador1==1){

digitalWrite(10,HIGH);

contador1=0;

}

else{

digitalWrite(10,LOW);

contador1=1;

}

}

if (data=='p'){

bandera=1;

}

}

else{

Page 7: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

bandera=0;

brightness= map(data,48,57,0,255);

Serial.println(brightness);

}

}

}

Page 8: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

MAIN SERIAL

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MainSerial{ static int dataToSend; public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new GUI().setVisible(true); System.out.println("Started"); } }); } }

Page 9: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

GUI

import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.dial.DialBackground; import org.jfree.chart.plot.dial.DialCap; import org.jfree.chart.plot.dial.DialPlot; import org.jfree.chart.plot.dial.DialTextAnnotation; import org.jfree.chart.plot.dial.DialValueIndicator; import org.jfree.chart.plot.dial.StandardDialFrame; import org.jfree.chart.plot.dial.StandardDialRange; import org.jfree.chart.plot.dial.StandardDialScale; import org.jfree.data.general.DefaultValueDataset; import org.jfree.ui.GradientPaintTransformType; import org.jfree.ui.StandardGradientPaintTransformer; public class GUI extends javax.swing.JFrame implements ChangeListener { // Communicator object Communicator communicator = null; /** Creates new form GUI Constructor */ StandardDialFrame standarddialframe = new StandardDialFrame(); public GUI() { initComponents(); createObjects(); communicator.searchForPorts(); } public void stateChanged(ChangeEvent changeevent) { dataset2.setValue(new Integer(slider2.getValue()));

Page 10: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

// int integer1 = slider1.getValue(); char datoTx = 'p'; communicator.writeData(datoTx); communicator.writeData(new Integer(slider1.getValue())); System.out.println(slider1.getValue()); } private void createObjects() { communicator = new Communicator(this); } private void initComponents() { jLabel00 = new javax.swing.JTextArea(); jLabel01 = new javax.swing.JTextArea(); cboxPorts = new javax.swing.JComboBox(); btnConnect = new javax.swing.JButton(); btnDisconnect = new javax.swing.JButton(); btnTransmit = new javax.swing.JButton(); btnLights = new javax.swing.JButton(); // BOTÓN DE PRUEBA btnRadio = new javax.swing.JButton(); txtLog = new javax.swing.JTextArea(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Tablero Automovil"); //getContentPane().setLayout(new FlowLayout()); getContentPane().setLayout(new GridBagLayout()); jScrollPane1 = new javax.swing.JScrollPane(); jTextArea1 = new javax.swing.JTextArea(); jTextArea1.setColumns(10); jTextArea1.setRows(1); jTextArea1.setLineWrap(true); jScrollPane1.setViewportView(jTextArea1);

Page 11: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

GridBagConstraints constraints = new GridBagConstraints(); ///////////////////////////////////////////////////////////////////////////////////////////////// /////////BOTONES DE ESTADO/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////// jLabel00.setColumns(12); jLabel00.setEditable(false); jLabel00.setFont(new java.awt.Font("Cambria", 3, 15)); jLabel00.setText(" Fuel"); jLabel00.setBackground(Color.RED); constraints.gridx = 0; // El área de texto empieza en la columna cero. constraints.gridy = 0; // El área de texto empieza en la fila cero constraints.gridwidth = 1; // El área de texto ocupa dos columnas. constraints.gridheight = 1; // El área de texto ocupa 2 filas. constraints.fill = GridBagConstraints.BOTH; getContentPane().add (jLabel00, constraints); jLabel01.setColumns(12); jLabel01.setEditable(false); jLabel01.setFont(new java.awt.Font("Cambria", 3, 15)); jLabel01.setText(" Battery"); jLabel01.setBackground(Color.RED); constraints.gridx = 1; // El área de texto empieza en la columna cero. constraints.gridy = 0; // El área de texto empieza en la fila cero constraints.gridwidth = 1; // El área de texto ocupa dos columnas. constraints.gridheight = 1; // El área de texto ocupa 2 filas. constraints.fill = GridBagConstraints.BOTH; getContentPane().add (jLabel01, constraints); btnLights.setFont(new java.awt.Font("Cambria", 3, 15)); btnLights.setText(" Lights"); btnLights.setBackground(Color.RED); constraints.gridx = 2; // El área de texto empieza en la columna cero. constraints.gridy = 0; // El área de texto empieza en la fila cero constraints.gridwidth = 1; // El área de texto ocupa dos columnas. constraints.gridheight = 1; // El área de texto ocupa 2 filas. constraints.fill = GridBagConstraints.BOTH; getContentPane().add (btnLights, constraints);

Page 12: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

btnLights.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnLightsActionPerformed(evt); } }); btnRadio.setFont(new java.awt.Font("Cambria", 3, 15)); btnRadio.setText(" Radio"); btnRadio.setBackground(Color.RED); constraints.gridx = 3; // El área de texto empieza en la columna cero. constraints.gridy = 0; // El área de texto empieza en la fila cero constraints.gridwidth = 1; // El área de texto ocupa dos columnas. constraints.gridheight = 1; // El área de texto ocupa 2 filas. constraints.fill = GridBagConstraints.BOTH; getContentPane().add (btnRadio, constraints); btnRadio.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnRadioActionPerformed(evt); } }); ///////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////BOTONES DE CONEXIÓN////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////// btnConnect.setText("Connect"); btnConnect.setFont(new java.awt.Font("Cambria", 1, 15)); btnConnect.setForeground(Color.RED); btnConnect.setBackground(Color.BLACK); btnConnect.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnConnectActionPerformed(evt); } }); constraints.gridx = 5; // El área de texto empieza en la columna cero. constraints.gridy = 9; // El área de texto empieza en la fila cero constraints.gridwidth = 1; // El área de texto ocupa dos columnas. constraints.gridheight = 1; // El área de texto ocupa 2 filas. constraints.fill = GridBagConstraints.BOTH; getContentPane().add (btnConnect, constraints); //getContentPane().add(btnConnect); btnDisconnect.setText("Disconnect");

Page 13: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

btnDisconnect.setForeground(Color.YELLOW); btnDisconnect.setBackground(Color.BLUE); btnDisconnect.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnDisconnectActionPerformed(evt); } }); constraints.gridx = 6; // El área de texto empieza en la columna cero. constraints.gridy = 9; // El área de texto empieza en la fila cero constraints.gridwidth = 1; // El área de texto ocupa dos columnas. constraints.gridheight = 1; // El área de texto ocupa 2 filas. constraints.fill = GridBagConstraints.BOTH; getContentPane().add (btnDisconnect, constraints); constraints.gridx = 7; // El área de texto empieza en la columna cero. constraints.gridy = 9; // El área de texto empieza en la fila cero constraints.gridwidth = 1; // El área de texto ocupa dos columnas. constraints.gridheight = 1; // El área de texto ocupa 2 filas. constraints.fill = GridBagConstraints.BOTH; getContentPane().add (cboxPorts, constraints); /////////////////////////////////////////////////////////////////////////////// ////////////////////////////TACOMETROS GRANDES///////////////////////////////// /////////////////////////////////////////////////////////////////////////////// dataset1 = new DefaultValueDataset(10D); dataset2 = new DefaultValueDataset(50D); DialPlot dialplot = new DialPlot(); dialplot.setView(0.0D, 0.0D, 1.0D, 1.0D); dialplot.setDataset(0, dataset1); dialplot.setDataset(1, dataset2); //StandardDialFrame standarddialframe = new StandardDialFrame(); standarddialframe.setBackgroundPaint(Color.lightGray); standarddialframe.setForegroundPaint(Color.darkGray); dialplot.setDialFrame(standarddialframe); GradientPaint gradientpaint = new GradientPaint(new Point(), new Color(255, 255, 255), new Point(), new Color(170, 170, 220)); DialBackground dialbackground = new DialBackground(gradientpaint); dialbackground.setGradientPaintTransformer(new StandardGradientPaintTransformer(GradientPaintTransformType.VERTICAL)); dialplot.setBackground(dialbackground); DialTextAnnotation dialtextannotation = new DialTextAnnotation("Km/h"); dialtextannotation.setFont(new Font("Dialog", 1, 14));

Page 14: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

dialtextannotation.setRadius(0.69999999999999996D); dialplot.addLayer(dialtextannotation); DialValueIndicator dialvalueindicator = new DialValueIndicator(0); dialvalueindicator.setFont(new Font("Dialog", 0, 10)); dialvalueindicator.setOutlinePaint(Color.darkGray); dialvalueindicator.setRadius(0.59999999999999998D); dialvalueindicator.setAngle(-103D); dialplot.addLayer(dialvalueindicator); DialValueIndicator dialvalueindicator1 = new DialValueIndicator(1); dialvalueindicator1.setFont(new Font("Dialog", 0, 10)); dialvalueindicator1.setOutlinePaint(Color.red); dialvalueindicator1.setRadius(0.59999999999999998D); dialvalueindicator1.setAngle(-77D); dialplot.addLayer(dialvalueindicator1); StandardDialScale standarddialscale = new StandardDialScale(0D, 255D, 270D, -270D, 25D, 4); standarddialscale.setTickRadius(0.88D); standarddialscale.setTickLabelOffset(0.14999999999999999D); standarddialscale.setTickLabelFont(new Font("Dialog", 0, 14)); dialplot.addScale(0, standarddialscale); StandardDialScale standarddialscale1 = new StandardDialScale(0D, 255D, -120D, -300D, 25D, 4); standarddialscale1.setTickRadius(0.5D); standarddialscale1.setTickLabelOffset(0.14999999999999999D); standarddialscale1.setTickLabelFont(new Font("Dialog", 0, 10)); standarddialscale1.setMajorTickPaint(Color.red); standarddialscale1.setMinorTickPaint(Color.red); dialplot.addScale(1, standarddialscale1); dialplot.mapDatasetToScale(1, 1); StandardDialRange standarddialrange = new StandardDialRange(90D, 100D, Color.blue); standarddialrange.setScaleIndex(1); standarddialrange.setInnerRadius(0.58999999999999997D); standarddialrange.setOuterRadius(0.58999999999999997D); dialplot.addLayer(standarddialrange); org.jfree.chart.plot.dial.DialPointer.Pin pin = new org.jfree.chart.plot.dial.DialPointer.Pin(1); pin.setRadius(0.55000000000000004D); dialplot.addPointer(pin); org.jfree.chart.plot.dial.DialPointer.Pointer pointer = new org.jfree.chart.plot.dial.DialPointer.Pointer(0); dialplot.addPointer(pointer); DialCap dialcap = new DialCap(); dialcap.setRadius(0.10000000000000001D); dialplot.setCap(dialcap);

Page 15: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

JFreeChart jfreechart = new JFreeChart(dialplot); jfreechart.setTitle("VELOCIDAD"); ChartPanel chartpanel = new ChartPanel(jfreechart); chartpanel.setPreferredSize(new Dimension(300, 300)); dataset3 = new DefaultValueDataset(10D); dataset4 = new DefaultValueDataset(50D); DialPlot dialplot2 = new DialPlot(); dialplot2.setView(0.0D, 0.0D, 1.0D, 1.0D); dialplot2.setDataset(0, dataset3); dialplot2.setDataset(1, dataset4); StandardDialFrame standarddialframe2 = new StandardDialFrame(); standarddialframe2.setBackgroundPaint(Color.lightGray); standarddialframe2.setForegroundPaint(Color.darkGray); dialplot2.setDialFrame(standarddialframe2); GradientPaint gradientpaint2 = new GradientPaint(new Point(), new Color(255, 255, 255), new Point(), new Color(170, 170, 220)); DialBackground dialbackground2 = new DialBackground(gradientpaint); dialbackground2.setGradientPaintTransformer(new StandardGradientPaintTransformer(GradientPaintTransformType.VERTICAL)); dialplot2.setBackground(dialbackground2); DialTextAnnotation dialtextannotation2 = new DialTextAnnotation("REVOLUCIONES"); dialtextannotation2.setFont(new Font("Dialog", 1, 14)); dialtextannotation2.setRadius(0.69999999999999996D); dialplot2.addLayer(dialtextannotation2); DialValueIndicator dialvalueindicator2 = new DialValueIndicator(0); dialvalueindicator2.setFont(new Font("Dialog", 0, 10)); dialvalueindicator2.setOutlinePaint(Color.darkGray); dialvalueindicator2.setRadius(0.59999999999999998D); dialvalueindicator2.setAngle(-103D); dialplot2.addLayer(dialvalueindicator2); DialValueIndicator dialvalueindicator3 = new DialValueIndicator(1); dialvalueindicator3.setFont(new Font("Dialog", 0, 10)); dialvalueindicator3.setOutlinePaint(Color.red); dialvalueindicator3.setRadius(0.59999999999999998D); dialvalueindicator3.setAngle(-77D); dialplot2.addLayer(dialvalueindicator1); StandardDialScale standarddialscale2 = new StandardDialScale(0D, 255D, -120D, -300D, 15D, 4); standarddialscale2.setTickRadius(0.88D); standarddialscale2.setTickLabelOffset(0.14999999999999999D); standarddialscale2.setTickLabelFont(new Font("Dialog", 0, 14));

Page 16: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

dialplot2.addScale(0, standarddialscale2); StandardDialScale standarddialscale3 = new StandardDialScale(0D, 100D, -120D, -300D, 10D, 4); standarddialscale3.setTickRadius(0.5D); standarddialscale3.setTickLabelOffset(0.14999999999999999D); standarddialscale3.setTickLabelFont(new Font("Dialog", 0, 10)); standarddialscale3.setMajorTickPaint(Color.red); standarddialscale3.setMinorTickPaint(Color.red); dialplot2.addScale(1, standarddialscale3); dialplot2.mapDatasetToScale(1, 1); StandardDialRange standarddialrange2 = new StandardDialRange(90D, 100D, Color.blue); standarddialrange2.setScaleIndex(1); standarddialrange2.setInnerRadius(0.58999999999999997D); standarddialrange2.setOuterRadius(0.58999999999999997D); dialplot2.addLayer(standarddialrange2); org.jfree.chart.plot.dial.DialPointer.Pin pin2 = new org.jfree.chart.plot.dial.DialPointer.Pin(1); pin2.setRadius(0.55000000000000004D); dialplot2.addPointer(pin2); org.jfree.chart.plot.dial.DialPointer.Pointer pointer2 = new org.jfree.chart.plot.dial.DialPointer.Pointer(0); dialplot2.addPointer(pointer2); DialCap dialcap2 = new DialCap(); dialcap2.setRadius(0.10000000000000001D); dialplot2.setCap(dialcap2); JFreeChart jfreechart2 = new JFreeChart(dialplot2); jfreechart2.setTitle("RPMs"); ChartPanel chartpanel2 = new ChartPanel(jfreechart2); chartpanel2.setPreferredSize(new Dimension(300, 300)); ///////////////IMPRESIONES///////////////////////////////////////////////////////////// constraints.gridx = 6; // El área de texto empieza en la columna cero. constraints.gridy = 3; // El área de texto empieza en la fila cero constraints.gridwidth = 3; // El área de texto ocupa dos columnas. constraints.gridheight = 3; // El área de texto ocupa 2 filas. constraints.weightx = 1.0; constraints.weighty = 1.0; constraints.fill = GridBagConstraints.BOTH; getContentPane().add (chartpanel, constraints); constraints.weightx = 0.0; constraints.weighty = 0.0;

Page 17: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

constraints.gridx = 4; // El área de texto empieza en la columna cero. constraints.gridy = 3; // El área de texto empieza en la fila cero constraints.gridwidth = 2; // El área de texto ocupa dos columnas. constraints.gridheight = 2; // El área de texto ocupa 2 filas. constraints.weightx = 1.0; constraints.weighty = 1.0; constraints.fill = GridBagConstraints.BOTH; getContentPane().add (chartpanel2, constraints); constraints.weightx = 0.0; constraints.weighty = 0.0; slider1 = new JSlider(0, 9); slider1.setMajorTickSpacing(1); slider1.setPaintTicks(true); slider1.setPaintLabels(true); slider1.addChangeListener(this); constraints.gridx = 0; // El área de texto empieza en la columna cero. constraints.gridy = 4; // El área de texto empieza en la fila cero constraints.gridwidth = 2; // El área de texto ocupa dos columnas. constraints.gridheight = 2; // El área de texto ocupa 2 filas. constraints.weightx = 1.0; constraints.weighty = 1.0; constraints.fill = GridBagConstraints.BOTH; getContentPane().add (slider1, constraints); constraints.weightx = 0.0; constraints.weighty = 0.0; slider2 = new JSlider(0, 255); slider2.setMajorTickSpacing(51); slider2.setPaintTicks(true); slider2.setPaintLabels(true); slider2.addChangeListener(this); constraints.gridx = 0; // El área de texto empieza en la columna cero. constraints.gridy = 6; // El área de texto empieza en la fila cero constraints.gridwidth = 2; // El área de texto ocupa dos columnas. constraints.gridheight = 2; // El área de texto ocupa 2 filas. constraints.weightx = 1.0; constraints.weighty = 1.0; constraints.fill = GridBagConstraints.BOTH; getContentPane().add (slider2, constraints); constraints.weightx = 0.0; constraints.weighty = 0.0; pack();

Page 18: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

} private void btnConnectActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnConnectActionPerformed // aquí se pone la función que va a tener el botón CONNECT communicator.connect(); btnConnect.setBackground(Color.WHITE); if (communicator.getConnected() == true) { if (communicator.initIOStream() == true) { communicator.initListener(); } } }// GEN-LAST:event_btnConnectActionPerformed private void btnDisconnectActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnDisconnectActionPerformed communicator.disconnect(); txtLog.setText("Disconnected"); }// GEN-LAST:event_btnDisconnectActionPerformed private void btnTransmitActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnDisconnectActionPerformed String dTx = jTextArea1.getText(); int datoTx = (int) Double.parseDouble(dTx);// PREGUNTAR communicator.writeData(datoTx); }// GEN-LAST:event_btnDisconnectActionPerformed private void btnLightsActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnDisconnectActionPerformed char datoTx = 'h';// PREGUNTAR communicator.writeData(datoTx); } private void btnRadioActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnDisconnectActionPerformed char datoTx = 'l';// PREGUNTAR communicator.writeData(MainSerial.dataToSend); communicator.writeData(datoTx); }

Page 19: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

// Variables declaration - do not modify//GEN-BEGIN:variables public javax.swing.JButton btnConnect; public javax.swing.JButton btnLights; public javax.swing.JButton btnDisconnect; public javax.swing.JButton btnTransmit; public javax.swing.JButton btnFuel;///BOTON DE PRUEBA public javax.swing.JButton btnRadio; public javax.swing.JComboBox cboxPorts; public static javax.swing.JTextArea jLabel00; public static javax.swing.JTextArea jLabel01; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextArea jTextArea1; public javax.swing.JTextArea txtLog; DefaultValueDataset dataset1; DefaultValueDataset dataset2; DefaultValueDataset dataset3; DefaultValueDataset dataset4; DefaultValueDataset dataset5; DefaultValueDataset dataset6; DefaultValueDataset dataset7; DefaultValueDataset dataset8; JSlider slider1; JSlider slider2; // End of variables declaration//GEN-END:variables }

Page 20: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

COMMUNICATOR

import gnu.io.*; import java.awt.Color; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.HashMap; import java.util.TooManyListenersException; // This class should also implement the SerialPortEventListener class. // this is a class in RXTX and is required in order to receive incoming data public class Communicator implements SerialPortEventListener { // passed from main GUI GUI window = null; // for containing the ports that will be found private Enumeration ports = null; // map the port names to CommPortIdentifiers private HashMap portMap = new HashMap(); // this is the object that contains the opened port private CommPortIdentifier selectedPortIdentifier = null; private SerialPort serialPort = null; // input and output streams for sending and receiving data private InputStream input = null; private OutputStream output = null; // just a boolean flag that i use for enabling // and disabling buttons depending on whether the program // is connected to a serial port or not private boolean bConnected = false; // the timeout value for connecting with the port final static int TIMEOUT = 2000; // some ascii values for for certain things final static int SPACE_ASCII = 32; final static int DASH_ASCII = 45; final static int NEW_LINE_ASCII = 10; // a string for recording what goes on in the program // this string is written to the GUI String logText = "";

Page 21: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

int War = 0; public Communicator(GUI window) { this.window = window; } // search for all the serial ports // pre: none // post: adds all the found ports to a combo box on the GUI public void searchForPorts() { ports = CommPortIdentifier.getPortIdentifiers(); while (ports.hasMoreElements()) { CommPortIdentifier curPort = (CommPortIdentifier) ports .nextElement(); // get only serial ports available if (curPort.getPortType() == CommPortIdentifier.PORT_SERIAL) { window.cboxPorts.addItem(curPort.getName()); portMap.put(curPort.getName(), curPort); System.out.println(curPort.getName()); } } } // connect to the selected port in the combo box // pre: ports are already found by using the searchForPorts method // post: the connected comm port is stored in commPort, otherwise, // an exception is generated public void connect() { String selectedPort = (String) window.cboxPorts.getSelectedItem(); selectedPortIdentifier = (CommPortIdentifier) portMap.get(selectedPort); CommPort commPort = null; try { // the method below returns an object of type CommPort commPort = selectedPortIdentifier.open("SerialControlPanel", TIMEOUT); // the CommPort object can be casted to a SerialPort object serialPort = (SerialPort) commPort; // for controlling GUI elements setConnected(true);

Page 22: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

// logging logText = selectedPort + " opened successfully."; window.txtLog.setForeground(Color.black); window.txtLog.append(logText + "\n"); // CODE ON SETTING BAUD RATE ETC OMITTED // XBEE PAIR ASSUMED TO HAVE SAME SETTINGS ALREADY // enables the controls on the GUI if a successful connection is // made // window.keybindingController.toggleControls(); } catch (PortInUseException e) { logText = selectedPort + " is in use. (" + e.toString() + ")"; window.txtLog.setForeground(Color.RED); window.txtLog.append(logText + "\n"); } catch (Exception e) { logText = "Failed to open " + selectedPort + "(" + e.toString() + ")"; window.txtLog.append(logText + "\n"); window.txtLog.setForeground(Color.RED); } } // open the input and output streams // pre: an open port // post: initialized intput and output streams for use to communicate data public boolean initIOStream() { // return value for whather opening the streams is successful or not boolean successful = false; try { // input = serialPort.getInputStream(); output = serialPort.getOutputStream(); writeData(0); // , 0); successful = true; return successful; } catch (IOException e) { logText = "I/O Streams failed to open. (" + e.toString() + ")";

Page 23: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

window.txtLog.setForeground(Color.red); window.txtLog.append(logText + "\n"); return successful; } } // starts the event listener that knows whenever data is available to be // read // pre: an open serial port // post: an event listener for the serial port that knows when data is // recieved public void initListener() { try { serialPort.addEventListener(this); serialPort.notifyOnDataAvailable(true); } catch (TooManyListenersException e) { logText = "Too many listeners. (" + e.toString() + ")"; window.txtLog.setForeground(Color.red); window.txtLog.append(logText + "\n"); } } // disconnect the serial port // pre: an open serial port // post: clsoed serial port public void disconnect() { // close the serial port try { writeData(98); // , 0); serialPort.removeEventListener(); serialPort.close(); input.close(); output.close(); setConnected(false); // window.keybindingController.toggleControls(); logText = "Disconnected."; window.txtLog.setForeground(Color.red); window.txtLog.append(logText + "\n"); } catch (Exception e) { logText = "Failed to close " + serialPort.getName() + "(" + e.toString() + ")"; window.txtLog.setForeground(Color.red); window.txtLog.append(logText + "\n"); } }

Page 24: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

final public boolean getConnected() { return bConnected; } public void setConnected(boolean bConnected) { this.bConnected = bConnected; } // what happens when data is received // pre: serial event is triggered // post: processing on the data it reads public void serialEvent(SerialPortEvent evt) { if (evt.getEventType() == SerialPortEvent.DATA_AVAILABLE) { try { int bandera = 0; int LecturaChar = 1; int LecturaDato = 0; //////////////////////////Lectura del char////////////////////// if(LecturaChar==1) { char singleData = (char) input.read(); if ( singleData == 'a' ) { bandera =1; LecturaChar=0; LecturaDato=1; } if ( singleData == 'b' ) { bandera =2; LecturaChar=0; LecturaDato=1; } if ( singleData == 'c' ) { bandera =3; GUI.jLabel00.setBackground(Color.white);

Page 25: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

LecturaChar=0; LecturaDato=1; } if ( singleData == 'd' ) { bandera =4; GUI.jLabel00.setBackground(Color.red); LecturaChar=0; LecturaDato=1; } if ( singleData == 'e' ) { bandera =5; GUI.jLabel01.setBackground(Color.white); LecturaChar=0; LecturaDato=1; } if ( singleData == 'f' ) { bandera =6; GUI.jLabel01.setBackground(Color.red); LecturaChar=0; LecturaDato=1; } } ////////////////////////Lectura del entero////////////////////// if(LecturaDato==1) { int singleData = (int) input.read(); if (bandera==1) { window.dataset1.setValue(singleData); War =singleData; bandera=0;

Page 26: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

LecturaChar=1; LecturaDato=0; } if (bandera==2) { window.dataset3.setValue(singleData); bandera=0; LecturaChar=1; LecturaDato=0; } if (bandera==3) { window.dataset5.setValue(singleData); bandera=0; LecturaChar=1; LecturaDato=0; } } } catch (Exception e) { logText = "Failed to read data. (" + e.toString() + ")"; window.txtLog.setForeground(Color.red); window.txtLog.append(logText + "\n"); } } } // method that can be called to send data // pre: open serial port // post: data sent to the other device public void writeData(int data) { try { output.write(data); System.out.println(data); output.flush(); } catch (Exception e) { logText = "Failed to write data. (" + e.toString() + ")"; window.txtLog.setForeground(Color.red); window.txtLog.append(logText + "\n");

Page 27: Interfaces Parcial Uno

INTERFACES Y EQUIPOS PERIFÉRICOS

Interfaz Gráfica ENERO – MAYO 2011

(Lunes, Miércoles Viernes, 12:00 am – 13:00 pm)

Luis Alberto Hernández Córdova A00803664, José Luis Barragán García A01099012, Iliani Carro

Pérez A01096221

ITESM Campus Puebla

} } }