Как получить целую температуру ядра 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
}
}
}
}
}
}