CAN驱动修改优化
This commit is contained in:
@@ -18,10 +18,11 @@ using System.Windows.Threading;
|
||||
using TSMasterCAN;
|
||||
using UIShare.GlobalVariable;
|
||||
using UIShare.UIViewModel;
|
||||
using UIShare.ViewModelBase;
|
||||
|
||||
namespace CANModule.ViewModels
|
||||
{
|
||||
public class CANViewModel : BindableBase, IDialogAware
|
||||
public class CANViewModel : NavigateViewModelBase
|
||||
{
|
||||
|
||||
#region 属性
|
||||
@@ -269,17 +270,15 @@ namespace CANModule.ViewModels
|
||||
|
||||
#endregion
|
||||
private IEventAggregator _eventAggregator { get; set; }
|
||||
private CAN? _canfd;
|
||||
private SystemConfig? _systemConfig;
|
||||
private readonly DeviceManager _deviceManager;
|
||||
private IDialogService _dialogService { get; set; }
|
||||
CancellationTokenSource cts = new CancellationTokenSource();
|
||||
public CANViewModel(IContainerProvider containerProvider)
|
||||
public CANViewModel(IContainerProvider containerProvider) : base(containerProvider)
|
||||
{
|
||||
_eventAggregator = containerProvider.Resolve<IEventAggregator>();
|
||||
_systemConfig = containerProvider.Resolve<SystemConfig>();
|
||||
_deviceManager = containerProvider.Resolve<DeviceManager>();
|
||||
_canfd = _deviceManager.CANFD;
|
||||
_dialogService = containerProvider.Resolve<IDialogService>();
|
||||
SelectBLFPathCommand = new DelegateCommand(SelectBLFPath);
|
||||
SaveBLFPathCommand = new DelegateCommand(SaveBLFPath);
|
||||
@@ -299,6 +298,7 @@ namespace CANModule.ViewModels
|
||||
LoadMessageCommand = new DelegateCommand(LoadMessage);
|
||||
DeleteDcAutoLoadCommand = new DelegateCommand(DeleteDcAutoLoad);
|
||||
SendCustomMessageCommand = new DelegateCommand(SendCustomMessage);
|
||||
Task.Run(() => Refresh(cts.Token), cts.Token);
|
||||
}
|
||||
|
||||
#region 命令
|
||||
@@ -496,7 +496,7 @@ namespace CANModule.ViewModels
|
||||
{
|
||||
while (ct.IsCancellationRequested == false)
|
||||
{
|
||||
var temp = CAN.RealTimeMessages.Select(s => s.Value).ToArray();
|
||||
var temp = _deviceManager._CANMonitoringService.RealTimeMessages.Select(s => s.Value).ToArray();
|
||||
foreach (var item in temp)
|
||||
{
|
||||
var find = CanMessageList.FirstOrDefault(s => s.报文ID == item.FIdentifier);
|
||||
@@ -571,6 +571,10 @@ namespace CANModule.ViewModels
|
||||
}
|
||||
|
||||
public void OnDialogOpened(IDialogParameters parameters)
|
||||
{
|
||||
|
||||
}
|
||||
public override void OnNavigatedTo(NavigationContext context)
|
||||
{
|
||||
Task.Run(() => Refresh(cts.Token), cts.Token);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Configuration;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
using Model;
|
||||
using Model.Models;
|
||||
using TSMasterCAN;
|
||||
using UIShare.GlobalVariable;
|
||||
using UIShare.PubEvent;
|
||||
using UIShare.UIViewModel;
|
||||
|
||||
namespace CANModule.ViewModels
|
||||
{
|
||||
public class DBCInfoViewModel :BindableBase, IDialogAware
|
||||
{
|
||||
private can_network _can_Network;
|
||||
|
||||
public required can_network can_Network
|
||||
{
|
||||
get { return _can_Network; }
|
||||
set { SetProperty(ref _can_Network, value); }
|
||||
}
|
||||
private List<_Msg_> _MessageInfo;
|
||||
|
||||
public required List<_Msg_> MessageInfo
|
||||
{
|
||||
get { return _MessageInfo; }
|
||||
set { SetProperty(ref _MessageInfo, value); }
|
||||
}
|
||||
private ObservableCollection<InstructionNode> _CanNetWorkNode = new();
|
||||
public ObservableCollection<InstructionNode> CanNetWorkNode
|
||||
{
|
||||
get => _CanNetWorkNode;
|
||||
set => SetProperty(ref _CanNetWorkNode, value);
|
||||
}
|
||||
private ObservableCollection<InstructionNode> _MessgaeNode = new();
|
||||
public ObservableCollection<InstructionNode> MessgaeNode
|
||||
{
|
||||
get => _MessgaeNode;
|
||||
set => SetProperty(ref _MessgaeNode, value);
|
||||
}
|
||||
public ICommand CloseCommand { get; set; }
|
||||
public DialogCloseListener RequestClose { get; set; }
|
||||
public DBCInfoViewModel()
|
||||
{
|
||||
CloseCommand = new DelegateCommand(Close);
|
||||
}
|
||||
|
||||
private void Close()
|
||||
{
|
||||
RequestClose.Invoke();
|
||||
}
|
||||
|
||||
public bool CanCloseDialog()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public void OnDialogClosed()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void OnDialogOpened(IDialogParameters parameters)
|
||||
{
|
||||
if (parameters.ContainsKey("can_Network"))
|
||||
{
|
||||
can_Network = parameters.GetValue<can_network>("can_Network");
|
||||
}
|
||||
|
||||
if (parameters.ContainsKey("MsgDatabase"))
|
||||
{
|
||||
MessageInfo = parameters.GetValue<List<_Msg_>>("MsgDatabase");
|
||||
}
|
||||
InitTreeNode();
|
||||
}
|
||||
|
||||
private void InitTreeNode()
|
||||
{
|
||||
foreach(var item in can_Network.can_nodes)
|
||||
{
|
||||
var tx = new ObservableCollection<InstructionNode>();
|
||||
var rx = new ObservableCollection<InstructionNode>();
|
||||
foreach (var can_Message in item.rx_can_Messages)
|
||||
{
|
||||
rx.Add(new InstructionNode
|
||||
{
|
||||
Name = can_Message.message_name
|
||||
});
|
||||
}
|
||||
foreach (var can_Message in item.tx_can_Messages)
|
||||
{
|
||||
tx.Add(new InstructionNode
|
||||
{
|
||||
Name = can_Message.message_name
|
||||
});
|
||||
}
|
||||
var children = new ObservableCollection<InstructionNode>();
|
||||
children.Add(new InstructionNode
|
||||
{
|
||||
Name = "TX",
|
||||
Children = tx
|
||||
});
|
||||
children.Add(new InstructionNode
|
||||
{
|
||||
Name = "RX",
|
||||
Children = rx
|
||||
});
|
||||
CanNetWorkNode.Add(new InstructionNode
|
||||
{
|
||||
Name = item.node_name,
|
||||
Children = children
|
||||
});
|
||||
}
|
||||
foreach(var item in MessageInfo)
|
||||
{
|
||||
var children = new ObservableCollection<InstructionNode>();
|
||||
foreach(var Signalname in item.signal_Name)
|
||||
{
|
||||
children.Add(new InstructionNode
|
||||
{
|
||||
Name = Signalname
|
||||
});
|
||||
}
|
||||
string hexValue = "[0x" + item.msg_id.ToString("X") + "]";
|
||||
MessgaeNode.Add(new InstructionNode
|
||||
{
|
||||
Name = hexValue+item.msg_name,
|
||||
Children=children
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user