/// <summary> /// WiFiスキャンが完了したときのイベント /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void Wifi_AvailableNetworksChanged(WiFiAdapter sender, object e) { Debug.WriteLine("Wifi_AvailableNetworksChanged - get report"); // スキャンされたすべてのWiFiネットワークのレポートを取得 WiFiNetworkReport report = sender.NetworkReport; // ネットワークを探して列挙する foreach (WiFiAvailableNetwork net in report.AvailableNetworks) { // 見つかったすべてのネットワークを表示 Debug.WriteLine($"Net SSID :{net.Ssid}, BSSID : {net.Bsid}, rssi : {net.NetworkRssiInDecibelMilliwatts.ToString()}, signal : {net.SignalBars.ToString()}"); // 自分のネットワークの場合、接続する if (net.Ssid == MYSSID) { // すでに接続されている場合は切断します sender.Disconnect(); // ネットワークに接続する WiFiConnectionResult result = sender.Connect(net, WiFiReconnectionKind.Automatic, MYPASSWORD); // ステータス表示 if (result.ConnectionStatus == WiFiConnectionStatus.Success) { Debug.WriteLine("Connected to Wifi network"); } else { Debug.WriteLine($"Error {result.ConnectionStatus} connecting o Wifi network"); } } } }
private static void WifiAvailableNetworksChanged(WiFiAdapter sender, object e) { var wifiNetworks = sender.NetworkReport.AvailableNetworks; foreach (var net in wifiNetworks) { Debug.WriteLine($"SSID: {net.Ssid}, strength: {net.SignalBars}"); if (net.Ssid == MySsid) { if (_isConnected) { sender.Disconnect(); _isConnected = false; Thread.Sleep(3000); } // Connect to network WiFiConnectionResult result = sender.Connect(net, WiFiReconnectionKind.Automatic, MyPassword); // Display status if (result.ConnectionStatus == WiFiConnectionStatus.Success) { Debug.WriteLine($"Connected to Wifi network {net.Ssid}"); _isConnected = true; break; } else { Debug.WriteLine($"Error {result.ConnectionStatus} connecting to Wifi network"); } } } }
/// <summary> /// Event handler for when WiFi scan completes /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void Wifi_AvailableNetworksChanged(WiFiAdapter sender, object e) { Debug.WriteLine("Wifi_AvailableNetworksChanged - get report"); // Get Report of all scanned WiFi networks WiFiNetworkReport report = sender.NetworkReport; // Enumerate though networks looking for our network foreach (WiFiAvailableNetwork net in report.AvailableNetworks) { // Show all networks found Debug.WriteLine($"Net SSID :{net.Ssid}, BSSID : {net.Bsid}, rssi : {net.NetworkRssiInDecibelMilliwatts.ToString()}, signal : {net.SignalBars.ToString()}"); // If its our Network then try to connect if (net.Ssid == MYSSID) { // Disconnect in case we are already connected sender.Disconnect(); // Connect to network WiFiConnectionResult result = sender.Connect(net, WiFiReconnectionKind.Automatic, MYPASSWORD); // Display status if (result.ConnectionStatus == WiFiConnectionStatus.Success) { Debug.WriteLine("Connected to Wifi network"); } else { Debug.WriteLine($"Error {result.ConnectionStatus.ToString()} connecting o Wifi network"); } } } }
/// <summary> /// Отключиться от устройства /// </summary> public async void DisconnectAsync() { await Task.Run(() => { if (_wifiAdapter != null) { _wifiAdapter.Disconnect(); } }); _currentWiFi = null; _currentCredential = null; }
private async void OnItemClick(object sender, ItemClickEventArgs e) { var selectedNetwork = (WiFiNetworkDisplay)e.ClickedItem; WiFiReconnectionKind reconnectionKind = WiFiReconnectionKind.Automatic; WiFiConnectionResult result; if (selectedNetwork.AvailableNetwork.SecuritySettings.NetworkAuthenticationType == NetworkAuthenticationType.Open80211) { result = await firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind); ConnectResult(result); } else { if (selectedNetwork.ConnectivityLevel == "已连接") { firstAdapter.Disconnect(); await selectedNetwork.UpdateConnectivityLevel(); return; } if (selectedNetwork.Pwd.Length >= 8) { var credential = new PasswordCredential(); credential.Password = selectedNetwork.Pwd; result = await firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind, credential); ConnectResult(result); } else { var message = new PwdControl(async(x) => { var credential = new PasswordCredential(); credential.Password = x; result = await firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind, credential); ConnectResult(result); }); await message.ShowAsync(); } } }
public IAsyncOperation <OnboardingOffboardResult> OffboardAsync(AllJoynMessageInfo info) { return(Task.Run(() => { lock (_stateLock) { if (_state == OnboardingState.ConfiguredValidated || _state == OnboardingState.ConfiguredValidating) { _wlanAdapter.Disconnect(); } _state = OnboardingState.NotConfigured; _personalApSsid = null; _personalApPassword = null; _authType = AuthType.Any; _softAccessPoint?.Start(); } return OnboardingOffboardResult.CreateSuccessResult(); }).AsAsyncOperation()); }
public void DisconnectFromTelloWifi() { WiFiAdapter.Disconnect(); //await ScanForNetworks(); //var report = WiFiAdapter.NetworkReport; //var sfrNetwork = report.AvailableNetworks.First(availableNetwork => availableNetwork.Ssid.Equals(SfrSsid)); //WiFiAdapter.ConnectAsync(sfrNetwork, WiFiReconnectionKind.Manual); //var connectionResult = await WiFiAdapter.ConnectAsync(sfrNetwork, WiFiReconnectionKind.Manual); //if (connectionResult.ConnectionStatus == WiFiConnectionStatus.Success) //{ // Debug.WriteLine("Connected to SFR network with success"); //} //else //{ // Debug.WriteLine("Failed to reconnect to SFR network : " + connectionResult.ConnectionStatus.ToString()); //} }
async public Task ConnectToTelloWifi() { await InitializeFirstAdapter(); WiFiAdapter.Disconnect(); await ScanForNetworks(); var report = WiFiAdapter.NetworkReport; var telloNetwork = report.AvailableNetworks.First(availableNetwork => availableNetwork.Ssid.Equals(TelloSSID)); var connectionResult = await WiFiAdapter.ConnectAsync(telloNetwork, WiFiReconnectionKind.Manual); if (connectionResult.ConnectionStatus == WiFiConnectionStatus.Success) { Debug.WriteLine("Connected to Tello network with success"); } else { Debug.WriteLine("Failed to connect to Tello network : " + connectionResult.ConnectionStatus.ToString()); } }
async void device_AvailableNetworksChanged(WiFiAdapter sender, object args) { if (isEnter) { return; } isEnter = true; if (hasAutoPassResult) { return; } WiFiNetworkReport networkReport = sender.NetworkReport; await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() => { txtStatus.Visibility = Visibility.Collapsed; listWiFi.Items.Clear(); int remainingCount = App.WifiName.Count; //uint sigstrengthPassCnt = 0; //look for the requested network foreach (WiFiAvailableNetwork network in networkReport.AvailableNetworks) { // Remove duplicated SSID String strSsid = network.Ssid; if (!String.IsNullOrEmpty(strSsid)) { foreach (Customer item in listWiFi.Items) { if (item.Ssid.ToUpper() == network.Ssid.ToUpper()) { strSsid = String.Empty; break; } } } if (strSsid == string.Empty) { continue; } // Try to connect network if <ConnectionName> setting exists in SFTConfig.xml if (!isConnection && (network.Ssid.ToUpper() == App.WifiNameConnection.ToUpper())) { var connectioResult = await sender.ConnectAsync(network, WiFiReconnectionKind.Automatic); if (connectioResult.ConnectionStatus == WiFiConnectionStatus.Success) { isConnection = true; App.LogComment(network.Ssid + " : Connection OK!"); sender.Disconnect(); } } // Set signal strength image string image = String.Format(CultureInfo.CurrentCulture, "/Assets/Wifi{0}", (Application.Current.RequestedTheme == ApplicationTheme.Dark) ? "Dark" : "Light"); int signalStrength = network.SignalBars; if (signalStrength > 4) { signalStrength = 4; } if (signalStrength < 1) { signalStrength = 1; } signalStrength--; image += signalStrength.ToString(CultureInfo.CurrentCulture) + ".png"; // Set Authentication Type String authType = App.LoadString("Secure"); switch (network.SecuritySettings.NetworkAuthenticationType) { case NetworkAuthenticationType.Open80211: authType = App.LoadString("Open"); break; case NetworkAuthenticationType.None: authType = App.LoadString("Open"); break; case NetworkAuthenticationType.Unknown: authType = App.LoadString("Open"); break; } // convert from rssi to quality: https://msdn.microsoft.com/en-us/library/windows/desktop/ms706828(v=vs.85).aspx int quality = (Math.Min(Math.Max((int)network.NetworkRssiInDecibelMilliwatts, -100), -50) + 100) * 2; // mark 2.4G and 5G APs in the list string details = authType + ", " + App.LoadString("Signal") + " " + quality + "%" + ", " + PhyTypes[(int)network.PhyKind]; // Add a scanned network to list box listWiFi.Items.Add(new Customer(network.Ssid, details, image)); // App.LogComment("Available network: " + network.Ssid + ", " + authType + ", Bars=" + network.SignalBars.ToString(CultureInfo.CurrentCulture)); App.LogComment("Available network: " + network.Ssid + ", " + details + ", Bars=" + network.SignalBars.ToString(CultureInfo.CurrentCulture)); // Auto pass: check how many AP passed signal strength threshold value //if (curConfig.SigStrength_ThresholdCount > 0) //{ // if (network.SignalBars >= curConfig.SigStrength_ThresholdSigBar) // sigstrengthPassCnt++; //} // Auto pass if WiFi test meet auto pass critera: found all WiFi predefined name list if (remainingCount > 0) { bool isAboveThreshold = false; int qualityInPercentage = 0; if (curConfig.SigStrength_ThresholdSigQuality > 0) { qualityInPercentage = (Math.Min(Math.Max((int)network.NetworkRssiInDecibelMilliwatts, -100), -50) + 100) * 2; if (App.WifiName.Contains(network.Ssid) && qualityInPercentage >= curConfig.SigStrength_ThresholdSigQuality) { isAboveThreshold = true; } } else if (curConfig.SigStrength_ThresholdSigBar > 0) { if (App.WifiName.Contains(network.Ssid) && network.SignalBars >= curConfig.SigStrength_ThresholdSigBar) { remainingCount--; } } if (isAboveThreshold) { remainingCount--; App.LogComment(network.Ssid + " Found; Rssi=" + network.NetworkRssiInDecibelMilliwatts + "dBm(%" + qualityInPercentage + "), SigBar=" + network.SignalBars + "; PhyType=" + network.PhyKind); } } } // Enter Auto-Pass/Auto-Faill condition if one of <AvailableName>, <ConnectionName>, or <Threshold> setting exists in SFTConfig.xml if (App.WifiName.Count > 0 || !String.IsNullOrEmpty(App.WifiNameConnection) // || curConfig.SigStrength_ThresholdCount > 0 ) { hasAutoPassResult = true; // App.LogComment("Require " + curConfig.SigStrength_ThresholdCount + " AP that has SignalBar >= " + curConfig.SigStrength_ThresholdSigBar + ": Found " + sigstrengthPassCnt); if (remainingCount == 0 && isConnection) // && sigstrengthPassCnt >= curConfig.SigStrength_ThresholdCount) { App.ResultControl("btnPass", this.Name); } else { App.ResultControl("btnFail", this.Name); } } isEnter = false; }); }
private void DisconnectButton_Click(object sender, RoutedEventArgs e) { firstAdapter.Disconnect(); }
public void DisconnectWifi() { wifiAdapter.Disconnect(); }
private async void ConfirmButton_Click(object sender, RoutedEventArgs e) { string Pass = WiFiList[WiFiControl.SelectedIndex].Password; if (Pass != "" && Pass.Length >= 8) { WiFiList[WiFiControl.SelectedIndex].HideMessage(); (WiFiControl.ContainerFromItem(WiFiControl.SelectedItem) as ListViewItem).ContentTemplate = WiFiConnectingState; WiFiInfo Info = WiFiList[WiFiControl.SelectedIndex]; PasswordCredential Credential = new PasswordCredential { Password = Info.Password }; var ConnectResult = await WiFi.ConnectAsync(Info.GetWiFiAvailableNetwork(), Info.AutoConnect?WiFiReconnectionKind.Automatic : WiFiReconnectionKind.Manual, Credential); if (ConnectResult.ConnectionStatus == WiFiConnectionStatus.Success) { foreach (var WiFiInfo in from WiFiInfo in WiFiList where WiFiInfo.IsConnected == true select WiFiInfo) { WiFiInfo.ChangeConnectionStateAsync(false); } Info.HideMessage(); Info.ChangeConnectionStateAsync(true, true); (WiFiControl.ContainerFromItem(WiFiControl.SelectedItem) as ListViewItem).ContentTemplate = WiFiConnectedState; bool IsExist = false; foreach (var WiFiInfo in from WiFiInfo in StoragedWiFiInfoCollection where WiFiInfo.SSID == Info.Name select WiFiInfo) { if (WiFiInfo.Password != Info.Password) { await SQLite.GetInstance().UpdateWiFiDataAsync(Info.Name, Info.Password); } else if (WiFiInfo.Password == Info.Password) { IsExist = true; } if (WiFiInfo.AutoConnect != Info.AutoConnect) { await SQLite.GetInstance().UpdateWiFiDataAsync(Info.Name, Info.AutoConnect); } break; } if (!IsExist) { IsExist = false; StoragedWiFiInfoCollection.Add(new WiFiInDataBase(Info.Name, Info.Password, Info.AutoConnect ? "True" : "False")); await SQLite.GetInstance().SetWiFiDataAsync(Info.Name, Info.Password, Info.AutoConnect); } } else { WiFi.Disconnect(); (WiFiControl.ContainerFromItem(WiFiControl.SelectedItem) as ListViewItem).ContentTemplate = WiFiErrorState; Info.ShowMessage("连接失败"); } //连接完成后重新开始搜索 WiFiScanTimer.Tick += WiFiScanTimer_Tick; WiFiScanTimer.Start(); } else { WiFiList[WiFiControl.SelectedIndex].ShowMessage("密码必须非空且大于8位"); } }
public void Disconnect() { _wifiAdapter.Disconnect(); }
public void Disconnect() { adapter.Disconnect(); }
private void DisconnectButton_Click(object sender, RoutedEventArgs e) { wifiAdapter.Disconnect(); connectpanel.Visibility = Visibility.Collapsed; }
private async void DoWifiConnect(object sender, RoutedEventArgs e, bool pushButtonConnect) { var selectedNetwork = ResultsListView.SelectedItem as WiFiNetworkDisplay; if (selectedNetwork == null || firstAdapter == null) { rootPage.NotifyUser("Network not selected", NotifyType.ErrorMessage); return; } var ssid = selectedNetwork.AvailableNetwork.Ssid; if (string.IsNullOrEmpty(ssid)) { if (string.IsNullOrEmpty(selectedNetwork.HiddenSsid)) { rootPage.NotifyUser("Ssid required for connection to hidden network.", NotifyType.ErrorMessage); return; } else { ssid = selectedNetwork.HiddenSsid; } } WiFiReconnectionKind reconnectionKind = WiFiReconnectionKind.Manual; if (selectedNetwork.ConnectAutomatically) { reconnectionKind = WiFiReconnectionKind.Automatic; } Task <WiFiConnectionResult> didConnect = null; WiFiConnectionResult result = null; if (pushButtonConnect) { if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5, 0)) { didConnect = firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind, null, string.Empty, WiFiConnectionMethod.WpsPushButton).AsTask(); } } else { PasswordCredential credential = new PasswordCredential(); if (selectedNetwork.IsEapAvailable && selectedNetwork.UsePassword) { if (!String.IsNullOrEmpty(selectedNetwork.Domain)) { credential.Resource = selectedNetwork.Domain; } credential.UserName = selectedNetwork.UserName ?? ""; credential.Password = selectedNetwork.Password ?? ""; } else if (!String.IsNullOrEmpty(selectedNetwork.Password)) { credential.Password = selectedNetwork.Password; } if (selectedNetwork.IsHiddenNetwork) { // Hidden networks require the SSID to be supplied didConnect = firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind, credential, ssid).AsTask(); } else { didConnect = firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind, credential).AsTask(); } } SwitchToItemState(selectedNetwork, WifiConnectingState, false); if (didConnect != null) { result = await didConnect; } if (result != null && result.ConnectionStatus == WiFiConnectionStatus.Success) { rootPage.NotifyUser(string.Format("Successfully connected to {0}.", selectedNetwork.Ssid), NotifyType.StatusMessage); // refresh the webpage webViewGrid.Visibility = Visibility.Visible; toggleBrowserButton.Content = "Hide Browser Control"; refreshBrowserButton.Visibility = Visibility.Visible; ResultCollection.Remove(selectedNetwork); ResultCollection.Insert(0, selectedNetwork); ResultsListView.SelectedItem = ResultsListView.Items[0]; ResultsListView.ScrollIntoView(ResultsListView.SelectedItem); SwitchToItemState(selectedNetwork, WifiConnectedState, false); } else { // Entering the wrong password may cause connection attempts to timeout // Disconnecting the adapter will return it to a non-busy state if (result.ConnectionStatus == WiFiConnectionStatus.Timeout) { firstAdapter.Disconnect(); } rootPage.NotifyUser(string.Format("Could not connect to {0}. Error: {1}", selectedNetwork.Ssid, (result != null ? result.ConnectionStatus : WiFiConnectionStatus.UnspecifiedFailure)), NotifyType.ErrorMessage); SwitchToItemState(selectedNetwork, WifiConnectState, false); } // Since a connection attempt was made, update the connectivity level displayed for each foreach (var network in ResultCollection) { var task = network.UpdateConnectivityLevelAsync(); } }
private void Send(object sender, object e) #endif { timeTick = SEND_INTERVAL; if (client.Messages() == 0) return; #if _CREATE_WIFI_CONNECTION SetStatus("RequestAccessAsync"); var access = await WiFiAdapter.RequestAccessAsync(); if (access == WiFiAccessStatus.Allowed) { var wifiDevices = await DeviceInformation.FindAllAsync(WiFiAdapter.GetDeviceSelector()); if (wifiDevices?.Count > 0) { wifi = await WiFiAdapter.FromIdAsync(wifiDevices[0].Id); await WriteStatus(true); await client.SaveQueueAsync(); SetStatus("ScanAsync"); IAsyncAction a = wifi?.ScanAsync(); await a; await WriteStatus(false); if (a.Status == AsyncStatus.Completed && wifi?.NetworkReport?.AvailableNetworks?.Count > 0) { foreach (var network in wifi.NetworkReport.AvailableNetworks) { bool found = false; uint wlan = 0; for (uint i = 0; i < Access.Networks; i++) { if (network.Ssid == Access.SSID(i)) { wlan = i; found = true; break; } } if (found) { var passwordCredential = new PasswordCredential(); passwordCredential.Password = Access.WIFI_Password(wlan); SetStatus("ConnectAsync"); var result = await wifi.ConnectAsync(network, WiFiReconnectionKind.Automatic, passwordCredential); if (result.ConnectionStatus.Equals(WiFiConnectionStatus.Success)) { #endif try { AsyncActionCompletedHandler handler = (IAsyncAction asyncInfo, AsyncStatus asyncStatus) => { var ignored = Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { switch (asyncStatus) { case AsyncStatus.Completed: errorText.Text = client.Sent() + " Messages sent"; SetStatus("OK"); networkError = 0; break; case AsyncStatus.Canceled: case AsyncStatus.Error: errorText.Text = "Send: " + asyncInfo.ErrorCode; SetStatus("Error"); break; } if (rebootPending) reboot = true; #if _CREATE_WIFI_CONNECTION wifi.Disconnect(); wifi = null; #endif }); }; SetStatus("Sending messages"); client.SendMessagesAsync(handler); } catch (Exception ex) { Error("Send: " + ex.ToString() + " " + ex.Message + " " + ex.HResult); } #if _CREATE_WIFI_CONNECTION } else NoConnection(false, result.ConnectionStatus.ToString()); return; } } NoConnection(rebootPending || (++networkError == 5), Access.Ssid + " not found."); } else NoConnection(rebootPending || (++networkError == 5), "No wifi networks found " + a.Status.ToString()); } else NoConnection(true, "No wifi adapter found"); } else NoConnection(true, "Wifi access denied" + access.ToString()); #endif }