如何使用c#从Bios获取CPU温度信息?

时间:2010-09-01 02:51:25

标签: c# monitor temperature

如何使用c#从Bios获取CPU温度信息 我尝试了CPU temperature monitoring

中的代码

但没有运气。 'enumerator.Current'引发了异常。

我怎样才能做到这一点?感谢。

错误:

  

“这个系统不支持   必需的WMI对象(1) - 检查   异常文件\ r \ n不支持   \ r \ n \ r \ n at   System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus   errorCode)\ r \ n at   System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext(个)\ r \ n   在   CedarLogic.WmiLib.SystemStatistics.RefreshReadings()   在   d:\下载\ TempMonitorSrc \ TemperatureMonitorSln \ WmiLib \ SystemStatistics.cs:行   25 \ r \ n at   CedarLogic.WmiLib.SystemStatistics.get_CurrentTemperature()   在   d:\下载\ TempMonitorSrc \ TemperatureMonitorSln \ WmiLib \ SystemStatistics.cs:行   87 \ r \ n at   TemperatureMonitor.SystemTrayService.CheckSupport()   在   d:\下载\ TempMonitorSrc \ TemperatureMonitorSln \ TemperatureMonitor \ SystemTrayService.cs:行   260"

3 个答案:

答案 0 :(得分:2)

您需要支持许多不同的硬件传感器来收集温度数据。更好的方法是准备好使用这样的解决方案:

1)打开硬件监视器 - 开源.NET 2.0应用程序:

http://openhardwaremonitor.org/

2)Core Temp - 免费应用程序和.NET API获取温度数据:

http:// www.alcpu.com/CoreTemp/developers.html

答案 1 :(得分:1)

我知道这个帖子已经老了,但我想用一些不同的方法添加它。从主板上的I / O芯片上取下产品/型号,获取所述I / O芯片的数据表(我将使用ITE IT8783F芯片作为参考)。 查看环境控制器之类的内容并计算访问和读取端口。是的......你必须理解HEX,MSB和LSB,我不会在这里进行计算/解释(超出范围)。 现在,在这种情况下,访问端口是295,读取端口是296.在本节中进一步阅读,有一个环境控制器寄存器表。在这种情况下,CPU温度在寄存器2Ah(或0x2A)中。所以,我用来提取信息的VB / C#代码如下所示:

Private Function GetCPUTemp() As UInt32
    Dim tCpu As UInt32
    Dim stCpu As Short
    PortAccess.Outputb(&H295, &H2A)
    stCpu = PortAccess.Inputb(&H296)
    tCpu = CType(stCpu, UInt32)
    Return tCpu
End Function

现在,你只需要弄清楚你想用它做什么。请记住,如果您发现自己正在疯狂的数字,那么您要么从错误的寄存器中拉出来,要么可能需要实现比例因子(与电压读数一样)。这也应该在数据表中。

答案 2 :(得分:0)

我会推荐以下方法。有几个免费的应用程序监视CPU温度并显示它。尝试下载一些,然后分析应用程序,看看他们调用的方法,以发现它们的工作方式。也许他们对你现有的方法有着截然不同的方法。您也可以通过电子邮件发送电子邮件并询问他们是如何做到的......

http://www.alcpu.com/CoreTemp/

http://www.techpowerup.com/realtemp/

http://malektips.com/core-temp-cpu-windows-system-tray-taskbar.html