如何从主板上的传感器读取温度?

时间:2014-03-18 14:35:24

标签: c++ windows temperature bus isa

试图获得处理器的温度。

已经尝试过使用WQL(WMI类MSAcpi_ThermalZoneTemperature),但显然它尚未针对所有平台实现。在大多数机器上,它只是通过HRESULT返回值返回每个现有的错误消息。温度本身不会返回。

想法是直接通过总线端口读取此温度。我找到了这个库,它提供了outp和inp函数的功能,并且设法启动了连接(NTPort),然而,问题变成了连接到哪个端口以便读取数据。微控制器是IT8728F。 SpeedFan(能够读取温度的应用程序)在其日志中表示它从端口0x290读取数据。但是,当连接到它时,返回的数据看起来不像温度(它总是返回29)。

所以接下来要尝试的是从任何端口读取,试图确定是否有任何数据看起来像温度。然而,从每个端口发出的一些数据要么太低或太高而不能达到实际温度。

int CPU_TEMP;
Outp(INDEX, BANK_SET);
Outp(DATA, Inp(DATA)|0x01);
for(CPU_TEMP=0x0;CPU_TEMP<0x999;CPU_TEMP++)
{
  Outp(INDEX, CPU_TEMP);
  printf("CPU temp: %iC\n", Inp(DATA));
}

1 个答案:

答案 0 :(得分:0)

也许你的处理器是29摄氏度并且稳定。对于处理器而言,这似乎是合法的。

另外:是0x00000029还是DEC 29?这会产生很大的不同