Proyecto de Tesis en Mecatrónica. Universidad Técnica del Norte. Ernesto Palacios <mecatronica.mid@gmail.com>
Dependencies: EthernetNetIf HTTPServer QEI_hw RPCInterface mbed
Diff: main.cpp
- Revision:
- 5:c5aea1eb10bb
- Parent:
- 4:552beeda4722
- Child:
- 6:b4dae934e1ea
--- a/main.cpp Wed Mar 28 18:42:32 2012 +0000 +++ b/main.cpp Wed Mar 28 23:13:53 2012 +0000 @@ -2,41 +2,106 @@ #include "mbed.h" #include "setup.h" +#include "EthernetNetIf.h" +#include "HTTPServer.h" +#include "RPCFunction.h" +#include "RPCVariable.h" +#include "SerialRPCInterface.h" -Serial pc( USBTX, USBRX ); +DigitalOut led1(LED1, "led1"); +DigitalOut led2(LED2, "led2"); +DigitalOut led3(LED3, "led3"); +DigitalOut led4(LED4, "led4"); + +LocalFileSystem fs("webfs"); + +EthernetNetIf eth; +HTTPServer svr; + +void setFq( char * input, char * output ); //Cambiar frecuencia +void setPTO( char * input, char * output ); // Encender/Apagar Pulse Train Output + + +//Set up custom RPC +RPCFunction SetFQ(&setFq, "Frecuencia"); +RPCFunction SetPTO(&setPTO, "Encender"); + int main() { - // IMPRIMIR modo de operacion - pc.printf( "\n GENERADOR DE FRECUENCIAS\n" ); - pc.printf( "\n Formato: F___H\\r " ); - pc.printf( "\n Genera un tren de pulsos en Hz ej: F500H" ); - pc.printf( "\n Generara un tren de impulsos de 500Hz, al final del comando se debe" ); - pc.printf( "\n ingresar enter (CarriageReturn, \\r )\n" ); + Base::add_rpc_class<AnalogIn>(); + Base::add_rpc_class<AnalogOut>(); + Base::add_rpc_class<DigitalIn>(); + Base::add_rpc_class<DigitalOut>(); + Base::add_rpc_class<DigitalInOut>(); + Base::add_rpc_class<PwmOut>(); + Base::add_rpc_class<Timer>(); + Base::add_rpc_class<BusOut>(); + Base::add_rpc_class<BusIn>(); + Base::add_rpc_class<BusInOut>(); + Base::add_rpc_class<Serial>(); - pc.printf( "\n Formato: F___K\\r " ); - pc.printf( "\n Genera un tren de pulsos en kHz ej: F250K" ); - pc.printf( "\n Generara un tren de impulsos de 250kHz, al final del comando se debe" ); - pc.printf( "\n ingresar enter (CarriageReturn, \\r )\n" ); + printf("\nSetting Up...\n"); - pc.printf( "\n Formato: I___I\\r " ); - pc.printf( "\n INICIO del tren de pulsos ej: I22I" ); - pc.printf( "\n El numero entre las I no interesa, al final del comando se debe" ); - pc.printf( "\n ingresar un enter (CarriageReturn, \\r )\n" ); + EthernetErr ethErr = eth.setup(); + if( ethErr ) + { + printf( "Error %d in setup\n", ethErr ); + return -1; + } + + printf("Configuracion Correcta\n"); - pc.printf( "\n Formato: P___P\\r " ); - pc.printf( "\n PARO del tren de pulsos ej: P22P" ); - pc.printf( "\n El numero entre las I no interesa, al final del comando se debe" ); - pc.printf( "\n ingresar un enter (CarriageReturn, \\r )\n" ); + FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path + FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path + + svr.addHandler<SimpleHandler>("/hello"); + svr.addHandler<RPCHandler>("/rpc"); + svr.addHandler<FSHandler>("/files"); + svr.addHandler<FSHandler>("/"); //Default handler + //Example : Access to mbed.htm : http://a.b.c.d/mbed.htm or http://a.b.c.d/files/mbed.htm + + svr.bind(80); + setTimer2(); - pc.printf( "\n Los numeros ingresados deben ser solamente enteros \n\n" ); - - setTimer2(); - pc.attach( &ISR_Serial ); - + printf("Listening...\n"); while(1) { - + + Net::poll(); } -} \ No newline at end of file +} + + +void setFq( char * input, char * output ) +{ + int frequency = atoi( input ); + setMR2( getMRvalue( frequency ) ); + + sprintf( output, "Ok, Freq = %d", frequency); +} + +void setPTO( char * input, char * output ) +{ + int command = atoi( input ); + + if( command == 1) + { + startTimer2(); + sprintf( output, "On" ); + } + else if( command == 0) + { + stopTimer2(); + sprintf( output, "Off" ); + } + + sprintf( output, "Error, intentelo nuevamente: %c", command ); + + +} + + + +