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:
wow no entendi nada, pero paso a saludar :P jajaja cuidate :D!
Post a Comment