Cómo leer y escribir en un puerto paralelo desde un programa C utilizando el driver
ppdevy la llamada al sistemaioctl
Necesitaremos tener instalados los módulos parport, parport_pc y ppdev. Estos módulos ya vienen incluidos a partir del Linux 2.4.x y superiores.
Lo primero que se hará es ejecutar el comando lsmod, para ver una lista de los módulos cargados, si no aparecen los módulos que necesitamos habrá que cargarlos, para ello utilizamos los comandos insmod o modprobe.
La función ioctl envía comandos al puerto paralelo a través del archivo de sistema /dev/parport0, sólo tiene permisos de lectura y escritura el superusuario y el grupo lp (en Debian); los usuarios que requieran acceso al puerto paralelo deben ser añadidos a dicho grupo.
ioctlEl Formato de ioctl es: ioctl(fd, operctl, res)
Para ver el funcionamiento de ioctl, lo mejor es un ejemplo:
/** Abrimos el fichero de dispositivo para lectura y escritura. **/ fd = open("/dev/parport0", O_RDWR); /** Lo primero es pedir el acceso al puerto. **/ if( ioctl(fd, PPCLAIM)){ perror("PPCLAIM"); close(fd); return 1; } for (;;) { /** Consultamos el registro de estado y el resultado se guarda en la variable status. **/ ioctl(fd, PPRSTATUS, &status); /** Si se recibe un acknowledge salimos del bucle. **/ if((status & 0x40) == 0x00) break; }
Estos son los habituales, pero en el enlace GUIE-The Linux 2.4 Parallel Port Subsystem podréis encontrar muchos más.