Canales populares

Utilizar y manejar el Puerto Paralelo en Linux (C o C++)

Utilizar y manejar el Puerto Paralelo en Linux (C o C++)


Muchas veces, navegando por la red, he tratado de encontrar una forma de manejar el puerto paralelo, pero la mayoria son muy confusas, y avanzadas, asi que les traigo una forma sencilla de manejarlo sin tanta complicacion.

El puerto paralelo se conforma de:



(Cada uno de los hoyitos se les llaman pines)

Usaremos los verdes, los cuales numeraremos de derecha a izquierda, del uno al 8.

Generalmente, nuestros puesrtos paralelos estan establecidos en la direcion hexadecimal (0x378), pero tambien podrian estar en la (0x278), experimenten, pues cada PC es diferente.

Bueno, lo que hace el programa que les presentare a continuacion es que manda un on o off binario al puerto indicando si deja pasar o no voltaje.

Ahora, si mandaramos un 0, seria 0000 0000 en binario (cada pin es un 0), lo que significaria que todos estarian apagados, si mandamos un 1, se prenderia 0000 0001, por lo tanto se iluminaria el primer pin.

Usaremos la siguiente tabla binaria para ubicarnos



El numero de pin sera la potencia de 2 que utilizaremos para indicar ese pin, por ejemplo
2 a la 3 es 8, por lo tanto si queremos prender solamente el pin 3, tendriamos que poner 8, pero si aparte queremos prender el pin 1, tendriamos que poner 8 + 1. y si quisieramos prender todos hasta el 3, seria 8 + 4 + 2 + 1 = 15 (Recuerden que se toma en cuenta 2 a la 0)

Ya entendido esto, este es el codigo necesario:

Nota: Se tiene que ejecutar como administrador, y dar permisos de ejecucion

#include // Se puede poner la de printf
#include // Esta nos da los comandos
#define puerto (0x378)

/* Notense los parentesis, son importantes, pues en este declaramos el puerto, tambien podria ser (0x278), si no les funciona el 378 */

using namespace std; // Para el Iostream

int main(){
if(ioperm(puerto,1,1)){ // Abrimos el puerto, y verificamos permisos de abrir el puerto
cout << "Hubo un error de permisos" // Se da si no tenemos permisos
sleep(5);
return 1; // Devuelve error 1 y finaliza
}
outb(puerto, 15); //Prendemos los primeros 5 pines, mandando una salida de 5V
if(ioperm(puerto,1,0)){ // Cerramos el puerto, y verificamos permisos del puerto
cout << "Hubo un error de permisos, ERROR 2";
sleep(5);
return 2; // Devuelve error 2 y finaliza
}
return 0;
}


Con este codigo se debio haber prendido los primeros 5 focos

Si quieren ver las salidas de los puertos paralelos, comprense unos leds que usen menos de 5v, y conectenlo en las salidas del 1 al 8, (empiecen por el 1, es mas facil), o del 1 al 3, dependiendo de sus leds disponibles, Deben conectar la parte negativa a una parte metalica del gabinete, o a una de las tierras del puerto.

Espero que les haya gustado, y si tienen dudas no duden en postearlas.

Este es un tutorial hecho bajo la licencia CC, que permite copiar dando gracias al autor, No se permite su uso comercial ni su modificacion. Cualquier termino violado se penara. Se puede violar esto, si se tiene los permisos del autor, (D4rk Pyr0, YO)


0No hay comentarios