You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#的OpenHardwareMonitor获取主板传感器值不稳定的原因

主板传感器数值获取不稳定的原因及解决方法

核心原因分析

  • 硬件启用顺序错误:当前代码先调用computer.Open(),再设置MainboardEnabled等硬件启用属性。但OpenHardwareMonitor的正确流程是先启用目标硬件,再调用Open()。先Open后启用会导致主板硬件未被正确初始化,传感器检测稳定性极低。
  • 硬件更新不充分:单次hardware.Update()可能无法完成主板SMBus(系统管理总线)的通信握手,部分主板需要多次更新才能稳定读取传感器数据。
  • 未遍历子硬件传感器:部分主板的温度传感器挂载在子硬件(如南桥芯片、VRM模块)下,当前代码仅遍历主板本身的传感器,遗漏了子硬件中的数据。
  • 系统权限限制:读取主板传感器需要访问SMBus,普通权限下可能出现访问不稳定的情况,尤其是Windows系统中,部分主板要求管理员权限才能稳定访问总线。

针对性修复方案

1. 调整硬件启用顺序

修改GetSystemInfo()方法,先启用硬件再打开连接:

static void GetSystemInfo()
{
    UpdateVisitor updateVisitor = new UpdateVisitor();
    Computer computer = new Computer();
    
    // 先启用需要监控的硬件
    computer.CPUEnabled = true;
    computer.MainboardEnabled = true;
    computer.RAMEnabled = true;
    computer.FanControllerEnabled = true;
    
    // 再建立硬件连接
    computer.Open();
    computer.Accept(updateVisitor);
    
    // 后续遍历逻辑...
}

2. 增加多次更新保证数据读取

在首次更新后,针对主板硬件额外执行更新操作,确保总线通信完成:

computer.Accept(updateVisitor);

// 对主板硬件进行二次更新
foreach (var hardware in computer.Hardware)
{
    if (hardware.HardwareType == HardwareType.Mainboard)
    {
        hardware.Update();
        foreach (var subHardware in hardware.SubHardware)
            subHardware.Update();
    }
}

3. 完整遍历子硬件传感器

新增递归遍历方法,覆盖主板及子硬件的所有传感器:

static void TraverseAllSensors(IHardware hardware)
{
    // 遍历当前硬件的传感器
    foreach (var sensor in hardware.Sensors)
    {
        if (sensor.SensorType == SensorType.Temperature && sensor.Value.HasValue)
            Console.WriteLine($"{sensor.Name}: {sensor.Value.Value:F1}°C");
    }
    // 递归遍历子硬件
    foreach (var subHardware in hardware.SubHardware)
    {
        TraverseAllSensors(subHardware);
    }
}

// 在GetSystemInfo()中替换原遍历代码:
foreach (var hardware in computer.Hardware)
{
    if (hardware.HardwareType == HardwareType.Mainboard)
    {
        TraverseAllSensors(hardware);
    }
}

4. 以管理员权限运行程序

右键点击程序或开发工具,选择「以管理员身份运行」,避免SMBus访问权限不足导致的读取失败。

额外提示

若以上方案仍无法解决问题,可尝试更新OpenHardwareMonitor至最新版本,同时检查主板BIOS中是否开启了硬件监控相关功能(如SMBus支持、HW Monitor选项)。

内容的提问来源于stack exchange,提问作者Marko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:47:45