jueves, 25 de septiembre de 2008

Programando Dispositivos!!

Ayudando a unos estudiantes sobre un proyecto de domótica me encontre con el reto de ayudar a programar el pueto paralelo en Linux, lógicamente en C.
Al parecer ya tenemos un programita sencillo que apaga y enciende un led de uno de los 8 pines de datos pero el problema es que necesitan un mecanismo que permita dejar pasar energia electrica y asi controlar los dispositivos.
En debian solo instalamos gcc y todas sus dependencias y he aca el programa que cambia de estado el pin de datos número 4:




#include
#include
#include
#include
#include

// #define Direcparal 888
// 888 deciman = 0x378 Hexagesimal

#define Direcparal 0x378

void gcd0(void) {
//Le damos permiso para acceder al puesto lpt
ioperm(Direcparal,1,1);

//Cambiamos el estado del pin 4 de datos con 0001 en binario = 0x4 en Hexa
printf("Led encendido /n");
outb(0x4,Direcparal);
//Esperamos un rato
sleep(10);
//Cambiamos el estado del pin 4 de datos con 0000 en binario = 0x en Hexa
printf("Led apagado /n");
outb(0x0,Direcparal);
//Cerramos el acceso al puesrto
ioperm(Direcparal,1,0);

}

int main (void) {
gcd0();
return 1;
}




Teniendo en cuenta esto, ya que los puertos paralelos ya no son tan comunes hoy en dia me dedique a a buscar como programar los usb y me vine a econtrar con un árticulo muy bueno y sencillo: Programar un dispositivo usb que solo tiene tres leds para encenderse, el unico problema es que el dispositivo cuesta $82 USD. Esta dificil comprarlo por el momento.

Estaremos esperando programar algo.


Referencias:

Puerto paralelo
http://www.globu.net/pp/PP/pp.htm
http://www.faqs.org/docs/Linux-mini/IO-Port-Programming.html
http://bigasterisk.com/projects/parallel

Puerto USB
http://www.linuxjournal.com/article/7353
http://www.lrr.in.tum.de/Par/arch/usb/usbdoc/node2.html

No hay comentarios: