Trial code integration web page update with analogue data and ntp support
Dependencies: NTPClient_NetServices mbed
pmr_svr3.cpp
- Committer:
- pmr1
- Date:
- 2010-08-06
- Revision:
- 0:8cc2035bebfc
File content as of revision 0:8cc2035bebfc:
#include "mbed.h" #include "EthernetNetIf.h" #include "HTTPServer.h" #include "NTPClient.h" DigitalOut led1(LED1, "led1"); DigitalOut led2(LED2, "led2"); DigitalOut led3(LED3, "led3"); DigitalOut led4(LED4, "led4"); AnalogIn Voltmeter (p20); LocalFileSystem fs("webfs"); // this could be any name EthernetNetIf eth; HTTPServer svr; // NTPClient ntp; int updateVolts(void) { FILE *fp = fopen("/webfs/volts.htm", "w"); // Open local filename // it ignores path and date defaults 1/1/2008 becausse RTC not set // if I call ithe localfilesystem www rather than 'local' it writes and is seen when drive is refreshed fprintf(fp, "<title> Volt meter test page </title>\n"); fprintf(fp,"<h1>Volts of the day from port 1</h1>"); fprintf(fp, "volts %f V\r\n",Voltmeter.read()); fclose(fp); return(0); } int loadTime(void) { time_t ctTime; ctTime = time(NULL); printf("Current time is (UTC): %s\n\r", ctime(&ctTime)); Host server(IpAddr(192.168.1.4), 123, "0.uk.pool.ntp.org"); // fails here ntp.setTime(server); ctTime = time(NULL); printf("Time is now (UTC): %s\n\r", ctime(&ctTime)); return 0; } int main() { Base::add_rpc_class<DigitalOut>(); printf("Setting up...\n"); EthernetErr ethErr = eth.setup(); if(ethErr) { printf("Error %d in setup.\n", ethErr); return -1; } printf("Setup OK\n"); // FSHandler::mount("/webfs", "/files"); //Mount /wwww path on /files web path - this has no meaning FSHandler::mount("/webfs", "/"); //Mount /wwww path on web root path // svr.addHandler<SimpleHandler>("/"); hard code for Hello world svr.addHandler<RPCHandler>("/rpc"); // sets up the remote procedure call handler // svr.addHandler<FSHandler>("/files");// this does not see the subdirectory svr.addHandler<FSHandler>("/"); //Default handler svr.bind(80); printf("Listening...\n\r"); loadTime(); Timer tm; tm.start(); updateVolts(); //Listen indefinitely while(true) { Net::poll(); if(tm.read()>2.0) { led1=!led1; //Show that we are alive // writing to this file continually updates the drive as attached as a usb drive to the host and generates errors so not good // and even at 2 second interval the auto play continually brings up windows // updateVolts(); tm.start(); } } return 0; }