/// <summary> /// Triggered when Internet availabilrt is changed or change in internet strength /// </summary> /// <param name="internetSpeed"></param> private async void AvailabilityChanged(InternetSpeed internetSpeed) { //ToDo:find alternative for InternetSpeed.Unknown if (internetSpeed == InternetSpeed.Unknown) { return; } if (isTaskRunning && InternetSpeedDetected != internetSpeed && internetSpeed != InternetSpeed.NoInternet) { //Do not hide message if No Internet is the status //Make sure UI thread is causing property changed event await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow .Dispatcher .RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { InternetConnectivityMessageVisible = false; }); isTaskRunning = false; } else if (isTaskRunning || InternetSpeedDetected == internetSpeed && InternetSpeedDetected == InternetSpeed.NoInternet) { //Make sure UI thread is causing property changed event await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow .Dispatcher .RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { InternetConnectivityMessageVisible = true; }); return; } //Make sure UI thread is causing property changed event await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow .Dispatcher .RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { switch (internetSpeed) { case InternetSpeed.NoInternet: InternetSpeedDetected = InternetSpeed.NoInternet; break; case InternetSpeed.VeryPoorInternet: InternetSpeedDetected = InternetSpeed.VeryPoorInternet; break; case InternetSpeed.SlowInternet: InternetSpeedDetected = InternetSpeed.SlowInternet; break; case InternetSpeed.AverageInternet: InternetSpeedDetected = InternetSpeed.AverageInternet; break; case InternetSpeed.VeryGoodInternet: InternetSpeedDetected = InternetSpeed.VeryGoodInternet; break; default: InternetSpeedDetected = InternetSpeed.Unknown; break; } ; }); }
private void timer1_Tick(object sender, EventArgs e) { var ListDisk = new List <diskDrive>(); var dataCpu = new Processor(); var dataGpu = new Graphic(); var dataRam = new Ram(); var dataInternetSpeed = new InternetSpeed(); foreach (var hardware in thisComputer.Hardware) { hardware.Update(); /*---------------------------------CPU---------------------------------*/ if (hardware.HardwareType == HardwareType.Cpu) { dataCpu.Name = hardware.Name; foreach (var sensor in hardware.Sensors) { if (sensor.SensorType == SensorType.Load && sensor.Name == "CPU Total") { dataCpu.Load = Convert.ToInt32(sensor.Value.Value); } if (sensor.SensorType == SensorType.Temperature && sensor.Name == "CPU Package") { dataCpu.Temp = Convert.ToInt32(sensor.Value.Value); } } } /*---------------------------------GPU---------------------------------*/ if (hardware.HardwareType == HardwareType.GpuAmd || hardware.HardwareType == HardwareType.GpuNvidia) { dataGpu.Name = hardware.Name; foreach (var sensor in hardware.Sensors) { if (sensor.SensorType == SensorType.Load && sensor.Name == "GPU Core") { dataGpu.Load = Convert.ToInt32(sensor.Value.Value); } if (sensor.SensorType == SensorType.Temperature && sensor.Name == "GPU Core") { dataGpu.Temp = Convert.ToInt32(sensor.Value.Value); } if (sensor.SensorType == SensorType.Fan && sensor.Name == "GPU Fan") { dataGpu.Fan = Convert.ToInt32(sensor.Value.Value); } if (sensor.SensorType == SensorType.Control && sensor.Name == "GPU Fan") { dataGpu.FanLoad = Convert.ToInt32(sensor.Value.Value); } } } /*---------------------------------RAM---------------------------------*/ if (hardware.HardwareType == HardwareType.Memory) { foreach (var sensor in hardware.Sensors) { if (sensor.SensorType == SensorType.Load && sensor.Name == "Memory") { dataRam.RamLoad = Convert.ToInt32(sensor.Value.Value); } if (sensor.SensorType == SensorType.Data && sensor.Name == "Memory Used") { dataRam.RamUse = Convert.ToInt32(sensor.Value.Value); } if (sensor.SensorType == SensorType.Data && sensor.Name == "Memory Available") { int ramAva = Convert.ToInt32(sensor.Value.Value); dataRam.RamTotal = ramAva + dataRam.RamUse; } } } /*---------------------------------Connection---------------------------------*/ if (hardware.HardwareType == HardwareType.Network) { foreach (var sensor in hardware.Sensors) { if (sensor.SensorType == SensorType.Throughput && sensor.Name == "Upload Speed") { dataInternetSpeed.UpSpeed = Math.Round(sensor.Value.Value, 1) / 1048576; } if (sensor.SensorType == SensorType.Throughput && sensor.Name == "Download Speed") { dataInternetSpeed.DownloadSpeed = Math.Round(sensor.Value.Value, 1) / 1048576; } } } /*---------------------------------DISK---------------------------------*/ if (hardware.HardwareType == HardwareType.Storage) { int use = 0, load = 0, temp = 0; foreach (ISensor sensor in hardware.Sensors) { if (sensor.SensorType == SensorType.Load && sensor.Name == "Used Space") { use = Convert.ToInt32(sensor.Value.GetValueOrDefault()); } if (sensor.SensorType == SensorType.Load && sensor.Name == "Total Activity") { load = Convert.ToInt32(sensor.Value.GetValueOrDefault()); } if (sensor.SensorType == SensorType.Temperature && sensor.Name == "Temperature") { temp = Convert.ToInt32(sensor.Value.GetValueOrDefault()); } } var disk = new diskDrive(); disk.Name = hardware.Name; disk.Use = use; disk.Load = load; disk.Temp = temp; ListDisk.Add(disk); } /*---------------------------------Display---------------------------------*/ grCPU.Text = dataCpu.Name; txtLoadCPU.Text = dataCpu.Load.ToString() + " %"; txtTempCPU.Text = dataCpu.Temp.ToString() + " °C"; grGPU.Text = dataGpu.Name; txtLoadGPU.Text = dataGpu.Load.ToString() + " %"; txtTempGPU.Text = dataGpu.Temp.ToString() + " °C"; txtFanGPU.Text = dataGpu.Fan.ToString() + " RPM"; txtTotalRam.Text = dataRam.RamTotal.ToString() + " GB"; txtRamUse.Text = dataRam.RamUse.ToString() + " GB"; txtRamLoad.Text = dataRam.RamLoad.ToString() + " %"; txtDown.Text = dataInternetSpeed.DownloadSpeed.ToString("F1") + " MB/s"; txtUp.Text = dataInternetSpeed.UpSpeed.ToString("F1") + " MB/s"; //int i = 1; //foreach(var item in ListDisk) //{ // i++; // int Index = KiemTraTonTai(tabControl2, item[i].Name); // if (Index >= 0) // { // break; // } // else // { // TabPage TabPage = new TabPage { Text = item.Name }; // tabControl2.TabPages.Add(TabPage); // // tabControl2.SelectedTab = TabPage; // } //} for (int i = 0; i < ListDisk.Count; i++) { bool Index = KiemTraTonTai(tabControl2, ListDisk[i].Name); if (Index) { // break; } else { TabPage TabPageDisk = new TabPage { Text = ListDisk[i].Name }; Label diskName = new Label(); diskName.Width = 200; // diskName.BackColor(Color.Red); diskName.Text = ListDisk[i].Name; TabPageDisk.Controls.Add(diskName); tabControl2.TabPages.Add(TabPageDisk); // tabControl2.SelectedTab = TabPage; //tabControl2.Dock = DockStyle.; } } /*---------------------------------Send DATA---------------------------------*/ } Infomation info = new Infomation { CPU = dataCpu, GPU = dataGpu, RAM = dataRam, Speed = dataInternetSpeed, disk = ListDisk }; string obj = JsonConvert.SerializeObject(info); if (lblWIFIStatus.Text == "Connected") { try { NetworkStream stream = client.GetStream(); byte[] data = Encoding.ASCII.GetBytes(obj + "\r\n"); stream.Write(data, 0, data.Length); } catch (Exception) { AppIcon.ShowBalloonTip(5000, "Mất kêt nối", "Kiểm tra lại server", ToolTipIcon.Warning); txtIP.Enabled = true; timer1.Enabled = false; btnConnectWIFI.Text = "Connect"; lblWIFIStatus.Text = "Disconnected"; lblWIFIStatus.ForeColor = Color.Red; client.Close(); client = new TcpClient(); } } if (lblStatusWired.Text == "Connected") { //a = dataCPU.Name + "," + dataCPU.Load + "," + dataCPU.Temp + "," + dataGPU.Name + "," + dataGPU.Load + "," + dataGPU.Temp + "," + dataRam.Use + "," + dataNet.Speed + "*"; serialPort1.Write(a); serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(Data); } }
/// <summary> /// Async Thread to check internet speed and notify user based on internet speed /// </summary> private async void CheckInternetStregthPeriodically() { try { if (await IsInternetAvailable() || NetworkStrengthChanged != null) { var currentInternetStrength = InternetSpeed.Unknown; //check internet speed var internetSpeedbySocket = await CheckInternetSpeedSocketAsync(); var internetSpeedbasedOnSignal = await CheckInternetSpeedSignalAsync(); switch (internetSpeedbasedOnSignal) { case InternetSpeed.VeryGoodInternet: if (internetSpeedbySocket == InternetSpeed.VeryGoodInternet || internetSpeedbySocket == InternetSpeed.AverageInternet) { currentInternetStrength = InternetSpeed.VeryGoodInternet; } else if (internetSpeedbySocket == InternetSpeed.SlowInternet || internetSpeedbySocket == InternetSpeed.VeryPoorInternet) { currentInternetStrength = InternetSpeed.SlowInternet; } else if (internetSpeedbySocket == InternetSpeed.NoInternet) { currentInternetStrength = InternetSpeed.VeryPoorInternet; } break; case InternetSpeed.AverageInternet: if (internetSpeedbySocket == InternetSpeed.VeryGoodInternet || internetSpeedbySocket == InternetSpeed.AverageInternet) { currentInternetStrength = InternetSpeed.AverageInternet; } else if (internetSpeedbySocket == InternetSpeed.SlowInternet) { currentInternetStrength = InternetSpeed.SlowInternet; } else if (internetSpeedbySocket == InternetSpeed.VeryPoorInternet || internetSpeedbySocket == InternetSpeed.NoInternet) { currentInternetStrength = InternetSpeed.VeryPoorInternet; } break; case InternetSpeed.SlowInternet: if (internetSpeedbySocket == InternetSpeed.VeryGoodInternet || internetSpeedbySocket == InternetSpeed.AverageInternet) { currentInternetStrength = InternetSpeed.AverageInternet; } else if (internetSpeedbySocket == InternetSpeed.SlowInternet) { currentInternetStrength = InternetSpeed.SlowInternet; } else if (internetSpeedbySocket == InternetSpeed.VeryPoorInternet || internetSpeedbySocket == InternetSpeed.NoInternet) { currentInternetStrength = InternetSpeed.VeryPoorInternet; } break; case InternetSpeed.VeryPoorInternet: if (internetSpeedbySocket == InternetSpeed.VeryGoodInternet || internetSpeedbySocket == InternetSpeed.AverageInternet || internetSpeedbySocket == InternetSpeed.SlowInternet) { currentInternetStrength = InternetSpeed.SlowInternet; } else if (internetSpeedbySocket == InternetSpeed.VeryPoorInternet || internetSpeedbySocket == InternetSpeed.NoInternet) { currentInternetStrength = InternetSpeed.VeryPoorInternet; } break; case InternetSpeed.NoInternet: if (internetSpeedbySocket == InternetSpeed.VeryGoodInternet || internetSpeedbySocket == InternetSpeed.AverageInternet || internetSpeedbySocket == InternetSpeed.SlowInternet) { currentInternetStrength = InternetSpeed.VeryPoorInternet; } else if (internetSpeedbySocket == InternetSpeed.VeryPoorInternet || internetSpeedbySocket == InternetSpeed.NoInternet) { currentInternetStrength = InternetSpeed.NoInternet; } break; } ; if (previousNetworkStrength != currentInternetStrength) { try { NetworkStrengthChanged?.Invoke(currentInternetStrength); previousNetworkStrength = currentInternetStrength; } catch { } } } else { stopPeriodicThread = true; } } catch (Exception exception) { Debug.WriteLine("Exception in CheckInternetStrengthPeriodically: " + exception.Message); } }