Как получить температуру GPU и материнской платы с помощью Open Hardware Monitor? - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь определить температуру процессора, графического процессора и материнской платы, используя код Open Hardware Monitor.Я наткнулся на действительно полезную страницу, которая очень хорошо объясняла и дала мне именно тот результат, который мне нужен, но только для температуры процессора.Вот ссылка: https://www.instructables.com/id/Using-Open-Hardware-Monitor-to-Get-CPU-Temperature/

Это именно тот тип учебника, который мне нужен, но для температуры GPU и материнской платы.До сих пор я пытался сделать следующее (он возвратил пустую строку для обоих):

public string getGraphicsTemp()
        {
            UpdateVisitor updateVisitor = new UpdateVisitor();
            Computer computer = new Computer();
            computer.Open();
            computer.GPUEnabled = true;
            computer.Accept(updateVisitor);
            string res = "";
            for (int i = 0; i < computer.Hardware.Length; i++)

            {
                if (computer.Hardware[i].HardwareType == HardwareType.GpuAti)

                {
                    for (int j = 0; j < computer.Hardware[i].Sensors.Length; j++)

                    {
                        if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Temperature) res = String.Concat(res, (computer.Hardware[i].Sensors[j].Name + ": " + computer.Hardware[i].Sensors[j].Value.ToString() + "ºC" + "\r"));
                    }

                }
            }
            computer.Close();
            return res;
        }

        public string getMotherboardTemp()
        {
            UpdateVisitor updateVisitor = new UpdateVisitor();
            Computer computer = new Computer();
            computer.Open();
            computer.MainboardEnabled= true;
            computer.Accept(updateVisitor);
            string res = "";
            for (int i = 0; i < computer.Hardware.Length; i++)

            {
                if (computer.Hardware[i].HardwareType == HardwareType.Mainboard)

                {
                    for (int j = 0; j < computer.Hardware[i].Sensors.Length; j++)

                    {
                        if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Temperature) res = String.Concat(res, (computer.Hardware[i].Sensors[j].Name + ": " + computer.Hardware[i].Sensors[j].Value.ToString() + "ºC" + "\r"));
                    }

                }
            }
            computer.Close();
            return res;
        }

Кроме того, вот код для части процессора, которая является единственной, которая работает до сих пор:

 public string getCPUTemp()
        {
            UpdateVisitor updateVisitor = new UpdateVisitor();
            Computer computer = new Computer();
            computer.Open();
            computer.CPUEnabled = true;
            computer.Accept(updateVisitor);
            string res = "";
            for (int i = 0; i < computer.Hardware.Length; i++)

            {
                if (computer.Hardware[i].HardwareType == HardwareType.CPU)

                {
                    for (int j = 0; j < computer.Hardware[i].Sensors.Length; j++)

                    {
                        if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Temperature) res = String.Concat(res, (computer.Hardware[i].Sensors[j].Name + ": " + computer.Hardware[i].Sensors[j].Value.ToString() + "ºC" + "\r"));
                    }

                }
            }

            computer.Close();
            return res;
        }

Заранее спасибо, если кто-нибудь может решить это.

...