openhardwaremonitor получает только температуру GPU

Я пытаюсь получить показания температуры моего (nvidia) графического процессора из проекта aC#. Для этого уже есть решение, использующее файл DLL http://openhardwaremonitor.org/.

Это мой код:

using OpenHardwareMonitor.Hardware;

...

Computer myComputer = new Computer();
myComputer.GPUEnabled = true;
myComputer.Open();

foreach (var hardwareItem in myComputer.Hardware)
{
    if (hardwareItem.HardwareType == HardwareType.GpuNvidia)
    {     
       foreach (var sensor in hardwareItem.Sensors)
       {
           Console.WriteLine(sensor.Identifier.ToString() + ":" + sensor.Value.ToString());
       }                   
    }
}

Это приводит к следующему выводу:

/nvidiagpu/0/clock/0:
/nvidiagpu/0/clock/1:
/nvidiagpu/0/clock/2:
/nvidiagpu/0/load/3:1.324463

Это код для получения полного отчета об оборудовании:

Computer myComputer = new Computer();
myComputer.GPUEnabled = true;
myComputer.Open();
Console.Write(myComputer.GetReport());

Вот что я получил взамен:

    Открыть отчет о мониторе оборудования ---------------------------------------------- ---------------------------------- Версия: 0.7.1.0 ----------- -------------------------------------------------- ------------------- Common Language Runtime: 4.0.30319.42000 Операционная система: Microsoft Windows NT 10.0.15063.0 Тип процесса: 32-разрядный --------- -------------------------------------------------- --------------------- Датчики |
+- NVIDIA GeForce 840M (/nvidiagpu/0)
| +- Ядро графического процессора: (/nvidiagpu/0/clock/0)
| +- Память GPU: (/nvidiagpu/0/clock/1)
| +- Графический шейдер: (/nvidiagpu/0/clock/2)
| +- Память GPU: 1.32446 1.32446 1.32446 (/nvidiagpu/0/load/3)

-------------------------------------------------------------------------------- Параметры |
+- NVIDIA GeForce 840M (/nvidiagpu/0)

-------------------------------------------------------------------------------- Состояние библиотеки дисплея AMD: -1 - -------------------------------------------------- ---------------------------- Версия NVAPI: полная версия NVidia 1.10 Количество графических процессоров: 1 ---------- -------------------------------------------------- -------------------- Имя графического процессора Nvidia: NVIDIA GeForce 840M Индекс: 0 Версия драйвера: 382.05 Ветвь драйвера: r381_99-3 Идентификатор устройства: 0x134110DE Идентификатор подсистемы: 0x504217AA
RevisionID: 0xA2
ExtDeviceID: 0x1341 Датчик тепловых настроек [0]. Контроллер: GPU_INTERNAL
Sensor[0].DefaultMinTemp: 0
Sensor[0].DefaultMaxTemp: 127
Sensor[0].CurrentTemp: 41
Sensor[0]. Цель: тактовая частота GPU [8]: 405000 Часы [9]: 11 Часы [10]: 277778 Часы [11]: 1 Часы [30]: 810000 Часы [31]: 17 Часы [32]: 737678 Часы [33]: 25 Часы [34]: 793800 Часы [35]: 25 часов [36]: 648000 часов [37]: 9 часов [40]: 324000 часов [41]: 9 часов [44]: 108000 часов [45]: 1 часы [92]: 405000 часов [93]: 32 Кло ck[99]: 277778 Часы [100]: 32 Часы [169]: 810000 Часы [170]: 32 Часы [176]: 737678 Часы [177]: 15 Часы [178]: 91 Часы [183]: 793800 Часы [184]: 15 Часы [185]: 98 Часы [190]: 648000 Часы [191]: 32 Часы [204]: 324000 Часы [205]: 32 Часы [218]: 108000 Часы [219]: 32 Статус тахометра: NOT_SUPPORTED

P-States

Percentage[0]: 0
Percentage[1]: 0
Percentage[2]: 0
Percentage[3]: 0

Usage Usage[1]: 1
Usage[3]: 60
Usage[4]: ​​30
Usage[5]: 1 Использование [7]: 58 Использование [8]: 29 Использование [9]: 1 Использование [11]: 58 Использование [12]: 29 Использование [13]: 1 Использование [15]: 100 Использование [16]: 100 Информация о памяти настроек охлаждения [0]: 2097152 Значение [1]: 2069376 Значение [2]: 0 Значение [3]: 4150644 Значение [4]: ​​2069376 

Как вы можете видеть, показания температуры есть, но я не смог найти способ получить их программно. Очевидно, что я могу проанализировать возвращенную строку и получить показания температуры, но я чувствую себя очень плохо, делая это.

Был бы рад получить представление об этом.

1 ответ

Я думаю, что вы уже нашли решение. Если нет, то вот код.

foreach (var sensor in hardwareItem.Sensors)
{
    if (sensor.SensorType == SensorType.Temperature)
    {
        Console.WriteLine(sensor.Value.ToString());
        Console.WriteLine(sensor.Identifier.ToString() + ":" + sensor.Value.ToString());
    }
}
Другие вопросы по тегам