Read LPT from python


Continio jugando con el LPT, esta vez la idea es lograr una lectura usando python. 

Por razones que varios conoces esto no se puede hacer directamente desde el lenguaje, 

desconozco si existe algún método distinto para hacerlo, pero creo que no.

La idea es crear un wrapper a algunas funciones de la libreria sys/io.h 

específicamente las funciones ioperm, inb y outb. 

para ello se crea un archivo pylpt.i (he nombrado al modulo)


%module pylpt
%{
#include <stdio.h>
#include <sys/io.h>
#include <stdlib.h>
%}

int ioperm (unsigned long int __from, unsigned long int __num, int __turn_on);
unsigned char inb (unsigned short int port);
void outb (unsigned char value, unsigned short int port);


Seguido de un Makefile para poder compilar los módulos usando swig 




all: _pylpt.so

_pylpt.so: pylpt_wrap.o
      gcc -o _pylpt.so -shared pylpt_wrap.o 

pylpt_wrap.o: pylpt_wrap.c
      gcc -fpic -c pylpt_wrap.c -I/usr/include/python2.5/ -I/usr/local/include

pylpt_wrap.c: pylpt.i
      swig -python pylpt.i

clean:
      rm _pylpt.so pylpt_wrap.o pylpt_wrap.c pylpt.py




Y finalmente un programita en python que prueba las funciones, 

solo tengo probada la lectura del puerto. Que es lo que necesito por el momento.



import pylpt

BASE = 0x378
STATUS = BASE+1

def main():
    print 'Entring Program'
    print pylpt.ioperm(BASE,3,1)
    while True:
       print pylpt.inb(STATUS)  
    print BASE
    print 'Exiting Program'
    return


if __name__ == '__main__':
    main()

1 comment:

romiromy ' on 8:57:00 PM said...

wow no entendi nada, pero paso a saludar :P jajaja cuidate :D!

Post a Comment

 

Ppalma Copyright © 2008 D'Black by Ipiet's Blogger Template