监控、OSD

This commit is contained in:
zhongluofeng
2026-07-28 18:31:39 +08:00
parent 7e6149355e
commit 3d3096b2a3
11 changed files with 3475 additions and 107 deletions
+39
View File
@@ -131,6 +131,11 @@ internal sealed class HardwareManager : IDisposable
// 重新遍历以读取最新传感器值(visitor 缓存的是 hardware 引用,sensor 值实时)
var groups = new Dictionary<string, SensorGroup>();
// 为已启用但 LHB 未枚举到的硬件类型预创建空分组,
// 确保前端能显示"已启用但无数据"的硬件(而不是直接隐藏,让用户误以为配置未生效)
EnsureGroupsForEnabledHardware(groups, snap);
foreach (var hw in _visitor.AllHardware)
{
string groupId = hw.HardwareType.ToString().ToLowerInvariant();
@@ -164,6 +169,40 @@ internal sealed class HardwareManager : IDisposable
return snap;
}
/// <summary>
/// 为已启用但 LHB 未枚举到的硬件类型预创建空分组。
/// 场景:用户在设置中勾选了主板/电池/电源等,但 LHB 在当前权限或机型下检测不到对应硬件,
/// 此时仍创建空分组让前端显示"已启用但无数据",避免用户误以为配置未生效。
/// GPU 特殊处理:LHB 会枚举到 GpuIntel/GpuAmd/GpuNvidia 之一,不预创建通用分组。
/// </summary>
private void EnsureGroupsForEnabledHardware(Dictionary<string, SensorGroup> groups, SensorSnapshot snap)
{
// (configKey, groupId, groupName)
// 注意:controller 对应 SuperIO 和 EmbeddedController 两个 HardwareType
var mapping = new (string, string, string)[]
{
("cpu", "cpu", "CPU"),
("memory", "memory", "Memory"),
("storage", "storage", "Storage"),
("motherboard", "motherboard", "Motherboard"),
("controller", "superio", "SuperIO"),
("controller", "embeddedcontroller", "EmbeddedController"),
("battery", "battery", "Battery"),
("network", "network", "Network"),
("psu", "psu", "Psu"),
};
foreach (var (key, groupId, groupName) in mapping)
{
if (_config.IsHardwareEnabled(key) && !groups.ContainsKey(groupId))
{
var g = new SensorGroup { Id = groupId, Name = groupName };
groups[groupId] = g;
snap.Groups.Add(g);
}
}
}
/// <summary>
/// 判断硬件是否属于慢通道(低频 Update 即可)。
/// 快通道:CPU/GPU/Memory/Network(变化快、查询轻量)