peony3000

Gadgeteer WiFi Weather Station 01

Apr 2nd, 2012
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.63 KB | None | 0 0
  1. using System;
  2. using System.Threading;
  3. using System.Xml;
  4. using Microsoft.SPOT;
  5. using Gadgeteer.Networking;
  6. using GT = Gadgeteer;
  7. using GTM = Gadgeteer.Modules;
  8. using Gadgeteer.Modules.GHIElectronics;
  9.  
  10. namespace Gadgeteer_Wifi_04
  11. {
  12.     public partial class Program
  13.     {
  14.         // create a time based event robot to trigger repeated tasks
  15.         GT.Timer timer = new GT.Timer(60000, GT.Timer.BehaviorType.RunContinuously);
  16.  
  17.         // This method is run when the mainboard is powered up or reset.  
  18.         void ProgramStarted()
  19.         {
  20.             // jump to the StartWiFi method that starts the WiFi
  21.             StartWiFi();
  22.  
  23.             // create a button watching robot to trigger things when the button is pressed
  24.             button.ButtonPressed += new Button.ButtonEventHandler(button_ButtonPressed);
  25.            
  26.             // set the timer robot so it fires off a tick event
  27.             timer.Tick += new GT.Timer.TickEventHandler(timer_Tick);
  28.  
  29.             // print something so we know we have started
  30.             Debug.Print("Program Started");
  31.         }
  32.  
  33.         void timer_Tick(GT.Timer timer)
  34.         {
  35.             // what do we want to happen when the timer tick event fires
  36.             // get some xml from the internet
  37.             GetXmlFromWeb();
  38.         }
  39.  
  40.         void GetXmlFromWeb()
  41.         {
  42.             WebClient.GetFromWeb("http://www.google.com/ig/api?weather=02903").ResponseReceived += new HttpRequest.ResponseHandler(Program_ResponseReceived);
  43.         }
  44.  
  45.         void StartWiFi()
  46.         {
  47.             wifi.UseDHCP();
  48.             Gadgeteer.Modules.GHIElectronics.WiFi_RS21.WiFiNetworkInfo info = new WiFi_RS21.WiFiNetworkInfo();
  49.             info.SSID = "network_name";
  50.             info.SecMode = WiFi_RS21.SecurityMode.WEP;
  51.             info.networkType = WiFi_RS21.NetworkType.AccessPoint;
  52.             wifi.Join(info, "network_password");
  53.             wifi.NetworkDown += new GTM.Module.NetworkModule.NetworkEventHandler(wifi_NetworkDown);
  54.             wifi.NetworkUp += new GTM.Module.NetworkModule.NetworkEventHandler(wifi_NetworkUp);
  55.         }
  56.        
  57.         void wifi_NetworkDown(GTM.Module.NetworkModule sender, GTM.Module.NetworkModule.NetworkState state)
  58.         {
  59.             Debug.Print("network down: connecting....");
  60.             timer.Stop();
  61.         }
  62.  
  63.         void wifi_NetworkUp(GTM.Module.NetworkModule sender, GTM.Module.NetworkModule.NetworkState state)
  64.         {
  65.             Debug.Print("network up");
  66.             Debug.Print(wifi.NetworkSettings.IPAddress);
  67.             GetXmlFromWeb();
  68.             timer.Start();
  69.         }
  70.  
  71.         void Program_ResponseReceived(HttpRequest sender, HttpResponse response)
  72.         {
  73.             string elementHolder;
  74.                
  75.                 XmlReader reader = XmlReader.Create(response.Stream);
  76.  
  77.                 while (reader.Read())
  78.                 {
  79.                         switch (reader.NodeType)
  80.                         {
  81.                             case XmlNodeType.Element:
  82.                                 //Debug.Print("Element: " + reader.Name);
  83.                                 //if (reader.HasAttributes && reader.Name.Equals("current_conditions"))
  84.                                 if (reader.Name.Equals("current_conditions"))
  85.                                     {
  86.                                     reader.ReadToFollowing("condition");
  87.                                     reader.MoveToFirstAttribute();
  88.                                     Debug.Print("Today: " + reader.Value);
  89.                                     }
  90.                                 else if (reader.Name.Equals("forecast_conditions"))
  91.                                     {
  92.                                     reader.ReadToFollowing("day_of_week");
  93.                                     reader.MoveToFirstAttribute();
  94.                                     elementHolder = reader.Value;
  95.                                     reader.ReadToFollowing("condition");
  96.                                     reader.MoveToFirstAttribute();
  97.                                     Debug.Print(elementHolder + ": " + reader.Value);
  98.                                     }
  99.                                 break;
  100.                            
  101.                             case XmlNodeType.EndElement:
  102.                                 //Debug.Print("End of Element");
  103.                                 break;
  104.                         }
  105.  
  106.                 }
  107.          
  108.                 //Debug.Print(response.StatusCode);
  109.        
  110.         }
  111.  
  112.        
  113.  
  114.         void button_ButtonPressed(Button sender, Button.ButtonState state)
  115.         {
  116.             GetXmlFromWeb();
  117.         }
  118.  
  119.     }
  120. }
Advertisement
Add Comment
Please, Sign In to add comment