Proyecto de Tesis en Mecatrónica. Universidad Técnica del Norte. Ernesto Palacios <mecatronica.mid@gmail.com>

Dependencies:   EthernetNetIf HTTPServer QEI_hw RPCInterface mbed

Revision:
18:cf1e07d82630
Parent:
17:a4f380bc2516
Child:
19:c26cf8a48986
--- a/main.cpp	Wed May 02 01:15:36 2012 +0000
+++ b/main.cpp	Wed May 09 20:51:10 2012 +0000
@@ -6,22 +6,29 @@
 #include "HTTPServer.h"
 #include "RPCFunction.h"
 #include "RPCVariable.h"
-#include "SerialRPCInterface.h"
-
-Serial          pc( USBTX, USBRX );
+//#include "SerialRPCInterface.h"
 
-DigitalOut      pin_son( p7 );   // SON
-DigitalOut      pin_dir( p26 );   // SIGN+
-InterruptIn     pin_alm( p8 );   // ALM 
-AnalogOut       aout( p18 );      // 0.0 a 1.0 float
+Serial          pc( USBTX, USBRX ); //Comunicacion Serial directa al computador
+Serial          RS_232(p9, p10);    //Comunicacion Serial para MAX232
+Serial          encoder(p28, p27);  //Comunicacion Serial para tarjeta del encoder
+
+DigitalOut      pin_son( p7 );       // SON
+DigitalOut      pin_dir( p26 );     //  SIGN+
+InterruptIn     pin_alm( p8 );     //   ALM 
+AnalogOut       aout( p18 );      //    0.0 a 1.0 float
 
 DigitalIn       isHTTP( p15 );   // Modo Ethernet/Serial
 DigitalIn       isFast( p16 );   // Serial Alta velocidad/Baja Velocidad
+DigitalIn       isPC  ( p17 );   // Salida a compuador o MAX232
+
+// Faltan las interrupciones del enconder.
+
+EthernetNetIf eth;  
+HTTPServer svr;
+        
 
 LocalFileSystem fs("local");
 
-//EthernetNetIf eth;  
-HTTPServer svr;
 
 //  Anadir funciones al Protocolo RPC
 RPCFunction SetFQ  (&setPTO_eth,  "PTO");
