Saludos a todos, mi duda es la siguiente:
Tengo una aplicacion en JAVA que lee desde el puerto serial el peso del un vehiculo proporcionado por una bascula la cual posee un indicador digital del peso, y de dicho indicador sale un cable que se comunica con la PC a treves de puerto serial.
La mayoria de la mayoria de las veces lee bien, incluso dura horas trabajando excelentemente..Peero aveces no lee el puerto es como si no supiera que esta ahy, cuando surge este error, cierro la aplicacion y la vulevo abrir y nada, la solucion para que siga leyendo el puerto ha sido REINICIAR la pc.
No tengo ni la mas minima idea de este error pues no sale seguido , si alguien me pudiera ofrecer alguna sugerencia gracias..
utilizo la libreira Giovynet y el sistema operativo es Windows.
import giovynet.nativelink.SerialPort;
import giovynet.serial.Baud;
import giovynet.serial.Com;
import giovynet.serial.Parameters;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class PuertoIngreso {
//variables que uso para interacturar con el Puerto
List<String> listar;
SerialPort puerto = new SerialPort();
Com com1;
//esta mascara la uso porque algunas veces lee estos caracteres raros de la bascula y se lo puse para cuando los lea los
//convierta a ""
Pattern p=Pattern.compile("[ÉÞþÓó$$&Â(æA`à@ÿÌ]");
public PuertoIngreso() {
try {
listar = puerto.getFreeSerialPort();
System.out.println(listar);
if (listar!=null&&listar.size()>0) {
for (String free : listar) {
System.out.println("Free port: "+free);
}
}//if
Parameters set = new Parameters();
set.setPort("COM1");
set.setBaudRate(Baud._2400);
set.getByteSize();
com1 = new Com(set);
}//try
catch (Exception e)
{
// ESTE ES LA EXEPCION QUE SE LANZA CUANDO NO CONSIGUE EL PUERTO
System.out.println("Exception 1" +e +" \n "+ e.getCause() + "\n" +e.getLocalizedMessage());
JOptionPane.showMessageDialog(null, "No se Consigue el puerto", "ERROR", JOptionPane.ERROR_MESSAGE);
//eset codigo lo puse en la catch para que al lanzar la excepcion cierre el puerto
try{
com1.close();
}catch(Exception es)
{
System.out.println(es);
}
}//catch
//este for lo puse porq con las practica vi que requeria aproximadamnete de este numero de repeticiones
//para leer el peso
for(int a=0 ; a<=14; a++){ try
{
{
caracter = com1.receiveSingleString();
recibido += caracter;
Matcher m=p.matcher(recibido);
peso=m.replaceAll("");
}
}
catch(Exception es)
{
System.out.println("Exception 2 " + es);
//eset codigo lo puse en la catch para que al lanzar la excepcion cierre el puerto
try{
com1.close();
}catch(Exception est)
{
System.out.println(est);
}
}
}
//por ultimo al irse a la ventana que mostrara los pesos cierro el puerto para que no lo //deje abierto
try{
com1.close();
}catch(Exception es)
{
System.out.println(es);
}
MiVentana ventana=new MiVentana(parametros);
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CL OSE);
ventana.setSize(1100, 600);
ventana.setVisible(true);
}
}
GRACIAS POR SU AYUDA