试图获得处理器的温度。
已经尝试过使用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));
}
答案 0 :(得分:0)
也许你的处理器是29摄氏度并且稳定。对于处理器而言,这似乎是合法的。
另外:是0x00000029还是DEC 29?这会产生很大的不同