As for the code, it can be summed up in 3 steps:
- Get/supply an IP address
- Send a HTTP request to the URI
- Handle the HTTP response
using Gadgeteer.Networking;
using NetworkModule = Gadgeteer.Modules.Module.NetworkModule;
using Gadgeteer;
namespace Demo
{
public partial class Program
{
void ProgramStarted()
{
//The other option is UseStaticIP
ethernet.UseDHCP();
//Set a handler for when the network is available
ethernet.NetworkUp += ethernet_NetworkUp;
}
void ethernet_NetworkUp(NetworkModule sender, NetworkModule.NetworkState state)
{
//Set the URI for the resource
var url = "http://i1072.photobucket.com/albums/w367/"
+ "M_J_O_N_E_S/MeGadgeteerSize_zps23202046.jpg?t=1373144748";
//Create a web request
var request = WebClient.GetFromWeb(url);
//This is async, so set the
//handler for when the response received
request.ResponseReceived += request_ResponseReceived;
//Send the request
request.SendRequest();
}
void request_ResponseReceived(HttpRequest sender, HttpResponse response)
{
if (response.StatusCode == "200")
{
//This only works if the bitmap is the
//same size as the screen it's flushing to
response.Picture.MakeBitmap().Flush();
}
else
{
//Show a helpful error message
lcd.SimpleGraphics.DisplayText("Request failed with status code " + response.StatusCode
, Resources.GetFont(Resources.FontResources.NinaB), Color.White, 0, 0);
lcd.SimpleGraphics.DisplayText("Response text: " + response.Text
, Resources.GetFont(Resources.FontResources.NinaB), Color.White, 0, 50);
}
}
}
}
Here's the result of the code:
And an example of when things don't go according to plan:
The web request can't only be used to download picture resources; if you request a run-of-the-mill HTML page, you are able to access the streamed response:
The code for this demo is available here on GitHub




No comments:
Post a Comment