Una aplicación sencilla que puede llegar a ser útil para un proyecto más generalMediante TCP en modo cliente se establece comunicación con un servidor de hora (NIST), el cual entrega la fecha y hora. La convertimos a string y ya podemos trabajar con la data.
Código:/* \file main.cpp \version: 1.0 \brief Este fichero contiene ejemplo para sincronizacion de fecha y hora mediante TCPClient \web www.micros-designs.com.ar \date 19/01/11 *- Version Log --------------------------------------------------------------* * Fecha Autor Comentarios * *----------------------------------------------------------------------------* * 19/01/11 Suky Original * *----------------------------------------------------------------------------* */ #include "mbed.h" #include "EthernetNetIf.h" #include "TCPSocket.h" // ********************************************************************** #define TIME_NIST_GOV IpAddr(192,43,244,18) // time.nist.gov #define TIME_A_NIST_GOV IpAddr(129,6,15,28) // time-a.nist.gov #define TIME_B_NIST_GOV IpAddr(129,6,15,29) // time-b.nist.gov #define TIME_NW_NIST_GOV IpAddr(131,107,13,100) // time-nw.nist.gov // ********************************************************************** DigitalIn button(p8); // ********************************************************************** EthernetNetIf eth; TCPSocket tcp; Host server(TIME_NIST_GOV,13,"time.nist.gov"); // ********************************************************************** struct{ int connected; int writeable; int readable; }flags; // ********************************************************************** void onTCPSocketEvent(TCPSocketEvent e){ printf("New TCPSocketEvent: %d",e); switch(e){ case TCPSOCKET_CONNECTED: flags.connected = 1;break; case TCPSOCKET_WRITEABLE: flags.writeable = 1;break; case TCPSOCKET_READABLE: flags.readable = 1;break; case TCPSOCKET_CONTIMEOUT: case TCPSOCKET_CONRST: case TCPSOCKET_CONABRT: case TCPSOCKET_ERROR: case TCPSOCKET_DISCONNECTED: tcp.close(); flags.connected = 0; break; } } // ********************************************************************** int main(){ button.mode(PullUp); printf("Setting up...\n"); EthernetErr ethErr = eth.setup(); if(ethErr){ printf("Ethernet Error %d\n", ethErr); return -1; }else{ printf("mbed is online...\n"); } flags.connected=0; flags.writeable=0; flags.readable=0; tcp.setOnEvent(&onTCPSocketEvent); printf("Conecting host...\n"); TCPSocketErr err = tcp.connect(server); if(err){ printf("Error connecting\n"); } while(true){ Net::poll(); if(!button){ printf("Conecting host...\n"); TCPSocketErr err = tcp.connect(server); if(err){ printf("Error connecting\n"); } } if(flags.readable==1){ flags.readable=0; printf("received host...\n"); char Buffer[100]={0}; char Fmt[150]={0}; tcp.recv(&Buffer[0],100); sprintf(&Fmt[0],"%s",Buffer); // 6...23 useful string : Fmt[24]=NULL; printf("%s",&Fmt[6]); tcp.close(); }// en if }// end while(true) }// end main // **********************************************************************
Saludos!


LinkBack URL
About LinkBacks
Mediante TCP en modo cliente se establece comunicación con un servidor de hora (NIST), el cual entrega la fecha y hora. La convertimos a string y ya podemos trabajar con la data.
Citar