对于一个编程项目,我想从我的 CPU 和 GPU 访问温度读数。我将使用 C #。从各种论坛,我得到的印象是,您需要特定的信息和开发人员资源才能访问各种信息板。我有一个 MSI NF750-G55 板。MSI 的网站没有我正在寻找的任何信息。我尝试了他们的技术支持,并且与我交谈的代表表示他们没有任何此类信息。
有什么想法吗?
对于至少 CPU 方面的事情,你可以使用 WMI。
命名空间\ 对象是root\WMI, MSAcpi_ThermalZoneTemperature
样本代码:
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\WMI",
"SELECT * FROM MSAcpi_ThermalZoneTemperature");
ManagementObjectCollection collection =
searcher.Get();
foreach(ManagementBaseObject tempObject in collection)
{
Console.WriteLine(tempObject["CurrentTemperature"].ToString());
}
这将为您提供原始格式的温度。你必须从那里转换:
kelvin = raw / 10;
celsius = (raw / 10) - 273.15;
fahrenheit = ((raw / 10) - 273.15) * 9 / 5 + 32;
在 Windows 上进行硬件相关编码的最佳方法是使用WMI,这是 Microsoft 的Code Creator
工具,该工具将根据您正在寻找的内容为您创建代码硬件相关数据以及您要使用的.Net 语言。
目前支持的语言有:C# 、 Visual Basic 、 VB Script。
请注意,MSAcpi_ThermalZoneTemperature
不会提供 CPU 的温度,而是主板的温度。
您可以尝试使用开放式硬件监视器,尽管它不支持最新的处理器。
internal sealed cl CpuTemperatureReader : IDisposable
{
private readonly Computer _computer;
public CpuTemperatureReader()
{
_computer = new Computer { CPUEnabled = true };
_computer.Open();
}
public IReadOnlyDictionary<string, float> GetTemperaturesInCelsius()
{
var coreAndTemperature = new Dictionary<string, float>();
foreach (var hardware in _computer.Hardware)
{
hardware.Update(); //use hardware.Name to get CPU model
foreach (var sensor in hardware.Sensors)
{
if (sensor.SensorType == SensorType.Temperature && sensor.Value.HasValue)
coreAndTemperature.Add(sensor.Name, sensor.Value.Value);
}
}
return coreAndTemperature;
}
public void Dispose()
{
try
{
_computer.Close();
}
catch (Exception)
{
//ignore closing errors
}
}
}
从official source下载 zip,在项目中提取并添加对 OpenHardwareMonitorLib.dll 的引用。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(32条)