CAN优化

This commit is contained in:
hsc
2026-07-15 10:11:17 +08:00
parent aebbd88e23
commit 8e44be4894
10 changed files with 117 additions and 30 deletions

View File

@@ -69,7 +69,7 @@ namespace UIShare.GlobalVariable
{
if (_disposed) return;
string signalFingerprint = BuildFingerprint(channel);
string signalFingerprint = BuildFingerprint(canFingerprint, channel);
var now = DateTime.Now;
// 获取引用该 CAN 设备的所有作用域
@@ -133,11 +133,12 @@ namespace UIShare.GlobalVariable
}
/// <summary>
/// 生成 CAN 信号的 Fingerprint 格式:"CAN:{Channel}"
/// 生成 CAN 信号的 Fingerprint 格式:"{canDeviceFingerprint}:{channel}"
/// canDeviceFingerprint 来自 DeviceManager.ExtractHardwareFingerprint如 "CAN:0"
/// </summary>
public static string BuildFingerprint(uint channel)
public static string BuildFingerprint(string canDeviceFingerprint, uint channel)
{
return $"CAN:{channel}";
return $"{canDeviceFingerprint}:{channel}";
}
public void Dispose()

View File

@@ -71,6 +71,20 @@ namespace UIShare.GlobalVariable
return string.Empty;
}
/// <summary>
/// 获取当前作用域配置的 CAN 设备硬件指纹(与 GlobalInfo.CanPool 的 Key 一致)。
/// 如 "CAN:0",其中 0 是 CANConfig.DeviceIndex。
/// </summary>
public string GetCanDeviceFingerprint()
{
if (_systemConfig?.DeviceList == null) return string.Empty;
var canConfig = _systemConfig.DeviceList.FirstOrDefault(d =>
d != null && d.IsEnabled &&
string.Equals(d.ConnectionType, "CAN", StringComparison.OrdinalIgnoreCase));
return canConfig != null ? ExtractHardwareFingerprint(canConfig) : string.Empty;
}
private void InitDevices()
{
DeviceMap = new Dictionary<string, IBaseInterface>(StringComparer.OrdinalIgnoreCase);