0

我正在尝试使用 OSHI 获取 cpu 温度、电压和风扇速度,但结果显示此信息不可用。这是我的代码:

    public static void main(String... args) {
    SystemInfo si = new SystemInfo();
    HardwareAbstractionLayer hal = si.getHardware();
    Sensors sensors = hal.getSensors();
    System.out.println(sensors.toString());
    }

这是 Windows 10 上的输出:

    CPU Temperature=0.0°C, Fan Speeds=[0, 0, 0], CPU Voltage=0.0

传感器界面如下:

public interface Sensors {
/**
 * CPU Temperature
 *
 * @return CPU Temperature in degrees Celsius if available, 0 otherwise.
 */
double getCpuTemperature();

/**
 * Fan speeds
 *
 * @return Speed in rpm for all fans. May return empty array if no fans detected
 *         or 0 fan speed if unable to measure fan speed.
 */
int[] getFanSpeeds();

/**
 * CPU Voltage
 *
 * @return CPU Voltage in Volts if available, 0 otherwise.
 */
double getCpuVoltage();
}

如果信息不可用,接口中的三个函数返回 0。

我的问题是您能否提供此信息,如果可以,如何提供?

4

1 回答 1

1

我找到了一个解释:

Windows 传感器(温度、风扇、电压)读数来自 Microsoft 的 Windows Management Instrumentation (WMI) API;但是,大多数硬件制造商不会将这些读数发布到 WMI。如果某个值无法通过 Microsoft API 获得,Oshi 将尝试检索由 Open Hardware Monitor 发布的值(如果它正在运行)。在 FreeBSD 上使用 coretemp 仅检测温度传感器。

我尝试使用 OHM 运行它,它适用于温度,这对我来说已经足够了。请让我知道您是否找到其他两个变量的方法。

于 2020-03-03T12:47:27.803 回答