CAN 配置和报文记录的功能

This commit is contained in:
2024-12-23 21:33:19 +08:00
parent 713b9b02e6
commit 8b21846424
20 changed files with 1021 additions and 114 deletions

View File

@@ -22,7 +22,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Documents;
namespace CapMachine.Wpf.ViewModels
{
@@ -135,8 +135,6 @@ namespace CapMachine.Wpf.ViewModels
}
//CanLinConfigPromdCmd
private DelegateCommand<string> _CanLinConfigPromdCmd;
/// <summary>
/// CanConfigPro操作的指令
@@ -254,7 +252,7 @@ namespace CapMachine.Wpf.ViewModels
}
else
{
MessageBox.Show("选中后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
System.Windows.MessageBox.Show("选中后再操作", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
}
break;
@@ -281,7 +279,7 @@ namespace CapMachine.Wpf.ViewModels
}
else
{
MessageBox.Show("选中后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
System.Windows.MessageBox.Show("选中后再操作", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
}
@@ -289,11 +287,16 @@ namespace CapMachine.Wpf.ViewModels
case "Active":
if (SelectCanLinConfigPro != null)
{
//控件的激活
IsCanConfigProActive = !IsCanConfigProActive;
//当前使用的CAN 配置信息
CanDriveService.InitCanConfig(SelectCanLinConfigPro);
}
else
{
MessageBox.Show("选中后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
System.Windows.MessageBox.Show("选中后再操作", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
}
break;
@@ -385,6 +388,55 @@ namespace CapMachine.Wpf.ViewModels
}
private DelegateCommand<object> _CanConfigProGridPreviewMouseLeftButtonDownCmd;
/// <summary>
/// CAN 配置程序 选中行之前的数据命令 Preview
/// 防止CAN 打开后没有关闭就开始切换CAN 配置程序信息
/// 要关闭后再切换
/// </summary>
public DelegateCommand<object> CanConfigProGridPreviewMouseLeftButtonDownCmd
{
set
{
_CanConfigProGridPreviewMouseLeftButtonDownCmd = value;
}
get
{
if (_CanConfigProGridPreviewMouseLeftButtonDownCmd == null)
{
_CanConfigProGridPreviewMouseLeftButtonDownCmd = new DelegateCommand<object>((par) => CanConfigProGridPreviewMouseLeftButtonDownCmdMethod(par));
}
return _CanConfigProGridPreviewMouseLeftButtonDownCmd;
}
}
/// <summary>
/// 防止CAN 打开后没有关闭就开始切换CAN 配置程序信息
/// 要关闭后再切换
/// </summary>
/// <param name="par"></param>
private void CanConfigProGridPreviewMouseLeftButtonDownCmdMethod(object par)
{
if (par == null)
{
return;
}
if (par is System.Windows.Input.MouseButtonEventArgs)
{
var handler = par as System.Windows.Input.MouseButtonEventArgs;
if (!CanDriveService.ToomossCanDrive.OpenState)
{
// 防止默认的行选择行为发生
handler.Handled = false;
}
else
{
System.Windows.MessageBox.Show("关闭CAN连接后再点击切换CAN配置", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
handler.Handled = true;
}
}
}
#endregion
@@ -454,7 +506,7 @@ namespace CapMachine.Wpf.ViewModels
}
else
{
MessageBox.Show("新建CAN配置名称后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
System.Windows.MessageBox.Show("新建CAN配置名称后再操作", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
}
@@ -464,7 +516,7 @@ namespace CapMachine.Wpf.ViewModels
}
catch (Exception ex)
{
MessageBox.Show("可能未选择信息", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Hand);
System.Windows.MessageBox.Show("可能未选择信息", "提示", System.Windows.MessageBoxButton.OKCancel, System.Windows.MessageBoxImage.Hand);
}
}
@@ -504,6 +556,12 @@ namespace CapMachine.Wpf.ViewModels
SelectedCanDbcModel = par as CanDbcModel;
return;
}
if ((par as SelectionChangedEventArgs)!.AddedItems[0] == null)
{
return;
}
//先判断是否是正确的集合数据防止DataGrid的数据源刷新导致的触发事件
var Selecteddata = (par as SelectionChangedEventArgs)!.AddedItems[0] as CanDbcModel;
@@ -593,8 +651,6 @@ namespace CapMachine.Wpf.ViewModels
set { _SelectedCANConfigExdDto = value; RaisePropertyChanged(); }
}
private DelegateCommand<string> _CanOpCmd;
/// <summary>
/// CAN操作的指令
@@ -625,13 +681,22 @@ namespace CapMachine.Wpf.ViewModels
case "Open":
if (SelectCanLinConfigPro != null && SelectedCANConfigExdDto != null)
{
//打开连接
CanDriveService.ToomossCanDrive.StartCanDrive();
//CAN DBC配置 有DBC配置的话则直接加载DBC信息
if (!string.IsNullOrEmpty(SelectCanLinConfigPro.CANConfigExd.DbcPath))
{
var DbcData = CanDriveService.StartDbc(SelectedCANConfigExdDto.DbcPath);
ListCanDbcModel = DbcData;
}
}
else
{
MessageBox.Show("新建CAN配置名称后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
System.Windows.MessageBox.Show("新建CAN配置名称后再操作", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
}
break;
@@ -644,7 +709,7 @@ namespace CapMachine.Wpf.ViewModels
}
else
{
MessageBox.Show("新建CAN配置名称后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
System.Windows.MessageBox.Show("新建CAN配置名称后再操作", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
}
break;
@@ -666,16 +731,28 @@ namespace CapMachine.Wpf.ViewModels
}
else
{
MessageBox.Show("新建CAN配置名称后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
System.Windows.MessageBox.Show("新建CAN配置名称后再操作", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
}
break;
case "Parse":
if (SelectCanLinConfigPro != null && SelectedCANConfigExdDto != null)
{
//打开之后连接
if (CanDriveService.ToomossCanDrive.OpenState)
{
//CAN DBC配置 有DBC配置的话则加载DBC信息
if (!string.IsNullOrEmpty(SelectedCANConfigExdDto.DbcPath))
{
var DbcData = CanDriveService.StartDbc(SelectedCANConfigExdDto.DbcPath);
ListCanDbcModel = DbcData;
}
else
{
System.Windows.MessageBox.Show("请选择DBC文件后再操作", "提示", System.Windows.MessageBoxButton.OKCancel, System.Windows.MessageBoxImage.Hand);
}
}
// ListCanDbcModel = new ObservableCollection<CanDbcModel>()
//{
// new CanDbcModel(){ MsgName="DSDF1",SignalName="FASDFA11",Publisher="DFAD1",SignalDesc="ASDFASD1"},
@@ -687,20 +764,11 @@ namespace CapMachine.Wpf.ViewModels
// return;
if (!string.IsNullOrEmpty(SelectedCANConfigExdDto.DbcPath))
{
CanDriveService.ToomossCanDrive.StartDbc(SelectedCANConfigExdDto.DbcPath);
ListCanDbcModel = CanDriveService.ToomossCanDrive.ListCanDbcModel;
}
else
{
MessageBox.Show("请选择DBC文件后再操作", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Hand);
}
}
else
{
MessageBox.Show("新建CAN配置名称后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
System.Windows.MessageBox.Show("新建CAN配置名称后再操作", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
}
@@ -720,7 +788,13 @@ namespace CapMachine.Wpf.ViewModels
CanDriveService.ToomossCanDrive.IsCycleRevice = true;
CanDriveService.ToomossCanDrive.StartCycleReviceCanMsg();
//Listen
break;
case "Listen":
CanDriveService.ToomossCanDrive.IsCycleRevice = true;
CanDriveService.ToomossCanDrive.StartCycleReviceCanMsg();
//Listen
break;
default:
break;
@@ -731,7 +805,7 @@ namespace CapMachine.Wpf.ViewModels
#region
private ObservableCollection<CbxItems> _WriteNameCbxItems;
/// <summary>
/// 写入的Name
@@ -849,7 +923,7 @@ namespace CapMachine.Wpf.ViewModels
{
if (SelectCanLinConfigPro == null)
{
MessageBox.Show("新建CAN配置名称后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
System.Windows.MessageBox.Show("新建CAN配置名称后再操作", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
return;
}
@@ -895,7 +969,7 @@ namespace CapMachine.Wpf.ViewModels
}
else
{
MessageBox.Show("请选中后再进行【删除】操作?", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
System.Windows.MessageBox.Show("请选中后再进行【删除】操作?", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
}
break;
@@ -984,7 +1058,7 @@ namespace CapMachine.Wpf.ViewModels
{
if (SelectCanLinConfigPro == null)
{
MessageBox.Show("新建CAN配置名称后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
System.Windows.MessageBox.Show("新建CAN配置名称后再操作", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
return;
}
@@ -1029,7 +1103,7 @@ namespace CapMachine.Wpf.ViewModels
}
else
{
MessageBox.Show("请选中后再进行【删除】操作?", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
System.Windows.MessageBox.Show("请选中后再进行【删除】操作?", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
}
break;