/// <summary> /// Configure and enable the Wireless station interface /// </summary> /// <param name="ssid"></param> /// <param name="password"></param> /// <returns></returns> public static bool Configure(string ssid, string password) { // And we have to force connect once here even for a short time var success = WiFiNetworkHelper.ConnectDhcp(ssid, password, token: new CancellationTokenSource(10000).Token); Debug.WriteLine($"Connection is {success}"); Wireless80211Configuration wconf = GetConfiguration(); wconf.Options = Wireless80211Configuration.ConfigurationOptions.AutoConnect | Wireless80211Configuration.ConfigurationOptions.Enable; wconf.SaveConfiguration(); return(true); }
public static void Main() { Debug.WriteLine("Waiting for network up and IP address..."); bool success; CancellationTokenSource cs = new(60000); #if HAS_WIFI success = WiFiNetworkHelper.ConnectDhcp(MySsid, MyPassword, requiresDateTime: true, token: cs.Token); #else success = NetworkHelper.SetupAndConnectNetwork(cs.Token, true); #endif if (!success) { Debug.WriteLine($"{DateTime.UtcNow} Can't get a proper IP address and DateTime, error: {NetworkHelper.Status}."); if (NetworkHelper.HelperException != null) { Debug.WriteLine($"ex: {NetworkHelper.HelperException}"); } return; } else { Debug.WriteLine($"{DateTime.UtcNow} Network connected"); } // get host entry for How's my SSL test site IPHostEntry hostEntry = Dns.GetHostEntry("httpbin.org"); // need an IPEndPoint from that one above IPEndPoint ep = new IPEndPoint(hostEntry.AddressList[0], 80); Debug.WriteLine($"{DateTime.UtcNow} Opening socket...{hostEntry.AddressList[0]} "); using (Socket mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { try { Debug.WriteLine("Connecting..."); // connect socket mySocket.Connect(ep); byte[] buffer = Encoding.UTF8.GetBytes("GET / HTTP/1.0\r\n\r\n"); mySocket.Send(buffer); Debug.WriteLine($"Wrote {buffer.Length} bytes"); // set up buffer to read data from socket buffer = new byte[1024]; // trying to read from socket int bytes = mySocket.Receive(buffer); Debug.WriteLine($"Read {bytes} bytes"); if (bytes > 0) { // we have data! // output as string Debug.WriteLine(new String(Encoding.UTF8.GetChars(buffer))); } } catch (SocketException ex) { Debug.WriteLine($"** Socket exception occurred: {ex.Message} error code {ex.ErrorCode}!**"); } catch (Exception ex) { Debug.WriteLine($"** Exception occurred: {ex.Message}!**"); } finally { Debug.WriteLine("Closing socket"); mySocket.Close(); } } Thread.Sleep(Timeout.Infinite); }
public static void Main() { Debug.WriteLine("Welcome to WiFI Soft AP world!"); var gpioController = new GpioController(); GpioPin setupButton = gpioController.OpenPin(SETUP_PIN, PinMode.InputPullUp); // If Wireless station is not enabled then start Soft AP to allow Wireless configuration // or Button pressed if (!Wireless80211.IsEnabled() || (setupButton.Read() == PinValue.High)) { Wireless80211.Disable(); if (WirelessAP.Setup() == false) { // Reboot device to Activate Access Point on restart Debug.WriteLine($"Setup Soft AP, Rebooting device"); Power.RebootDevice(); } Debug.WriteLine($"Running Soft AP, waiting for client to connect"); Debug.WriteLine($"Soft AP IP address :{WirelessAP.GetIP()}"); // Link up Network event to show Stations connecting/disconnecting to Access point. //NetworkChange.NetworkAPStationChanged += NetworkChange_NetworkAPStationChanged; // Now that the normal Wifi is deactivated, that we have setup a static IP // We can start the Web server server.Start(); } else { Debug.WriteLine($"Running in normal mode, connecting to Access point"); var conf = Wireless80211.GetConfiguration(); bool success; // For devices like STM32, the password can't be read if (string.IsNullOrEmpty(conf.Password)) { // In this case, we will let the automatic connection happen success = WiFiNetworkHelper.Reconnect(requiresDateTime: true, token: new CancellationTokenSource(60000).Token); } else { // If we have access to the password, we will force the reconnection // This is mainly for ESP32 which will connect normaly like that. success = WiFiNetworkHelper.ConnectDhcp(conf.Ssid, conf.Password, requiresDateTime: true, token: new CancellationTokenSource(60000).Token); } if (success) { Debug.WriteLine($"Connection is {success}"); Debug.WriteLine($"We have a valid date: {DateTime.UtcNow}"); } else { Debug.WriteLine($"Something wrong happened, can't connect at all"); } } // Just wait for now // Here you would have the reset of your program using the client WiFI link Thread.Sleep(Timeout.Infinite); }