Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
Problemas con el puerto Serie
Enviado por lukax3 el día 27 de abril de 2005
Hola a todos!
estoy intentando hacer una aplicacion JAVA para leer o escribir desde el puerto serie, y no consigo probar el programa de ejemplo de Sun SimpleRead.java. Puedo compilar y ejecutar, pero al ejecutarlo no pasa nada. Éste es mi código:
public void run() {
try {
System.out.println("Esperando...");
Thread.sleep(200000);
} catch (InterruptedException e) {System.out.println("Excepcion en el RUN: Interrupted");
e.printStackTrace();}
}
public void serialEvent(SerialPortEvent event) {
switch(event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE:
byte[] readBuffer = new byte[20];
try {
while (inputStream.available() > 0)
{
int numBytes = inputStream.read(readBuffer);
}
System.out.print(new String(readBuffer));
} catch (IOException e) {
System.out.println("Excepcion en el serialEvent: IO");
e.printStackTrace();}
break;
}
}
}
No me salta ninguna excepción ni nada, asi que si alguien puede ayudarme se lo agradecería mucho,
un saludo!
Yo tengo el mismo problema. Hay varios programas de demo, y tanto sobre XP como sobre linux SUSE, me dice que no encuentra el nombre de puerto cuando arranco un programa llamado BlackBox del mismo paquete de software.
Con el SerialDemo me da una excepciop si le paso un fichero de conmfiguracion con el nombre de los dos com's.
¡Ah! Por supuesto con XP son COM1 y COM2, y con SUSE son /dev/ttyx.
Al igual que tu yo soy principiante en java , sin embargo compile el codigo que tienes tu sin ningun problemas y al ejecutarlo funciona . Aun no le conecto ningun dispositivo , pro al ejecutarlo dice iniciando while ... y luego se queda esperando _ los datos . En internet encontre este codigo para la comunicacion con un dispositivo , haber si te sirve :
public void serialEvent(SerialPortEvent event) {
switch(event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE:
byte[] readBuffer = new byte[10];
Soy aun novato en java, al principio no pude hacer correr ejemplos del manejo de la libreria debido a que hacia correr los programas con "make" y no con "run", talvez ese tambien sea el problema que tuvieron. Ahora probe el codigo de gustavo311 para un dispositivo, pero no logro recibir nada. Ya configuré los parametros segun lo que se comunica mi dispositivo , pero no recibo nada.
Este se comunica a 600bps 7 bit de datos, 2 de stop, sin paridad. Solo sele envia un caracter y este deberia responder.
Le estaria muy agradecido si alguien me puede dar una mano con ello
Enviado por valentinaroca el día 29 de mayo de 2005
hola, ese codigo lo vi en una pagina y ami si me funciona, pero por si, buscalo y descargalo nuevamente, la pagina es http://www.itapizaco.edu.mx/paginas/JavaTut/froufe...
este escribe y con este lees http://www.itapizaco.edu.mx/paginas/JavaTut/froufe...
recuerda que son dos computadores conectados por el puerto serial, y debes de corre java1901 en un pc y java1902 en el otro, me explico corres java1902 que lee, y luego corres java1901 que envia en el otro pc y listo.
Yo uni las dos clases en una sola te mando mi codigo a ver si lo puedes usar, solo ten en cuenta que yo manejo mi codigo desde un entorno swing pero la parte practica es parecida ...
Si no te funciona puedes escribirme a mi correo y con gusto te mando el codigo completo valentinaroca@hotmail.com Chaolin
// Añadimos un receptor de eventos para estar informados de lo
// que suceda en el puerto
try {
puertoSerie.addEventListener( this );
} catch( TooManyListenersException e ) {}
// Hacemos que se nos notifique cuando haya datos disponibles
// para lectura en el buffer de la puerta
puertoSerie.notifyOnDataAvailable( true );
// Se fijan los parámetros de comunicación del puerto
try {
puertoSerie.setSerialPortParams( velocidad,
numero_bits,
intbits_parada,
paridad);
} catch( UnsupportedCommOperationException e ) {}
// Se crea y lanza el thread que se va a encargar de quedarse
// esperando en la puerta a que haya datos disponibles
tLectura = new Thread( this );
tLectura.start();
}
}
}
}
// metodo que recibe el mensaje y lo envia
void envia(String mensaje1){
try {
salida.write( mensaje.getBytes() );
} catch( IOException e ) {}
lo que pasa es que estoy tratando de comunicarme por el puero serial y me sale el siguente error
Error loading SolarisSerial: java.lang.UnsatisfiedLinkError: no SolarisSerialPar
allel in java.library.path
Caught java.lang.UnsatisfiedLinkError: readRegistrySerial while loading driver c
om.sun.comm.SolarisDriver
Error loading SolarisSerial: java.lang.UnsatisfiedLinkError: no SolarisSerialPar
allel in java.library.path
Caught java.lang.UnsatisfiedLinkError: readRegistrySerial while loading driver c
om.sun.comm.SolarisDriver
Press any key to continue...
si alguno me puede resolver la inquietud le estaria grandemende agradesido
Enviado por danius el día 23 de septiembre de 2005
Buenas todos.
Con respecto a lo del código para leer datos del puerto serie, he conseguido que me lea, pero el problema ahora es que lo que recibo son una secuencia de caracteres como el simbolo del euro,cuadraditos, etc etc.
No se porque pasa esto, pero en el programa lo que se va leyendo se mete en un array de byte y supongo que eso habra que pasarlo a algun otro fomato o algo de eso ¿no?.
Os agradecería mucho que me echarais una mano.
Gracias de antemano. Un saludo
Hola yo ya hice mi aplicación, pero resulta que no se como instalar la libreria comm a java, alguno de ustedes sabe que por favor me pueda guiar, mi correo es paanfipo@yahoo.es
Muchas gracias
Enviado por alejandra el día 18 de octubre de 2005
hola paula, me gustaria saber si pudiste instalar la libreria comm, pues al igual que tu yo tambien tengo prblemas con ella, ojala me pudieras ayudar...
Gracias
Enviado por Gonzalo Odiard el día 26 de octubre de 2005
Esto lo probé en Linux.
Para instalar el manejo de java desde el puerto serial hay que hacer lo siguiente:
1) Copiar los .so que vienen con el paquete comm (libLinuxSerialParalell.so y libLinuxSerialParalell_g.so) en jre/lib/i386/ (relativo a la instalacion de java)
2) Copiar el archivo comm.jar en jre/lib/ext/ (relativo a la instalacion de java)
3) Copiar el archivo javax.comm.properties adjunto en jre/lib/ (relativo a la instalacion de java)
4) Copiar los .so adjuntos en /usr/lib (si, los mismos archivos van en dos directorios)
5) Darle permisos al puerto. (para poder leer o escribir)