2010-09-01 148 views
8

如何使用C# 得到BIOS中的CPU温度的信息,我给了一个尝试的代码CPU temperature monitoring如何使用c#从Bios获取CPU温度信息?

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

我该如何做到这一点?谢谢。

错误:

“这个系统不支持 所需的WMI对象(1) - 检查所支持 \ r \ n \ r \ n中的 例外文件\ r \ n不是在 系统.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus 的errorCode个)\ r \ n在 System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext(个)\ r \ n 在 CedarLogic.WmiLib.SystemStatistics.RefreshReadings() 在 d:\下载\ TEM pMonitorSrc \ TemperatureMonitorSln \ WmiLib \ SystemStatistics.cs:在 d线 25 \ r \ n在 CedarLogic.WmiLib.SystemStatistics.get_CurrentTemperature() :\下载\ TempMonitorSrc \ TemperatureMonitorSln \ WmiLib \ SystemStatistics.cs:线 87 \在 TemperatureMonitor.SystemTrayService.CheckSupport(R \ n)的 在 d:\下载\ TempMonitorSrc \ TemperatureMonitorSln \ TemperatureMonitor \ SystemTrayService.cs:线 260"

+0

它抛出了什么异常? – Hogan 2010-09-01 02:55:38

+2

您需要从主板制造商处获得改进的WMI提供程序。不要指望得到一个。 – 2010-09-01 02:56:21

+0

您可以使用“WMI Studio”查看所有WMI对象。它是WMI对象的资源管理器。你可以用你最喜欢的搜索引擎找到它。 – linuxuser27 2010-09-01 03:03:58

回答

0

我建议以下办法。有几个免费的应用程序可以监视CPU温度并显示它。尝试下载一些,然后分析应用程序以查看他们正在调用哪些方法,以便发现它们的工作方式。也许他们对现有的方法有一个非常不同的方法。您可能还可以只给他们发邮件,问他们是怎么做到的?

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

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

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

+2

@Anuya:那么你是如何最终获得CPU温度的?请分享。 – 2012-11-28 04:10:51

2

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

1)打开硬件监控 - 开源.NET 2.0应用:

http://openhardwaremonitor.org/

2)核心温度 - 免费的应用程序和.NET API来得到的温度数据:

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

1

我知道这个线程是旧的,但我想给它添加一个有点不同的办法。从主板上的I/O芯片获取制造/模型,并获取所述I/O芯片的数据表(我将使用ITE IT8783F芯片作为参考)。 查看诸如环境控制器之类的东西,并计算访问和读取端口。是的,你必须理解十六进制和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 

现在,你只需要找出你想用它做什么。记住,如果你发现你的数字太疯狂了,你要么从错误的寄存器中拉出来,要么你需要实现一个缩放因子(就像你使用电压读数一样)。这也应该在数据表中。

+0

以下是来自英特尔的相关文档,CPU监控与2010年9月的DTS/PECI,http://download.intel.com/design/intarch/papers/322683.pdf以及有关英特尔处理器温度数据解释的一些信息。 – 2013-01-13 04:53:04