如何使用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"
答案 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