Acquire Sensor data and email
Dependencies: C12832_lcd EthernetInterface LM75B NTPClient SimpleSMTPClient TextLCD USBHost mbed
Fork of USBHost-MSD_HelloWorld by
main.cpp
- Committer:
- nagarajbatta
- Date:
- 2013-09-20
- Revision:
- 10:0902b3dc4d96
- Parent:
- 9:3ca15106a7d1
File content as of revision 10:0902b3dc4d96:
#include "mbed.h" #include "USBHostMSD.h" #include "LM75B.h" #include "EthernetInterface.h" #include "NTPClient.h" #include "SimpleSMTPClient.h" #include "TextLCD.h" //#include "C12832_lcd.h" #define DOMAIN "comcast.net" #define SERVER "smtp.comcast.net" #define PORT "587" //25 or 587,465(OutBound Port25 Blocking ) #define USER "ramyanagaraj" #define PWD "Abhi#123" #define FROM_ADDRESS "ramyanagaraj@comcast.net" DigitalOut led(LED1); LM75B tmp(p28,p27); //DigitalIn center(p14); //C12832_LCD screen; Ticker sense; int grab = 0; InterruptIn center_button(p14); // TO_ADDRESS (Of some address is possible.) // to-user1@domain, to-user2@domain, to-user3@domain .... // The TO_ADDRESS are less than 128 characters. #define TO_ADDRESS "ramyanagaraj@comcast.net" #define SUBJECT "Sensor Data in USB" TextLCD lcd(p24, p26, p27, p28, p29, p30); /*void CENTER_ISR(){ //resets the metronome at beat rate 60 grab = 1; } */ void msd_task(void const *) { //if (grab) { USBHostMSD msd("usb"); int i = 0; static long filesize; static long last_filesize = 0; #define MAX_FILESIZE 1000000L //float temp; while(1) { // try to connect a MSD device while(!msd.connect()) { Thread::wait(500); printf("waiting\n"); } // in a loop, append a file // if the device is disconnected, we try to connect it again while(1) { // append a file // Check Last file size before appending? if( last_filesize >= MAX_FILESIZE ) { FILE * fp = fopen("/usb/text1.txt", "w"); // Create of make sure it is new. } else { FILE * fp = fopen("/usb/text1.txt", "a"); } // Get current file size FILE * fp = fopen("/usb/text1.txt", "a"); fseek(fp,0,SEEK_END); filesize=ftell(fp); printf("the file's length is %1dB\n",filesize); if (fp != NULL) { fprintf(fp, "Hello fun SD Card World: %d!\r\n", i++); fprintf(fp, "C=%.2f \tF=%.2f\n",tmp.read(),(1.8)*tmp.read()+32); //temp = tmp.read(); //fprintf(fp, %d, i++,); //fprintf(fp,"\r\n%f,", temp); //fprintf(fp, "Goodbye World!\r\n"); printf("Goodbye World!\r\n"); fclose(fp); } else { printf("FILE == NULL\r\n"); } Thread::wait(500); // if device disconnected, try to connect again if (!msd.connected()) break; } } } int main() { /*screen.cls(); screen.locate(0,0); screen.printf("Press Center Button to Acq");*/ //sense.attach(&temp, 1); //center_button.rise(&CENTER_ISR); int t; unsigned char data[120*160]; unsigned char c; long length; EthernetInterface eth; char strTimeMsg[16]; lcd.cls(); printf("\n\n/* SimpleMTPClient library demonstration */\n"); printf("Setting up ...\n"); eth.init(); eth.connect(); printf("Connected OK\r\n"); // IP Address printf("IP Address is %s\r\n", eth.getIPAddress()); lcd.locate(0,1); lcd.printf("%s", eth.getIPAddress()); // NTP Client printf("NTP setTime...\r\n"); NTPClient ntp; ntp.setTime("pool.ntp.org"); time_t ctTime = time(NULL)- 25200; // PST printf("\nTime is now (PST): %d %s\r\n", ctTime, ctime(&ctTime)); strftime(strTimeMsg,16,"%y/%m/%d %H:%M",localtime(&ctTime)); lcd.locate(0,0); lcd.printf("[%s]",strTimeMsg); SimpleSMTPClient smtp; int ret; char msg[]="USB Sensor Data"; //t = tmp.read(); smtp.setFromAddress(FROM_ADDRESS); smtp.setToAddress(TO_ADDRESS); smtp.setMessage(SUBJECT,msg); smtp.addMessage("TEST TEST TEST\r\n"); FILE * fp = fopen("/usb/text1.txt", "r"); if(fp==NULL) { printf("file not found!\n"); } else { fseek(fp,0,SEEK_END); length=ftell(fp); printf("the file's length is %1dB\n",length); } fseek(fp,0,SEEK_SET); // Seek back to beginning of ile in case ftell moved the file pointer to the end? char *emailtextbuffer = (char*) malloc(sizeof(char)*(length+1)); // Adding one to include the NULL character at the end. while (!feof(fp)){ // while not end of file c=fgetc(fp); *emailtextbuffer++ = c; // save char into buffer //emailtextbuffer++; } *emailtextbuffer = NULL; fclose(fp); smtp.addMessage(emailtextbuffer); //smtp.addMessage("C=%.2f \tF=%.2f\n",tmp.read(),(1.8)*tmp.read()+32); ret = smtp.sendmail(SERVER, USER, PWD, DOMAIN,PORT,SMTP_AUTH_PLAIN); if (ret) { printf("E-mail Transmission Error\r\n"); } else { printf("E-mail Transmission OK\r\n"); } Thread msdTask(msd_task, NULL, osPriorityNormal, 1024 * 4); while(1) { led=!led; Thread::wait(500); } free(emailtextbuffer); }