En la entrada anterior puse 2 ejemplos de como controlar el puerto paralelo, en esta entrada pondre otros 2 ejemplos.
El siguiente ejemple es:
#include <stdlib.h>
#include <parapin.h>
#include <unistd.h>
int i;
main () {
pin_init_user(LPT1);
pin_output_mode(LP_DATA_PINS);
pin_input_mode(LP_PIN10 |LP_PIN12);
while( !pin_is_set(LP_PIN10)) {
clear_pin(LP_DATA_PINS);
if ( pin_is_set(LP_PIN12)){
for (i = 2; i <= 9; i++){ set_pin(LP_PIN[i]); usleep(200000); } } } }
Lo guardamos como prueba.c y compilamos con :
gcc -o prueba prueba.c -lparapin
En los 3 ejemplos que hemos visto hasta ahora es necesario el ejecutarlos como root, si queremos hacer uso del puerto paralelo como usuarios normales podemos hacer uso de ioctl() y de ppdev, de la siguiente forma:
#include <stdio.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/ppdev.h>
#include <unistd.h>
#define pin12 32
#define pin10 64
int fd;
int i, x=0, dato=1;
main (){
fd = open("/dev/parport0", O_RDWR );
ioctl(fd, PPCLAIM); //pido puerto
ioctl(fd, PPWDATA, &i); // escribo puerto
while( (pin10 & dato) != pin10){
x = 0;
ioctl(fd, PPWDATA, &x); //escribo puerto
ioctl(fd, PPRSTATUS, &dato); //Leo puerto
if ((pin12 & dato) == pin12){
for ( i = 1; i <= 8; i++){ x = x*2+1; ioctl(fd, PPWDATA, &x); //escribo puerto usleep(200000); } } } close(fd); }
Si queremos saber mas de como acceder mas al puerto paralelo por medio de ppdev ver este enlace
1 comentario:
¿Como que nadie ha puesto un comentario a este maravilloso blog?. Si no fuera por tí, no habría aprendido a usar Parapin. Me estoy haciendo un driver de joystick usando el LPT y si no fuera por esto... en fin, no me molaba leer la maldita documentacion extensa y en inglés. Muy educativo, didáctico e ilustrativo todo. Muy bien, si señor y muchas gracias por tu aporte
Publicar un comentario