@@ -35,8 +42,10 @@
 
 int main() {
     
+//**********************************************************************************************//
     if( isHTTP )   //Configura Red Ethernet
     {
+                           
         Base::add_rpc_class<AnalogIn>();
         Base::add_rpc_class<AnalogOut>();
         Base::add_rpc_class<DigitalIn>();
@@ -49,112 +58,35 @@
         Base::add_rpc_class<BusInOut>();
         Base::add_rpc_class<Serial>();
         
-            
-        //____________ *** ARCHIVO DE CONFIGURACION  ***_______________________ //
-        printf("\n *** CONFIGURACION ETHERNET DE MBED ***\n"); 
-        printf("Leyendo archivo de configuracion...\n\n"); 
-        
-        FILE *fp = fopen("/local/config.txt", "r"); // Abre el archivo y lo guarda en fp
-        
-        if(!fp)   // En caso de no encontrarse el archivo
-        {
-            printf("\nEl archivo /mbed/config.txt no puede ser abierto!\n");
-            exit(1);
-              
-        }
-        else
+        printf("Setting up...\n");
+        EthernetErr ethErr = eth.setup();
+        if(ethErr)
         {
-            // Cadenas de caracteres desde el Archivo config.txt
-            char isDHCP [15];    //Modo Automatico o Manual
-            char empty  [2];     // Linea vacia
-            char ip     [40];    // Direccion IP
-            char mask   [40];    // Mascara de Subred
-            char gate   [40];    // Puerta de enlace 
-            char dns    [40];    // Direccion DNS
-            
-            // Valores 'int' para agregar a la configuracion manual
-            int DHCP;
-            int n_ip[4];
-            int n_mask[4];
-            int n_gate[4];
-            int n_dns[4];
-            
-            
-            // Leer linea a linea el archivo
-            fgets( isDHCP, 15, fp );
-            fgets( empty,  2, fp );
-            fgets( ip,     40, fp );
-            fgets( mask,   40, fp );
-            fgets( gate,   40, fp );
-            fgets( dns,    40, fp );
-            
-            
-            // Extraer los valores numericos
-            sscanf( isDHCP,"%*s %d",&DHCP );
-            
-            sscanf(   ip,"%*s %d.%d.%d.%d",&n_ip[0],&n_ip[1],&n_ip[2],&n_ip[3] );
-            sscanf( mask,"%*s %d.%d.%d.%d",&n_mask[0],&n_mask[1],&n_mask[2],&n_mask[3] );
-            sscanf( gate,"%*s %d.%d.%d.%d",&n_gate[0],&n_gate[1],&n_gate[2],&n_gate[3] );
-            sscanf(  dns,"%*s %d.%d.%d.%d",&n_dns[0],&n_dns[1],&n_dns[2],&n_dns[3] );
-            
-            
-            if(DHCP) //En caso de modo DHCP
-            {
-                printf("\n   Configurar red de manera automatica\n");
-                EthernetNetIf eth; //Crea la interfaz
-                EthernetErr ethErr = eth.setup();
-                if( ethErr )
-                {
-                    printf( "Error %d en la configuracion\n", ethErr );
-                    return -1;
-                }
-            
-                printf("Configuracion Correcta\n\n");
-            }
-            else                       
-            {                        
-                sscanf(   ip,"%*s %d.%d.%d.%d",&n_ip[0],  &n_ip[1],  &n_ip[2],  &n_ip[3] );
-                sscanf( mask,"%*s %d.%d.%d.%d",&n_mask[0],&n_mask[1],&n_mask[2],&n_mask[3] );
-                sscanf( gate,"%*s %d.%d.%d.%d",&n_gate[0],&n_gate[1],&n_gate[2],&n_gate[3] );
-                sscanf(  dns,"%*s %d.%d.%d.%d",&n_dns[0], &n_dns[1], &n_dns[2], &n_dns[3] );
-                printf(" %s %s %s %s %s\n  " , isDHCP, ip, mask, gate, dns );            
-                
-                printf("\n   Configurar red de manera manual\n");
-                EthernetNetIf eth(
-                IpAddr( n_ip[0],  n_ip[1],  n_ip[2],  n_ip[3]), //IP Address
-                IpAddr( n_mask[0],n_mask[1],n_mask[2],n_mask[3]), //Network Mask
-                IpAddr( n_gate[0],n_gate[1],n_gate[2],n_gate[3]), //Gateway
-                IpAddr( n_dns[0], n_dns[1], n_dns[2], n_dns[3] )  //DNS
-                );
-                
-                EthernetErr ethErr = eth.setup();
-                if( ethErr )
-                {
-                    printf( "Error %d en la configuracion\n", ethErr );
-                    return -1;
-                }
-    
-                printf("Configuracion Correcta\n\n");
-            }
-        }   
-        
-        printf("Cerrando archivo...\n");
-        fclose(fp);
-                           
-        FSHandler::mount("/local", "/files");  //Mount /webfs path on /files web path
-        FSHandler::mount("/local", "/");       //Mount /webfs path on web root path
+            printf("Error %d in setup.\n", ethErr);
+            return -1;
+        }
+        printf("Setup OK\n");
+                                   
+                                   
+        FSHandler::mount("/local", "/files"); //Monta /local en /files que es el directorio web
+        FSHandler::mount("/local", "/");      //Mount /local en / que es el directorio raiz
   
-            
+        //Handles para la comunicacion
         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.addHandler<FSHandler>("/"); 
+        
+        svr.bind(80);   // Puerto de comunicacion.
+                       
+        printf("Listo para comunicacion...\n");
    
-        svr.bind(80);
-        
-        printf("Listo para comunicacion...\n");
+        // Para probar la correcta configuracion acceder a mbed.htm
+        // http://a.b.c.d/mbed.htm or http://a.b.c.d/files/mbed.htm
+   
     }
+//**********************************************************************************************************//
+
     
     else  // Caso Contrario Anadir modo Serial
     {