Как получить целую температуру ядра NVIDIA?

Я учусь на микроконтроллере Arduino и работаю над своим последним проектом: автоматизированной компьютерной системой охлаждения, которая работает в зависимости от температуры корпуса.

Мне не удалось получить температуру ядра NVIDIA GPU, используя следующие источники: эту ссылку MSDN или эту ссылку NVIDIA. Как я могу получить значение температуры моего графического процессора?

Мои знания в C# являются базовыми, и я не мог разобраться с этим руководством или примерами кода в MSDN.

1 ответ

Решение

Я собираюсь ответить на свой вопрос после долгого поиска того, как это сделать, и я нашел способ получить данные.

Используя OpenHardwareMonitor.dll из их ссылок с открытым исходным кодом, я смог получить то, что мне нужно.

Это код, который я использовал в приложении Windows C# (это может быть не лучший способ сделать это, но он выполняет свою работу.

Надеюсь, кто-то найдет это полезным:

using OpenHardwareMonitor.Hardware;

,,,

public partial class mainWindow : Form
{

    Computer myComputer;

    public mainWindow()
    {
        InitializeComponent();

        myComputer = new Computer();
        myComputer.Open();
        myComputer.GPUEnabled = true;
        myComputer.CPUEnabled = true;
        foreach (var hardwareItem in myComputer.Hardware)
        {
            if (hardwareItem.HardwareType == HardwareType.GpuNvidia)
            {
                foreach (var sensor in hardwareItem.Sensors)
                {
                    if (sensor.SensorType == SensorType.Temperature)
                    {
                        GPUtemp.Text = String.Format(sensor.Value + "°C");
                    }
                }
            }
            if (hardwareItem.HardwareType == HardwareType.CPU)
            {
                foreach (var sensor in hardwareItem.Sensors)
                {
                    if (sensor.SensorType == SensorType.Temperature)
                    {
                        CPUtemp.Text = String.Format(sensor.Value + "°C");
                    }
                }
            }

        }
    }

    private void valueRefresh_Tick(object sender, EventArgs e)
    {
        myComputer = new Computer();
        myComputer.Open();
        myComputer.GPUEnabled = true;
        myComputer.CPUEnabled = true;
        foreach (var hardwareItem in myComputer.Hardware)
        {
            if (hardwareItem.HardwareType == HardwareType.GpuNvidia)
            {
                foreach (var sensor in hardwareItem.Sensors)
                {
                    if (sensor.SensorType == SensorType.Temperature)
                    {
                        GPUtemp.Text = String.Format(sensor.Value.ToString()); // write the value to a lable on the form
                    }
                }
            }
            if (hardwareItem.HardwareType == HardwareType.CPU)
            {
                foreach (var sensor in hardwareItem.Sensors)
                {
                    if (sensor.SensorType == SensorType.Temperature)
                    {
                        CPUtemp.Text = String.Format(sensor.Value.ToString());    // write the value to a lable on the form

                    }
                }
            }

        }
    }
}
Другие вопросы по тегам