static void Main(string[] args) { //string buffer = "STATUS:3\r\n+CIPSTATUS:0,\"TCP\",\"74.125.133.94\",80,0\r\n+CIPSTATUS:1,\"TCP\",\"192.168.20.1\",80,0\r\n\r\nOK\r\n"; string buffer = "STATUS:3\r\n\r\nOK\r\n"; BrusDev.Text.RegularExpressions.Regex r = new BrusDev.Text.RegularExpressions.Regex(@"STATUS:[0-9]\r\n(\+CIPSTATUS:[^\r\n]+\r\n)*\r\n(OK)\r\n"); BrusDev.Text.RegularExpressions.Match m = r.Match(buffer); int connectionId; int clientConnectionId; int receivedBytes; int totalReceivedBytes; byte[] sendingBuffer; byte[] receivingBuffer; string remoteIPAddress; string connectionStatus; #if MF_FRAMEWORK Microsoft.SPOT.Hardware.OutputPort deviceSwitch = new Microsoft.SPOT.Hardware.OutputPort( SecretLabs.NETMF.Hardware.NetduinoPlus.Pins.GPIO_PIN_D2, false); #endif receivingBuffer = new byte[128]; using (SerialPort serialPort = new SerialPort("COM10", 9600, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One)) { serialPort.Open(); #if MF_FRAMEWORK deviceSwitch.Write(true); using (ESP8266ATModem modem = new ESP8266ATModem(serialPort)) #else using (ESP8266ATModem modem = new ESP8266ATModem(serialPort.BaseStream)) #endif { //modem.AccessPointName = "Vodafone-brusnet"; //modem.AccessPassword = "******"; modem.AccessPointName = "LeonardoRicerche"; modem.AccessPassword = "******"; modem.OpenDataConnection(); //remoteIPAddress = "192.168.10.1"; remoteIPAddress = "www.google.it"; connectionStatus = modem.GetIPConnectionStatus(0); modem.StartListening(1234); clientConnectionId = modem.Accept(); sendingBuffer = Encoding.UTF8.GetBytes("HELLO\r\n"); modem.SendData(clientConnectionId, sendingBuffer, 0, sendingBuffer.Length); totalReceivedBytes = 0; while ((receivedBytes = modem.ReceiveData(clientConnectionId, receivingBuffer, 0, receivingBuffer.Length)) > 0) { totalReceivedBytes += receivedBytes; //Debug.Print(new string(Encoding.UTF8.GetChars(receivingBuffer, 0, receivedBytes))); //modem.SendData(clientConnectionId, receivingBuffer, 0, receivedBytes); Debug.Print("ReceiveData > " + receivedBytes + "/" + totalReceivedBytes); } connectionId = modem.OpenIPConnection("TCP", remoteIPAddress, 80); connectionStatus = modem.GetIPConnectionStatus(connectionId); sendingBuffer = Encoding.UTF8.GetBytes("GET / HTTP/1.0\r\n\r\n"); modem.SendData(connectionId, sendingBuffer, 0, sendingBuffer.Length); totalReceivedBytes = 0; while ((receivedBytes = modem.ReceiveData(connectionId, receivingBuffer, 0, receivingBuffer.Length)) > 0) { totalReceivedBytes += receivedBytes; if (totalReceivedBytes < 1000) { Debug.Print(new string(Encoding.UTF8.GetChars(receivingBuffer, 0, receivedBytes))); } //modem.SendData(clientConnectionId, receivingBuffer, 0, receivedBytes); Debug.Print("ReceiveData > " + receivedBytes + "/" + totalReceivedBytes); } modem.CloseIPConnection(connectionId); modem.CloseDataConnection(); } } }