Here is the code we have so far:
using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Threading; using Microsoft.SPOT; using Microsoft.SPOT.Hardware; using SecretLabs.NETMF.Hardware; using SecretLabs.NETMF.Hardware.NetduinoPlus; namespace CO2MonitoringUnit { public class Program { public static void Main() { AnalogInput ap = new AnalogInput(Pins.GPIO_PIN_A0); const int MaximumValue = 1024; const float AnalogReference = 3.3f; while (true) { int digVal = ap.Read(); float analogValue = (float)digVal / MaximumValue * AnalogReference; string thermValToFile = analogValue.ToString(); //Thread.Sleep(5000); Debug.Print(thermValToFile); writeToFile(thermValToFile); Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()[0].EnableDhcp(); WebServer webServer = new WebServer(); webServer.ListenForRequest(); } } public static void writeToFile(string s) { string fileName = @"\SD\file.txt"; FileStream fs = new FileStream(fileName, FileMode.Append, FileAccess.Write, FileShare.None, 512); StreamWriter sw = new StreamWriter(fs); sw.WriteLine(s); System.DateTime.Now.Year.Equals(2011); Debug.Print(System.DateTime.Now.Year.ToString()); sw.WriteLine(System.DateTime.Now.Date.ToString()); sw.WriteLine(System.DateTime.Now.ToLocalTime().ToString()); sw.Close(); fs.Close(); } } }
Here is the code that is running the web server:
using System; using System.Net; using System.Net.Sockets; using System.Threading; using Microsoft.SPOT; using Microsoft.SPOT.Hardware; using SecretLabs.NETMF.Hardware; using SecretLabs.NETMF.Hardware.NetduinoPlus; using System.IO; public class WebServer : IDisposable { //private string readString; private Socket socket = null; //open connection to onbaord led so we can blink it with every request private OutputPort led = new OutputPort(Pins.ONBOARD_LED, false); public WebServer() { //Initialize Socket class socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //Request and bind to an IP from DHCP server socket.Bind(new IPEndPoint(IPAddress.Any, 80)); //Debug print our IP address Debug.Print(Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()[0].IPAddress); //Start listen for web requests socket.Listen(10); ListenForRequest(); } public void ListenForRequest() { while (true) { using (Socket clientSocket = socket.Accept()) { //Get clients IP IPEndPoint clientIP = clientSocket.RemoteEndPoint as IPEndPoint; EndPoint clientEndPoint = clientSocket.RemoteEndPoint; //int byteCount = cSocket.Available; int bytesReceived = clientSocket.Available; if (bytesReceived > 0) { //Get request byte[] buffer = new byte[bytesReceived]; int byteCount = clientSocket.Receive(buffer, bytesReceived, SocketFlags.None); string request = new string(System.Text.Encoding.UTF8.GetChars(buffer)); Debug.Print(request); //Compose a response string response = fileHandler.readFromSD(); string header = "HTTP/1.0 200 OK\r\nContent-Type: text; charset=utf-8\r\nContent-Length: " + response.Length.ToString() + "\r\nConnection: close\r\n\r\n"; clientSocket.Send(System.Text.Encoding.UTF8.GetBytes(header), header.Length, SocketFlags.None); clientSocket.Send(System.Text.Encoding.UTF8.GetBytes(response), response.Length, SocketFlags.None); } } } } #region IDisposable Members ~WebServer() { Dispose(); } public void Dispose() { if (socket != null) socket.Close(); } #endregion }
Edited by Stefan, 25 October 2011 - 07:34 PM.
Added [code] tags