Anda di halaman 1dari 11

Fundamentos de Programacin

Accediendo al Puerto Paralelo en Linux


Con C
Introduccin

El sistema operativo Linux permite trabajar


con los dispositivos de entrada/salida de una
manera similar como en el entorno dos. En
Linux las funciones que manejan al
dispositivo son parecidas como outb, inb,
etc.
Direccin de Puerto Paralelo

Para acceder al Puerto se debe determinar la


direccin del puerto usualmente en en el
entorno DOS la direccin es x!"# en
$exadecimal, en Linux debe ser la misma
pero para verificar % estar se&uros que sea
esa la direccin podemos c$ecar en el arc$ivo
ioports que se encuentra para el 'buntu
en ( /proc/ioports % con cat lo ejecutamos en
la consola para visualizar los puertos de la
PC
Direccin de Puerto Paralelo

cat /proc/ioports
Programacin del Puerto

Ahora cuando se quiere acceder al


puerto por medio del lenguaje C,
Linux tiene restringido el acceso a
los puertos para el usuario as que
se necesitara estar como
superusuario para accederlos y
existe una funcion que te da
permisos para entar al puerto y esta
es : ioperm
Programacin del Puerto(2)

ioperm - establece permisos en los


puertos de entrada/salida

Utiliza estas dos librerias que


debern estar en nuestro codigo:

#include<unistd.h>

#include<sys/io.h>
Programacin del Puerto(3)

La estructura de la funcin esta


compuesta de esta manera:

int ioperm (unsigned long desde,


unsigned long num, int encender);
Programacin del Puerto(4)

ioperm recibe tres par)metros(

Direccin base del puerto * x!"#+

,%tes a utili-ar del puerto *!+

.ctivar * / ( da permisos ( cierra permisos+


Leer Datos del Puerto Paralelo

Para leer el puerto existe la funcin : inb y se usa


de esta manera:

dato= inb(BASE) // leyendo el byte de datos

estado= inb(BASE+) // leyendo el byte de estado

control=inb(BASE+!) // leyendo el byte de control


Sacar Datos del Puerto Paralelo

Para sacar datos al puerto paralelo se usa la


funcion: outb la diferencia con la de dos es "ue
tiene en orden in#erso el puerto y el dato$

outb(datos%BASE)& // saco un dato leido$

Para sacar confi'uraciones al byte de control es de


la misma forma: outb(datos%BASE+!)&
Ejemplo

Anda mungkin juga menyukai