Interfaces Parcial Uno
-
Upload
luis-hernandez-c -
Category
Documents
-
view
48 -
download
2
Transcript of 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
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.
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');
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');
}
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){
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{
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);
}
}
}
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"); } }); } }
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()));
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);
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);
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");
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));
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);
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));
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;
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();
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); }
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 }
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 = "";
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);
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() + ")";
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"); } }
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);
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;
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");
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
} } }