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
este es el metodo tiempo_inicio()
este es el metodo fin_conteo()
estos son los metodos de los buttons para comenzar y detener el conteo
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;}
}
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);
}
}
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
0