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

How to read the temperature from sensors on the motherboard?

本文关键字:传感器 读取 温度 主板      更新时间:2023-10-16

正在获取处理器温度

已经尝试使用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: %iCn", Inp(DATA));
}

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

也:是0x00000029还是DEC 29?