如何使用Open Hardware Monitor获取CPU温度?

问题描述 投票:0回答:1

所以我一直在尝试获取 Windows、msvc 上的 CPU 温度,最后我找到了 Libre Hardware Monitor,Open Hardware Monitor 的分支。

还有人(获取CPU温度)说他使用了lhwm-wrapper(https://gitlab.com/OpenRGBDevelopers/lhwm-wrapper)所以它可以与c++一起使用。

这个 lhwm-wrapper 导出了三个函数:

GetHardwareSensorMap()
//returns a map

GetSensorValue(std::string identifier)
//returns float

SetControlValue(std::string identifier, float value)
//void function

所以我一直好奇如何使用这个功能来获取CPU热量,我想我应该使用

GetSensorValue(std::string identifier)
来访问,但是我不知道该输入什么。也许CPU的热传感器的值我完全不知道。

我创建了一个可以使用 lhwm-wrapper 的 Visual Studio 项目,并尝试为

GetSensorValue(std::string identifier)

提供一些值

像这样:

#include <iostream>
#include <lhwm-cpp-wrapper.h>

int main()
{
    std::cout << LHWM::GetSensorValue("0");
}

无论我输入什么,输出都是 0。

c++ windows cpu temperature openhardwaremonitor
1个回答
0
投票

您需要的所有信息都可以在映射中找到,在 C++ 中,这是一个元组映射,每个元组包含三个数据点:

  1. 传感器名称
  2. 传感器类型
  3. 传感器ID(这就是你想要的)

每个硬件都有各种类型的传感器,每个传感器都有各自的值。对于您的情况,您想要找到类型为

Temperature
的传感器。

您可以通过提供的

LHWM::GetHardwareSensorMap()
找到所有这些信息。

例如。我找到了我的 CPU

AMD Ryzen 7 PRO 4750U with Radeon Graphics
,在许多元组中我发现了一个类型为
Temperature
且 ID 为
/amdcpu/0/temperature/2
的传感器。 所以,我按如下方式插入。

std::string sensorId = "/amdcpu/0/temperature/2";
float temp = LHWM::GetSensorValue(sensorId);
std::cout << "Temperature: " << temp << std::endl;

这给了我以摄氏度为单位的值

57.625

注意:程序必须以提升权限运行,否则你会得到0读数。这就是发生在我身上并导致 最初有些混乱。

© www.soinside.com 2019 - 2024. All rights reserved.