Control del puerto paralelo con ppdev
Cómo leer y escribir en un puerto paralelo desde un programa C utilizando el driver ppdev
y la llamada al sistema ioctl
Módulos necesarios
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
.
Obtener permisos
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.
Función ioctl
El Formato de ioctl es: ioctl(fd, operctl, res)
- fd: Aquí indicamos el archivo de dispositivo, en nuestro caso /dev/parport0 que está asociado al puerto paralelo.
- operctl: Indicamos que es lo que queremos hacer con el puerto (ver sección Comandos de Control).
- res: En nuestro caso devuelve un unsined char, pero dependiendo del uso de ioctl puede devolver otro tipo de datos.
Para ver el funcionamiento de ioctl, lo mejor es un ejemplo:
Comandos de Control
- PPCLAIM: Pedir acceso al puerto.
- PPWCONTROL y PPRCONTROL: Escribir y leer datos de control respectivamente.
- PPRSTATUS: Leer el registro de estado.
- PPWDATA y PPRDATA: Para escribir y leer datos respectivamente.
Estos son los habituales, pero en el enlace GUIE-The Linux 2.4 Parallel Port Subsystem podréis encontrar muchos más.