Ejemplo n.º 1
0
        private void UpdateSenserData()
        {
            time_lbl.Text = DateTime.Now.ToString();
            UpdateVisitor updateVisitor = new UpdateVisitor();
            Computer      computer      = new Computer();

            computer.CPUEnabled = true;
            computer.GPUEnabled = true;
            computer.Open();
            computer.Accept(updateVisitor);

            foreach (IHardware hardware in computer.Hardware)
            {
                int ii = 0;
            }
            List <string> GPUNames = new List <string>();
            List <float>  GPUTemps = new List <float>();

            for (int i = 0; i < computer.Hardware.Length; i++)
            {
                //查找硬件类型为CPU
                if (computer.Hardware[i].HardwareType == HardwareType.CPU ||
                    computer.Hardware[i].HardwareType == HardwareType.GpuNvidia ||
                    computer.Hardware[i].HardwareType == HardwareType.GpuAti)
                {
                    for (int j = 0; j < computer.Hardware[i].Sensors.Length; j++)
                    {
                        //找到温度传感器
                        if (computer.Hardware[i].HardwareType == HardwareType.CPU)
                        {
                            if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Temperature)
                            {
                                senserMonitorData.CPUName = computer.Hardware[i].Name;
                                senserMonitorData.CPUtemp = (float)computer.Hardware[i].Sensors[j].Value;
                            }
                        }
                        //NV
                        if (computer.Hardware[i].HardwareType == HardwareType.GpuNvidia)
                        {
                            if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Temperature)
                            {
                                string nvName  = computer.Hardware[i].Name;
                                float  _nvTemp = (float)computer.Hardware[i].Sensors[j].Value;
                                GPUNames.Add(nvName);
                                GPUTemps.Add(_nvTemp);
                            }
                        }
                        //AMD
                        if (computer.Hardware[i].HardwareType == HardwareType.GpuAti)
                        {
                            if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Temperature && computer.Hardware[i].Sensors[j].Name.Contains("Hot Spot"))
                            {
                                string amdName  = computer.Hardware[i].Name;
                                float  _amdTemp = (float)computer.Hardware[i].Sensors[j].Value;
                                GPUNames.Add(amdName);
                                GPUTemps.Add(_amdTemp);
                            }
                        }
                    }
                }
                senserMonitorData.GPUName = GPUNames;
                senserMonitorData.GPUtemp = GPUTemps;
            }
        }