domingo, 11 de noviembre de 2007

Instalacion de Java Communications API en Linux

javacomm API sirve para comunicarse con dispositivos externos a través del puerto paralelo o serial desde aplicaciones Java, esta disponible para Windows, Linux, Solarias. Estos son los pasos para instalarla y usarla en Linux:
Primero hay que copiar libLinuxSerialParallel.so a /usr/lib
Ahora hay que poner el comm.jar en nuestro classpath, si estamos usando algún IDE lo agregamos en las librerías que usa el proyecto o si no simplemente:
export CLASSPATH=$CLASSPATH:commapi/jar/comm
Por ultimo copiamos el archivo javax.comm.properties a: JDK/jre/lib. Con esto quedaría instalada la API para poderla usar, podemos probar con este ejemplo, que detecta los puertos disponibles:
import javax.comm.*;
import java.util.Enumeration;
public class Main {
public static void main(String args[]) {
Enumeration ports =
CommPortIdentifier.getPortIdentifiers();
while (ports.hasMoreElements()) {
CommPortIdentifier port =
(CommPortIdentifier)ports.nextElement();
String type;
switch (port.getPortType()) {
case CommPortIdentifier.PORT_PARALLEL:
type = "Paralelo"; //Se ejecuta si el puerto es paralelo
break;
case CommPortIdentifier.PORT_SERIAL:
type = "Serial"; //Se ejecuta si el puerto es serial
break;
default:
type = "Desconocido/Error"; //No deberia de suceder o el puerto esta dañado
break;
}
System.out.println("Nombre del puerto: "+port.getName() + " - " + type);
}
}
}

Fuente: http://java.sun.com/products/javacomm/
http://tuxtor.shekalug.org/?p=75

18 comentarios:

Anónimo dijo...

Gracias por esto, me sirvio mucho, pero te falto que para que el API funcione bien debes copiar el archivo javax.comm.properties a "JDK"/jre/lib y a "JDK"/lib , solo mencionaste una ruta, y a mi en Netbeans asi no me funciona (copiando a las dos rutas se soluciona) bueno gracias de nuevo

Juls dijo...

Que bueno que te sirvió!!!

Anónimo dijo...

hola he seguido los pasos al pie de la letra y aun continuo con el mismo error "Error loading win32com: java.lang.UnsatisfiedLinkError: no win32com in java.library.path" probando con este ejemplo que pones, si me puedes ayudar
gracias de ante mano

Juls dijo...

Pues fijate que estas instrucciones son para instalarlo en GNU/Linux.

Anónimo dijo...

Si se que eso es en GNU/Linux pero en otros sitios he encontrado como hacerlo en win xp, me gustaria saber si me puede ayudar como hacerlo en ese sistema, pq los necesito en los 2, si me puede ayudar ....

Anónimo dijo...

para hacerlo en windows ws muy sencillo, lo puedes hacer a traves del Turbo C, o por VB6, al no ser que lo nececites en java, ahy si se complican las cosas.

Anónimo dijo...

maestro gracias por el post esta excelente

Anónimo dijo...

Bueno despues de descomprimir comm3.0_u1_linux.zip, utilice los ficheros

/commapi/docs/javax.comm.properties
/commapi/jar/comm.jar
/commapi/lib/libLinuxSerialParallel.so

el primero lo copie en /jre/lib/
el segundo lo copie en /jre/lib/ext/

y el tercero lo copie a /usr/lib/

ademas para lograr utilizar un conversor usb-rs232 me di cuenta que en el fichero javax.comm.properties aparece:


serpath0 = /dev/ttySO
serpath1 = /dev/ttyS1

y agregue

serpath = /dev/ttyUSB0

Gabriel dijo...

Exelente
Tenes posteado algun ejemplo de lectura de datos del puerto paralelo con esta api

Juls dijo...

Solamente este ejemplo:
http://blogdejuls.blogspot.com/2007/11/controlar-leds-desde-el-puerto-paralelo.html

Anónimo dijo...

hola amigo, una duda sobre un comentario que publicaste, y es el hecho de que dices que esto es solo para linux, bueno yo en lo particular utilizo mucho linux, y windows ya casi no, solo lo ocupo para cosas ociosas , bueno, no me queda en claro el por que solo de linux, no se supone que la maquina virtual es la que ejecuta el codigo y no el sistema operativo ensi???

Juls dijo...

Si amigo, tenes razón el lo que decís sobre la maquina virtual, lo que sucede es que el manejo del puerto en sí, es completamente distinto en GNU/Linux que en M$ Windows, por ejemplo acá se utiliza la librería libLinuxSerialParallel.so mientras que en win tendrías que utilizar el respectivo dll

Anónimo dijo...

bueno amigo la verdad si te entiendo, ahora esa libreria que mencionas ya viene en integrado en java o tengo que añadir algo mas o no??

es que ahorita estoy viendo inteligencia artificial y me parece que vamos a armar un peke vehiculo el cual lo vamos a manejar desde la computadora, se que suena muy feo pero aun no tengo mucha experiencia en ello, porfas hechame la mano

Juls dijo...

Esa es la librería que tenes que bajar de:
http://java.sun.com/products/javacomm/

Anónimo dijo...

recomiendo la giovinet serial port api
funciona para windows y linux

y no hay necesidad de incluir el event listener sino solo poner

com1.gettostring('',intervalo de tiempo);

dale si no es mas sencillo y la instalada no va

saludos

Anónimo dijo...

Hola he seguido los pasos y solo he podido copiar el archivo libLinuxSerialParallel.so a la ruta que tu indicas, pero los otros archivos no, he buscado pero la direccion que tu das en tu publicacion no esta en mi equipo.
(JDK/jre/lib.)
Espero y puedas ayudarme describiendo a detalle la solucion a mi problema. grasias!!

David dijo...

Hola lo que ocurre es que no he podido encontrar el API ni siquiera en la pagina de oracle; me pueden ayudar??

Anónimo dijo...

Hola,
Me llamo Liliana Costa y soy una redactora freelance que colabora con una de las principales webs de avisos de Guatemala.

He visitado su blog y me gustaría proponerle una pequeña colaboración en materia de contenidos.
Mi mail es web@guateganga.com
Le agradezco de antemano su respuesta y le deseo un buen día.

Atentamente,
Liliana Costa