Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas

viernes, 20 de noviembre de 2009

Programacion Linear: Debian GLP-Solve

Hace ya un par de años que llevé Metodos de Optimización (MOP115) o su equivalente Investicagion de Operaciones (IOP115) en la Facultad de Ingeniería y Arquitectura en la Universidad de El Salvador, cosa que mi memoria no recuerda muy bien.

Hoy un compañero que lleva Manejo de Software para otras ingenierias (Que no es Ing. de Sistemas) le dejaron una tarea de explicar un programa para esa materia, y encontró GLP-Solve [1] que resulve problemas de programación lineal.

Como todo debianero, puse a mi disposicion mis habilidades (con ayuda de leprosys [2]) instalandolo en un sistema Debian Lenny GNU/Linux.

Manos a la obra

Lo primero es descargar el archivo compreso:
Descargar GLP-SOLVE
$wget http://carleos.epv.uniovi.es/~juan/dist/GLP-Solve-1.2.tar.gz
Autenticarse como usuario root
$su

Instalar las dependencias:

libgtk2.0-dev
libgnomeui-dev
libgtksourceview-dev
libgnomeprintui2.2-dev
lp-solve
liblpsolve55-dev

# aptitude install libgtk2.0-dev libgnomeui-dev libgtksourceview-dev libgnomeprintui2.2-dev lp-solve liblpsolve55-dev

Hacer un enlace de la libreria compilada liblpsolve55.so en /usr/lib/ con:
# ln -s /usr/lib/lp_solve/liblpsolve55.so /usr/lib/

Descomprimir el archivo

# cd ./GLP-Solve-1.2

Empezar la compilacion.
Configurar el sistema

# liblpsolve_CFLAGS=-I/usr/include/lpsolve liblpsolve_LIBS="/usr/lib/lp_solve/liblpsolve55.so" ./configure --prefix=/usr --docdir=/usr

Compilar
# make


Instalarlo
# make install
# exit

Ejecutarlo con:
$ glp-solve






[1] http://carleos.epv.uniovi.es/~juan/
[2] http://www.leprosys.info/

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