我正在参加Arduino微控制器课程,我正在研究我的最终项目:一个根据外壳温度工作的自动计算机冷却系统。
我无法使用以下来源获取我的NVIDIA GPU核心温度:this MSDN link或this NVIDIA link。如何获得GPU的温度值?
我对C#的了解是基本的,我无法从该手册的尾部或MSDN中的代码示例中找到答案。
答案 0 :(得分:4)
在经过长时间的搜索后,我会继续回答我自己的问题。我找到了一种获取数据的方法。
使用他们的开源链接中的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
}
}
}
}
}
}