Part 1 of our ECE 4180 Final Project
Dependencies: 4DGL-uLCD-SE EthernetInterface MODSERIAL NTPClient mbed-rtos mbed
weather.cpp
- Committer:
- mohit1234
- Date:
- 2015-05-01
- Revision:
- 0:9fa2874be5e4
File content as of revision 0:9fa2874be5e4:
#include <string> #include "weather.h" #include "EthernetInterface.h" #include "rtos.h" #include <sstream> #include "mbed.h" #include <vector> #include <functional> #include <iostream> using namespace std; weatherInfo currentWeather; void split(const string& s, char c, vector<string>& v) { string::size_type i = 0; string::size_type j = s.find(c); while (j != string::npos) { v.push_back(s.substr(i, j-i)); i = ++j; j = s.find(c, j); if (j == string::npos) v.push_back(s.substr(i, s.length())); } } weatherInfo getWeatherInfo() { TCPSocketConnection sock; sock.connect("ece4180.cloudapp.net", 80); //sock.connect("google.com", 80); char http_cmd[] = "GET /weather.php HTTP/1.0\n\n"; sock.send_all(http_cmd, sizeof(http_cmd)-1); char buffer[300]; int ret; while (true) { ret = sock.receive(buffer, sizeof(buffer)-1); if (ret <= 0) break; buffer[ret] = '\0'; } sock.close(); vector<string> v; string s(buffer); split(s, '|', v); currentWeather.zipcode = v[1].c_str(); currentWeather.tempC = atof(v[2].c_str()); currentWeather.tempF = (9.0*currentWeather.tempC/5.0) + 32.0; currentWeather.condition = v[3]; currentWeather.clouds = atof(v[4].c_str()); currentWeather.windSpeedKm = atof(v[5].c_str()); currentWeather.windSpeedMi = currentWeather.windSpeedKm/1.609344; return currentWeather; }