Como manejar puerto paralelo y serie con JAVA?

basicamente me encarrete con la domotica, y realizo aplicaciones con VISUAL BASIC, pero mi interes ahora se centra en las aplicaciones con java (es mucho poder de lenguaje), quisiera saber si para java se necesitan librerias como las que requiere visual basic, como conseguirlas o que es lo que necesito...

gracias por la colaboracion...
 
Hola puedes utilizar el portcom de la misma Sun, el único problema que vas a tener en windows es que los puertos están protegidos y debes deshabilitarlos através de un dll o un .sys.
 
Siempre se puede recurrir a la interfaz nativa de Java (JNI).
Lo que se hace es declarar una clase cuyos procedimientos
son "native" y no tienen cuerpo. Despues de compilar la clase
se le aplica al archivo .class la aplicación "javah", la cual
genera un archivo del tipo ".h". ¿Para que sirve? Da las
declaraciones de unos procedimientos en lenguaje C.
Como el C es el lenguaje en el que están escritos los sistemas
operativos modernos, todo los "api" e interfaces a núcleo
son accesibles desde C. La funciones en C con usadas para
crear una librería dinámica (.DLL en Windows o so.so en Linux)
que es importada al progama y se efectúa el enlace de las
rutinas "native" a las de la librería. Problema resuelto.
Por eso, si consiguen como hacerlo en C, ya saben como hacerlo
en Java.

Saludos
 
Tiempo que yo buscava la API de java para controlar el puesto paralelo, pero ahora lo enconter . la pueden bajar desde:

http://intall.org/down_rar/jkavax.rar


y tambien la forma de instalar los archivos. En realidad solo es copiar archivos en los lugares indicados:

Copiar el win32com.dll a la carpeta c:\jdk1.1.6\bin

Copiar comm.jar a la carpeta c:\jdk1.1.6\jre\lib\ext\

Copiar el javax.comm.properties a la carpeta \jre\lib\

sigan estos pasos, y podran controlar el puerto paralelo, y funciona para windows XP, pero deben habilitar los puerto LPT1 para WIndows que se encuentran protegidos. La forma es:

pero ya les mando luego otros trucos para que les funcione en XP y la parte interesante de conectar los pines del LPT1 para que funcione normal en WINDOWS XP
 

Adjuntos

  • jkavax_954.rar
    31.4 KB · Visitas: 1,299
Ahora si sigo:

Windows tiene un sistema de proteccion para el control del puerto paralelo. Esto hace restingido el acceso al puerto desde interrupciones externas.

Existen dos trucos igualmente importantes para controlar el puerto paralelo en Windows XP de forma normal.

1. Existe la restriccion logica. Para habilitar el puerto paralelo para que obedesca interrupciones externas deben ir a:

INICIO->panel de control->sistema->hardware->administrador de dispositivos->(en esta parte abrir puertos(COM&LPT))->en la lista hacer doble clik en puerto de impresora LPT1->les saldra una ventana "propiedades de puerto de impresora". Luego vayanse a "configuración de puerto" y por ultimo habiliten el pushbutton "usar cualquier interrupcion asignada al puerto".

OJO: Puede ser que este habilitado y aun asi no funcione. Bueno en ese caso habiliten "no utilizar nunca una interrucion" y ACEPTAR. La pantalla parpadeará...luego habiliten de nuevo ""usar cualquier interrupcion asignada al puerto" y veran que esta vez si esta habilitado el puerto paralelo.

2. Tambien existe el caso de la restriccion por hardware...En este caso se rompe la restriccion del puerto paralelo solo haciendo:
* LLevar a tierra el PIN11 del puerto paralelo.

haciento los pasos 1 y 2 ya pueden usar en su totalidad el puerto paralelo por medio de una maquina virtual de java....suerte...ya pronto les mostrare los trabajos y utilidades que hice con ella.
 

Adjuntos

  • www_210.jpg
    www_210.jpg
    49.9 KB · Visitas: 9,963
