using ATS.Models;
using MahApps.Metro.Controls;
using PropertyChanged;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using TSMasterCAN;
namespace ATS.Views
{
///
/// CANCatchSingalView.xaml 的交互逻辑
///
[AddINotifyPropertyChangedInterface]
public partial class CANCatchSingalView : MetroWindow
{
public CANCatchSingalView()
{
InitializeComponent();
DataContext ??= this;
Loaded += (_, _) =>
{
报文 = [.. DBCParse.MsgDatabase[通道].Select(s => $"[0x{s.msg_id:X}]{s.msg_name}")];
};
}
public BindingList 配置 { get; set; } = new();
public byte 通道 { get; set; } = 0;
public List 报文 { get; set; }
public List 信号 { get; set; }
public int 选中报文 { get; set; }
public int 选中信号 { get; set; }
public int 采集间隔 { get; set; } = 1000;
private void Button_Click(object sender, RoutedEventArgs e)
{
var find = 配置.FirstOrDefault(s => s.Channel == 通道
&& s.MessageName == DBCParse.MsgDatabase[通道][选中报文].msg_name
&& s.SignalName == DBCParse.MsgDatabase[通道][选中报文].signal_Name[选中信号]);
try
{
if (find is null)
{
配置.Add(new()
{
Channel = 通道,
MessageName = DBCParse.MsgDatabase[通道][选中报文].msg_name,
SignalName = DBCParse.MsgDatabase[通道][选中报文].signal_Name[选中信号],
CatchID = Guid.NewGuid(),
LogInterval = TimeSpan.FromMilliseconds(采集间隔),
MessageID = DBCParse.MsgDatabase[通道][选中报文].msg_id
});
}
else
{
find.LogInterval = TimeSpan.FromMilliseconds(采集间隔);
}
}
catch (Exception)
{
throw;
}
finally
{
}
}
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
var cbb = sender as ComboBox;
if (cbb.SelectedIndex < 0) return;
信号 = DBCParse.MsgDatabase[通道][cbb.SelectedIndex].signal_Name.ToList();
选中信号 = 0;
}
catch (Exception)
{
}
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
if (配置表格.SelectedIndex < 0) return;
配置.RemoveAt(配置表格.SelectedIndex);
}
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (sender is not TextBox o) return;
int temp = 0;
try
{
temp = Convert.ToInt32(o.Text);
选中报文 = 0;
}
catch (Exception)
{
}
报文 = [.. DBCParse.MsgDatabase[temp].Select(s => $"[0x{s.msg_id:X}]{s.msg_name}")];
}
}
}