# Leer datos del puerto paralelo en JAVA usando parport.dll



## andres.cruz (May 11, 2009)

Hola, buen dia.

Estoy desarrollando una aplicacion en java que requiere la recepción y envio de datos a traves del puerto paralelo; ya he conseguido enviar datos usando la librelia parport.dll (codigo adjunto) y usando un circuito con lends para poder visualizarlo. Mi pregunta es, como implementar esta libreria para leer datos, ademas si es posible agregen un ejemplo facil para poder entender la lectura de datos, como por ejemplo si se requiere de un ciclo que continuamente verifique el estado de los pines o algo por el estilo.

Espero cualquier ayuda posible ya que apenas estoy entrando en el mundo de la programacion en Java.

Gracias de antemano por cualquier ayuda.

Codigo implementado


```
//Primero use un paquete llamado parport con la clase llamanda ParallelPort

package parport;
public class ParallelPort
{
    private int portBase;

public ParallelPort (int portBase)
{
    this.portBase = portBase;
}

public int read ()
{
    return ParallelPort.readOneByte (this.portBase+1);
}

public void write (int oneByte)
{
    ParallelPort.writeOneByte (this.portBase, oneByte);
}

public static native int readOneByte (int address);
public static native void writeOneByte (int address, int oneByte);

static
{
        System.loadLibrary("parport");
    }
}
```
Y aqui esta la aplicacion que mandar un 1 al puerto

```
package leds;
// Ahora se importa el paquete aterior
import parport.ParallelPort;
public class Aplicacion
{
	private ParallelPort lpt1;
	public Aplicacion ()
    {
		lpt1 = new ParallelPort(0x378);
		lpt1.write(1);
	}
}
```
Y el Main

```
package leds;

public class Led
{
public static void main(String[] args)
    {
        new Aplicacion();
    }
}
```


----------



## Dr. Zoidberg (May 11, 2009)

Vas a tener que usar el método read, que te lee un byte desde el puerto de estado y te retorna el valor como un int, del cual solo valen los 8 bits menos significativos. Una vez leído ese byte, donde no todos los bit son útiles, vas a tener que jugar un rato reacomodando e inviertiendo algunos bits hasta lograr un valor utilizable.

Saludos!


----------



## andres.cruz (May 11, 2009)

Hola, gracias por la ayuda. 
Ya he logrado saber como lee datos el pueto a traves del metodo read(), era muy sencillo.
Ahora quisiera saber si existe un comando que me permita enviar un dato continuamente durante un tiempo determinado, del orden de los milisegundos si se puede.


----------



## Dr. Zoidberg (May 11, 2009)

andres.cruz dijo:
			
		

> Hola, gracias por la ayuda.
> Ya he logrado saber como lee datos el pueto a traves del metodo read(), era muy sencillo.
> Ahora quisiera saber si existe un comando que me permita enviar un dato continuamente durante un tiempo determinado, del orden de los milisegundos si se puede.



   
Las salidas del puerto paralelo tienen un latch, así que lo que envíes ahí...ahí se queda hasta que lo cambies.
Y no, esa biblioteca no tiene un método para hacer lo que vos quieres (y que yo no entiendo), pero es muy simple escribir el código para lograrlo.

Saludos!


----------



## eltonyjefe (Sep 19, 2009)

andres.cruz dijo:


> Hola, gracias por la ayuda.
> Ya he logrado saber como lee datos el pueto a traves del metodo read(), era muy sencillo.
> Ahora quisiera saber si existe un comando que me permita enviar un dato continuamente durante un tiempo determinado, del orden de los milisegundos si se puede.



tan sencillo que se te olvido mencionarlo.

espero alguien pueda contestar.
en un par de dias hare las pruebas. gracias


----------

