peony3000

Gadgeteer WiFi OLED Screen

Apr 18th, 2012
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.24 KB | None | 0 0
  1. using System;
  2. using System.Threading;
  3. using Microsoft.SPOT;
  4. using Microsoft.SPOT.Presentation;
  5. using Microsoft.SPOT.Presentation.Controls;
  6. using Microsoft.SPOT.Presentation.Media;
  7. using Microsoft.SPOT.Touch;
  8. using System.Xml;
  9. using Gadgeteer.Networking;
  10. using GT = Gadgeteer;
  11. using GTM = Gadgeteer.Modules;
  12. using Gadgeteer.Modules.GHIElectronics;
  13. using Gadgeteer.Modules.Seeed;
  14.  
  15. namespace Gadgeteer_Oled_Screen_01
  16. {
  17.     public partial class Program
  18.     {
  19.         // This method is run when the mainboard is powered up or reset.  
  20.         void ProgramStarted()
  21.         {
  22.  
  23.             // jump to the StartWiFi method that starts the WiFi
  24.             StartWiFi();
  25.  
  26.             // create a button watching robot to fire off instrustions when the button is pressed
  27.             button.ButtonPressed += new Button.ButtonEventHandler(button_ButtonPressed);
  28.  
  29.             // print something so we know we have started
  30.             Debug.Print("Program Started");
  31.         }
  32.  
  33.         void button_ButtonPressed(Button sender, Button.ButtonState state)
  34.         {
  35.             GetXmlFromWeb();
  36.         }
  37.  
  38.         void StartWiFi()
  39.         {
  40.             wifi.UseDHCP();
  41.             Gadgeteer.Modules.GHIElectronics.WiFi_RS21.WiFiNetworkInfo info = new WiFi_RS21.WiFiNetworkInfo();
  42.             info.SSID = "network_name";
  43.             info.SecMode = WiFi_RS21.SecurityMode.WEP;
  44.             info.networkType = WiFi_RS21.NetworkType.AccessPoint;
  45.             wifi.Join(info, "network_password");
  46.             wifi.NetworkDown += new GTM.Module.NetworkModule.NetworkEventHandler(wifi_NetworkDown);
  47.             wifi.NetworkUp += new GTM.Module.NetworkModule.NetworkEventHandler(wifi_NetworkUp);
  48.         }
  49.  
  50.         void wifi_NetworkDown(GTM.Module.NetworkModule sender, GTM.Module.NetworkModule.NetworkState state)
  51.         {
  52.             Debug.Print("network down: connecting....");
  53.             clearOledDisplay();
  54.             printOledDisplay(0, "network down: connecting....");
  55.            
  56.         }
  57.  
  58.         void wifi_NetworkUp(GTM.Module.NetworkModule sender, GTM.Module.NetworkModule.NetworkState state)
  59.         {
  60.             Debug.Print("network up");
  61.             Debug.Print(wifi.NetworkSettings.IPAddress);
  62.             clearOledDisplay();
  63.             printOledDisplay(0, "Connected to WiFi");
  64.             printOledDisplay(1, wifi.NetworkSettings.IPAddress);
  65.             printOledDisplay(3, "Weather forecast? ");
  66.             printOledDisplay(4, "Press the button!");
  67.         }
  68.  
  69.         void clearOledDisplay()
  70.         {
  71.             oledDisplay.SimpleGraphics.Clear();
  72.         }
  73.  
  74.         void printOledDisplay(uint lineNumber, string displayMessage)
  75.         {
  76.             uint xPos = 0;
  77.             oledDisplay.SimpleGraphics.DisplayText(displayMessage, Resources.GetFont(Resources.FontResources.NinaB), GT.Color.White, xPos, lineNumber*12);
  78.         }
  79.  
  80.         void GetXmlFromWeb()
  81.         {
  82.             WebClient.GetFromWeb("http://www.google.com/ig/api?weather=02903").ResponseReceived += new HttpRequest.ResponseHandler(Program_ResponseReceived);
  83.         }
  84.        
  85.         void Program_ResponseReceived(HttpRequest sender, HttpResponse response)
  86.         {
  87.             string elementHolder;
  88.  
  89.             XmlReader reader = XmlReader.Create(response.Stream);
  90.            
  91.             clearOledDisplay();
  92.             uint lineNumberCount = 0;
  93.            
  94.             while (reader.Read())
  95.             {
  96.                
  97.                 switch (reader.NodeType)
  98.                 {
  99.                     case XmlNodeType.Element:
  100.                         //Debug.Print("Element: " + reader.Name);
  101.                         //if (reader.HasAttributes && reader.Name.Equals("current_conditions"))
  102.                         if (reader.Name.Equals("current_conditions"))
  103.                         {
  104.                             reader.ReadToFollowing("condition");
  105.                             reader.MoveToFirstAttribute();
  106.                             Debug.Print("Today: " + reader.Value);
  107.                             printOledDisplay(lineNumberCount, "Right now it is: ");
  108.                             lineNumberCount++;
  109.                             printOledDisplay(lineNumberCount, reader.Value);
  110.                         }
  111.                         else if (reader.Name.Equals("forecast_conditions"))
  112.                         {
  113.                             reader.ReadToFollowing("day_of_week");
  114.                             reader.MoveToFirstAttribute();
  115.                             elementHolder = reader.Value;
  116.                             reader.ReadToFollowing("condition");
  117.                             reader.MoveToFirstAttribute();
  118.                             Debug.Print(elementHolder + ": " + reader.Value);
  119.                             lineNumberCount++;
  120.                             printOledDisplay(lineNumberCount, elementHolder + ": ");
  121.                             lineNumberCount++;
  122.                             printOledDisplay(lineNumberCount, reader.Value);
  123.                         }
  124.                         break;
  125.  
  126.                     case XmlNodeType.EndElement:
  127.                         //Debug.Print("End of Element");
  128.                         break;
  129.                 }
  130.  
  131.             }
  132.  
  133.             //Debug.Print(response.StatusCode);
  134.  
  135.         }
  136.     }
  137. }
Advertisement
Add Comment
Please, Sign In to add comment