Urielmania

“El Mundo de Uriel… Pero la voz de todos”

Ejemplo: Controlar Puerto LPT en C

Si bien el puerto LPT no es muy nuevo que digamos, en algunos casos puede ser  útil, sobre todo si queremos alimentar o controlar algún circuito desde la computadora. Si bien hay un montón de tutoriales al respecto y la programación tampoco esta tan difícil, dejo un ejemplo  de como controlar este puerto en Linux.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/io.h>
#include <sys/types.h>
#include <fcntl.h>

#define BASEPORT 0x378 /* Direccion del puerto lpt1 */

int main() {
	char c;
	int n, tem;

	printf("Presione cualquier tecla para detener\n");

	/// / Establecer permisos de acceso al puerto
	if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); exit(1);}

	tem = fcntl(0, F_GETFL, 0);
	fcntl (0, F_SETFL, (tem | O_NDELAY));

	/*bucle principal, se detiene al presionar cualquier tecla
          y hace el parpadeo del led*/
	while (1) {
		//Si presionamos alguna tecla se sale del loop
		n = read(0, &c, 1);
		if (n > 0) break;

		/*Pone en 'on' todos los bits de datos del puerto
                 y espera 1/4 de segundo*/
		outb(255, BASEPORT);
		usleep(250000);

		/*Pone en 'off' todos los bits de datos del puerto
                y espera  1/4 de segundo*/
		outb(0, BASEPORT);
		usleep(250000);
	}

	fcntl(0, F_SETFL, tem);
	outb(0, BASEPORT);

	//Quita permisos al puerto.
	if (ioperm(BASEPORT, 3, 0)) {perror("ioperm"); exit(1);}

	exit(0);
}

Este código sirve para hacer parpadear un led.

Me gusto mucho el código  por que ilustra muy bien como puede abrirse el puerto LPT , pero tengo que decirles que si bien el puerto nos da 5 volts , solo nos da 3mA de corriente algo que tienen que revisar si van a conectar algo que consuma mas amperaje que el mencionado :D.

Aunque esto lo pueden solucionar con algo como esto:

Espero que les sirva el código y sobre todo el diagrama , si tienen dudas no duden en dejar un comentario, tengo que decir que a mi me sirvió mucho :D.

Acerca del Autor