Netbeans - Recibiendo datos de Arduino para llenar tabla en Netbeans

 
Vista:
sin imagen de perfil
Val: 4
Ha aumentado su posición en 5 puestos en Netbeans (en relación al último mes)
Gráfica de Netbeans

Recibiendo datos de Arduino para llenar tabla en Netbeans

Publicado por cesar herbas (3 intervenciones) el 15/10/2016 17:11:04
hola...soy nuevo en este foro,asi como tambien en java y es por eso que recurro a uds. porque no llego a resolver un pequeno problema.
he stado haciendo un programa en netbeans que me reciba datos desde arduino por el puerto serial(lo que hace arduino es simplemente contar objetos y mandar ese nuemero)hasta ahi todo va bien...y lo que yo quiero hacer es crear una tabla donde se vaya mostrando el dato de la cantidad de objetos contados durante periodos de tiempo ya sean segundos, minutos u horas.
estos periodos de tiempo lo ingreso por medio de jTextField...ahora el problema que tengo es que no logro poder limitar estos periodos de tiempo para que el llenado se realice de forma automatica una vez iniciado el conteo por medio de un button.
ejemplo : Horario Nro de Objetos
10:30:15 - 10:31:15 10
10:31:16 - 10:32:16 7
Adjunto el codigo que lo encontre en la web, a la cual le hecho algunas modificaciones
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import com.panamahitek.PanamaHitek_Arduino;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;
 
 
public class Window extends javax.swing.JFrame {
 
    DefaultTableModel Modelo;
    PanamaHitek_Arduino Arduino = new PanamaHitek_Arduino();
    int h,m,s;
    String h_ini,m_ini,s_ini;
    String hora,minuto,segundo;
    int numVehiculos=0;
    boolean es_h=false,es_m=false,es_s=false;
    String per_hora,per_min,per_seg;
    int p_h,p_m,p_s;
 
    SerialPortEventListener evento = new SerialPortEventListener() {
        @Override
        public void serialEvent(SerialPortEvent spe)
        {
            if(Arduino.isMessageAvailable())
            {
 
                numVehiculos=Integer.parseInt(Arduino.printMessage());
                System.out.println("Nro Vehiculos:"+numVehiculos);
               if(numVehiculos==1)
               {
                   tiempo_inicio(); //guardamo la hora de inicio cada vez que se reinicie el conteo
               }
                hora = Calendario.get(Calendar.HOUR_OF_DAY) + "";
                minuto = Calendario.get(Calendar.MINUTE) + "";
                segundo = Calendario.get(Calendar.SECOND) + "";
                Calendario = Calendar.getInstance();
                int j=h+p_h;
                    if(j>=24){j=j-24;}
                int k=m+p_m;
                    if(k>=60){k=k-60;}
                int l=s+p_s;
                    if(l>=60){l=l-60;}
                    if(es_h){
                        if(Integer.parseInt(hora)>=j&&Integer.parseInt(minuto)>=k&&Integer.parseInt(segundo)<=l){
                            fin_conteo();
                        }
                    }
                    if(es_m){
                        if(Integer.parseInt(minuto)>=k&&Integer.parseInt(segundo)<=l){
                            fin_conteo();
                        }
                    }
                    if(es_s){
                        if(Integer.parseInt(segundo)>=l){
                            fin_conteo();
                        }
                    }
            }
        }
    };
public Window() {
        initComponents();
        Modelo=(DefaultTableModel) jTable1.getModel();
        try {
            Arduino.arduinoRXTX("COM7", 9600, evento);
        } catch (Exception ex) {
            Logger.getLogger(Window.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

este es el metodo tiempo_inicio()
1
2
3
4
5
6
7
8
9
10
11
12
13
public void tiempo_inicio()
    {
        h_ini = Calendario.get(Calendar.HOUR_OF_DAY) + "";
        h=Integer.parseInt(h_ini);
        m_ini = Calendario.get(Calendar.MINUTE) + "";
        m=Integer.parseInt(m_ini);
        s_ini = Calendario.get(Calendar.SECOND) + "";
        s=Integer.parseInt(s_ini);
 
          if (h<10) { h_ini = "0" + h_ini;}
        if (m<10) {m_ini = "0" + m_ini;}
        if (s<10) { s_ini = "0" + s_ini;}
    }
este es el metodo fin_conteo()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void fin_conteo()
    {
        String output="";
        if (Integer.parseInt(hora) < 10) {hora= "0" + hora;}
        if (Integer.parseInt(minuto) < 10) {minuto= "0" + minuto;}
        if (Integer.parseInt(segundo) < 10) {segundo= "0" + segundo;}
        output =h_ini+" : "+m_ini+" : "+s_ini+" - "+hora+" : "+minuto+" : "+segundo;
        Modelo.addRow(new Object[]{output,numVehiculos});
        try {
            Arduino.sendData("0");//mando '0' para reinciar el conteo en arduino
           Arduino.sendData("1");//mando '1' para que arduino comienze a mandar nuevamente
 
        } catch (Exception ex) {
            Logger.getLogger(Window.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
estos son los metodos de los buttons para comenzar y detener el conteo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
        try {
            Arduino.sendData("1");
            per_hora=jTextField1.getText();//es el periodo en hora que durara el conteo
            per_min=jTextField2.getText();//es el periodo en minuto que durara el conteo
            per_seg=jTextField3.getText();//es el periodo en segundo que durara el conteo
 
            if(jTextField1.getText().length()!=0){
                p_h=Integer.parseInt(per_hora);
                es_h=true;//para confirmar que se contara en horas
            }
            else{
                p_h=0;//si no se ingresado nada en el
            }
            if(jTextField2.getText().length()!=0){
                p_m=Integer.parseInt(per_min);
                es_m=true;
            }
            else{
                p_m=0;
            }
            if(jTextField3.getText().length()!=0){
                p_s=Integer.parseInt(per_seg);
                es_s=true;
            }
            else{
                p_s=0;
            }
        } catch (Exception ex) {
            Logger.getLogger(Window.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
        try {
            Arduino.sendData("0");
            es_h=false;
            es_m=false;
            es_s=false;
        } catch (Exception ex) {
            Logger.getLogger(Window.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 4
Ha aumentado su posición en 5 puestos en Netbeans (en relación al último mes)
Gráfica de Netbeans

Recibiendo datos de Arduino para llenar tabla en Netbeans

Publicado por cesar (3 intervenciones) el 18/10/2016 16:14:01
uff mas de 25 visitas y ni una ayudadita
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar