139 lines
4.2 KiB
C#
139 lines
4.2 KiB
C#
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
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|