garrizano...saludos
en primer lugar, el puerto paralelo en java funciona similar a como funcionaría el puerto paralelo en C++(bueno no tan similar puesto que ahy algunas diferencias en cuanto al delay), pero el caso es que ambos envian datos al puerto paralelo. ahora depende de la aplicacion como debas enviarlos para que tu aplicacion solamente las lea. Em la mayoria de los casos el circuito externo es el que recibe los datos, y en casos muy raros pasa inversamente. Por tanto si quieres crear un grabador con java, yo creo que es posible, puesto que un grabador de uControladores solo debe recibir datos de la PC; el sincronizmo, los datos enviados...etc...ya depende de tu diseño y tu programa.
 
aquy les envío en programa simple de java para escribir por ejemplo un "57" hexadecimal en el LPT1:
import java.io.*;
import java.net.*;
import javax.comm.*;
public class Send
{ //ret delay;
//int PUERTO;
//String portname;



//public boolean Byte(int a)throws Exception
public static void main (String [] arg)throws Exception
{ int PUERTO=4000,i,c=0,a,a1;


String portname="LPT1";
CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier (portname);
CommPort port = portId.open ("Application Name",30000);
OutputStream os = port.getOutputStream ();
DataOutputStream bos = new DataOutputStream (os);
bos.writeByte (0x57);
}

}
 
holas tambien jarmos...
tengo como ejemplo dos sistemas que me funcionaron muy bien con java en puerto paralelo.
- Control de puerto paralelo remoto
Este sistema era parte de mi proyecto final en electronica, utilizaba dos maquinas conectadas por cable de red y sus NICS, de tal manera que desde una maquina podia controlar el puerto LPT1 de la otra. Sus aplicaciones son inmensas, desde el control remoto de estaciones (temperatura, ventilacion)..como ejemplo.
- Control de una camara visora.
Este sistema la hice por algunos planes que tengo en mente, lo que hacia era controlar dos motores de paso por el puerto paraleo en java y asi controlar la posicion que la camara que ya no era estática, sino era una camara OJO robotica en dos dimensiones.

Bien aunque resultaron de forma excelente, tambien tengo limitaciones...por ejemplo...siempre he usado el concepto de enviar datos, pero nunca se me presentó un problema con recibir datos desde un circuito externo...¿alguien sabe como recibir datos para LPT en java?...
no se si sirve de mucho enviarte el programa de java para elcontrolador de la camara...puesto que el sistema no es solo en java, tambien esta el uControlador 16F84, su programa, la arquitectura...etc...pero de todas maneras la pongo como ejemplo:

import java.io.*;
import java.net.*;
import javax.comm.*;
public class Send
{ //ret delay;
//int PUERTO;
//String portname;



//public boolean Byte(int a)throws Exception
public static void main (String [] arg)throws Exception
{ int PUERTO=4000,i,c=0,a,a1;


String portname="LPT1";
CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier (portname);
CommPort port = portId.open ("Application Name",30000);
OutputStream os = port.getOutputStream ();
DataOutputStream bos = new DataOutputStream (os);

while(true)
{ c=0;
int b[]=new int[30];
System.out.println ("introdusca valor X:");
a = LeeInt.dato ();
System.out.println ("introdusca valor Y:");
a1 = LeeInt.dato ();

while(a!=0)
{ if(a%2==0)
b[c]=0;
else
b[c]=1;
a=a/2;
c=c+1;
}

while(c<=7)
{ b[c]=0;
c=c+1;
}
for(i=7;i>=0;i--)
{ if(b==0)
{ System.out.println("0");
bos.writeByte (0x00);
bos.writeByte (0x01);
//bos.writeByte (0x02);
}
else
{ System.out.println("1");
bos.writeByte (0x00);
bos.writeByte (0x02);
bos.writeByte (0x03);
}
}
//OTRO
c=0;
while(a1!=0)
{ if(a1%2==0)
b[c]=0;
else
b[c]=1;
a1=a1/2;
c=c+1;
}

while(c<=7)
{ b[c]=0;
c=c+1;
}
for(i=7;i>=0;i--)
{ if(b==0)
{ System.out.println("0");
bos.writeByte (0x00);
bos.writeByte (0x01);
//bos.writeByte (0x02);
}
else
{ System.out.println("1");
bos.writeByte (0x00);
bos.writeByte (0x02);
bos.writeByte (0x03);
}
}
}
}

}
 
