General software

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.

About the author

Avatar

uriel

Alguien que vive en algun lugar de Oaxaca y que le gusta pensar mucho y hacer poco… Amante de la Tecnologia y de la Filosofia del software libre

1 comentario

Click here to post a comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

clickxti
Hootsuit
Publisuite
Elegant Themes