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);

View File

@@ -10,5 +10,6 @@ namespace UIShare.UIViewModel
public string SignalName { get; set; }
public int CollectionInterval { get; set; }
public Guid CollectionID { get; set; }
public string MethodName {get;set;}
}
}

View File

@@ -8,6 +8,7 @@ namespace UIShare.UIViewModel
private string _signalName = string.Empty;
private string _fingerprint = string.Empty;
private string _methodName = string.Empty;
private string _displayName = string.Empty;
private double _upper;
private double _lower;
private double _upperExtreme;
@@ -22,6 +23,14 @@ namespace UIShare.UIViewModel
{
get => _signalName;
set => SetProperty(ref _signalName, value);
}
/// <summary>
/// 信号名(显示用)
/// </summary>
public string DisplayName
{
get => _displayName;
set => SetProperty(ref _displayName, value);
}
/// <summary>