hola les queria pedir ayuda, estoy empezando a estudiar java y queria ver la posibilidad que me recomendaran un IDE para usar ya que veo hay bastantes, ECLIPSE, NETBEANS y otros de microsoft, desde ya les agradesco

un saludo

Alejandro Garrido
 
Hola... gracias por la gran ayuda...

me gustaria saber si tienes algun ejemplo basico de como leer y escribir datos en el puerto paralelo a traves de jsp...

de antemano muchas gracias.
 
betamic dijo:
me gustaria saber si tienes algun ejemplo basico de como leer y escribir datos en el puerto paralelo a traves de jsp...

Para hacerlo desde JSP es lo mismo que hacerlo en codigo JAVA convencional. Dependiendo de lo que tengas que lograr, quizás sea mejor escribir un servlet que cargue y acceda al paquete javax.comm para las comunicaciones, y derivar el procesamiento JSP al servlet cuando se lo requiera. Hay que ver que quieres hacer...

Saludos!
 
Es que ese es el problema ... soy super novato en java y jsp, y no entiendo mucho, ya lo he hecho para vb6 y para c++, pero en java es un fastidio... ademas no se ocupar ningun ide de java solo lo hago con notepad y javac...

si alguien tuviera un ejemplo en jsp se lo agradeceria infinitamente...

gracias nuevamente...

Atte. BetaMic
 
hola foreros tengo un problema....
bueno e realizado una comunicacion rs232 con netbeans java con un micro 16f877a todo funciona de pelos, e creado el ejecutable por medio de f11 pero cuando lo abro no me abre el programa no s epor que estoy usando puerto serie virtual por un cable trednet..... al guien me podria informaciónrmar por que pasa ycomo lo puedo arreglar
 
lastmait dijo:
bueno e realizado una comunicacion rs232 con netbeans java con un micro 16f877a todo funciona de pelos, e creado el ejecutable por medio de f11 pero cuando lo abro no me abre el programa no s epor que estoy usando puerto serie virtual por un cable trednet..... al guien me podria informaciónrmar por que pasa ycomo lo puedo arreglar

Va a ser mejor que aclares lo que estás pidiendo, POR QUE NO SE ENTIENDE NADA! y así no vas a conseguir respuestas...

Saludos!
 
ok tengo un programa que me controla un robot por puerto serie, estoy trabajando desde un pc portatil por lo cual tuve que comprar un cable trednet de usb a serie, todo funciona muy bien. Pero me toca abrir netbeans para poder usar el robot, e creado un ejecutable .jar con la tecla f11 per al momento de abrir el ejecutable no abre.
 
lastmait dijo:
ok tengo un programa que me controla un robot por puerto serie, estoy trabajando desde un pc portatil por lo cual tuve que comprar un cable trednet de usb a serie, todo funciona muy bien. Pero me toca abrir netbeans para poder usar el robot, e creado un ejecutable .jar con la tecla f11 per al momento de abrir el ejecutable no abre.

OK. Entonces ejecutá el .jar a mano:

1) - Inicio->Ejecutar-> CMD <Enter>
2) - Cambiar al directorio donde está el .jar (comado cd nombre_del_path_hasta_el_directorio
3) - Ejecutar: java -jar nombre_del_jar_que_hiciste
4) - Copiá los errores de ejecución que muestra en la consola.
5) - Posteá acá los errores.

Saludos!
 
Atrás
Arriba