CAN/LIN 导入和导出功能
This commit is contained in:
@@ -172,12 +172,13 @@ namespace CapMachine.Wpf.ViewModels
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// CAN/LIN配置变更事件处理
|
||||
/// CAN/LIN 配置导入后刷新当前页面。
|
||||
/// </summary>
|
||||
/// <param name="msg"></param>
|
||||
/// <param name="msg">事件消息。</param>
|
||||
private void CanLinConfigChangedEventCall(string msg)
|
||||
{
|
||||
RefreshConfigList();
|
||||
InitLoadCanConfigPro();
|
||||
InitWriteRuleCbx();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -212,7 +213,7 @@ namespace CapMachine.Wpf.ViewModels
|
||||
canLinConfigPros = FreeSql.Select<CanLinConfigPro>().Where(a => a.CANLINInfo == CANLIN.CANFD)
|
||||
.Include(a => a.CANFdConfigExd)
|
||||
.IncludeMany(a => a.CanLinConfigContents, then => then.Include(b => b.LogicRule))//,then=> then.Include(b=>b.LogicRule)
|
||||
//.IncludeMany(a => a.CanLinConfigContents)
|
||||
.IncludeMany(a => a.CanFdScheduleConfigs)//
|
||||
.ToList();
|
||||
|
||||
ListCanLinConfigPro = new ObservableCollection<CanLinConfigPro>(canLinConfigPros);
|
||||
@@ -271,6 +272,12 @@ namespace CapMachine.Wpf.ViewModels
|
||||
ListReadCanLinRWConfigDto = new ObservableCollection<CanLinRWConfigDto>();
|
||||
}
|
||||
|
||||
//调度表配置信息
|
||||
if (SelectCanLinConfigPro.CanFdScheduleConfigs != null && SelectCanLinConfigPro.CanFdScheduleConfigs.Count() > 0)
|
||||
{
|
||||
ListCANFdScheduleConfigDto = new ObservableCollection<CANFdScheduleConfigDto>(Mapper.Map<List<CANFdScheduleConfigDto>>(SelectCanLinConfigPro.CanFdScheduleConfigs));
|
||||
}
|
||||
|
||||
//匹配选中的SelectCanLinConfigPro.CanLinConfigContents和ListCanDbcModel
|
||||
MatchSeletedAndCanDbcModel();
|
||||
}
|
||||
@@ -519,6 +526,8 @@ namespace CapMachine.Wpf.ViewModels
|
||||
CanFdDriveService.InitCanConfig(SelectCanLinConfigPro);
|
||||
|
||||
InitLoadCanConfigPro();
|
||||
|
||||
CanFdDriveService.ToomossCanFDDrive.LoadCmdDataToDrive(CanFdDriveService.CmdData);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -636,6 +645,18 @@ namespace CapMachine.Wpf.ViewModels
|
||||
|
||||
SelectCanLinConfigProConfigName = SelectCanLinConfigPro.ConfigName;
|
||||
|
||||
|
||||
//调度表配置信息
|
||||
if (SelectCanLinConfigPro.CanFdScheduleConfigs != null && SelectCanLinConfigPro.CanFdScheduleConfigs.Count() > 0)
|
||||
{
|
||||
ListCANFdScheduleConfigDto = new ObservableCollection<CANFdScheduleConfigDto>(Mapper.Map<List<CANFdScheduleConfigDto>>(SelectCanLinConfigPro.CanFdScheduleConfigs));
|
||||
}
|
||||
else
|
||||
{
|
||||
ListCANFdScheduleConfigDto = new ObservableCollection<CANFdScheduleConfigDto>();
|
||||
}
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
//先判断是否是正确的集合数据,防止DataGrid的数据源刷新导致的触发事件
|
||||
@@ -705,6 +726,33 @@ namespace CapMachine.Wpf.ViewModels
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
private DelegateCommand _btnTestPLC;
|
||||
/// <summary>
|
||||
/// 临时测试的方法
|
||||
/// </summary>
|
||||
public DelegateCommand btnTestPLC
|
||||
{
|
||||
set
|
||||
{
|
||||
_btnTestPLC = value;
|
||||
}
|
||||
get
|
||||
{
|
||||
if (_btnTestPLC == null)
|
||||
{
|
||||
_btnTestPLC = new DelegateCommand(() => btnTestPLCCall());
|
||||
}
|
||||
return _btnTestPLC;
|
||||
}
|
||||
}
|
||||
//临时测试的方法
|
||||
private void btnTestPLCCall()
|
||||
{
|
||||
CanFdDriveService.ToomossCanFDDrive.UpdateSchDataByCmdDataChanged();
|
||||
}
|
||||
|
||||
|
||||
#region Dbc操作
|
||||
|
||||
private ObservableCollection<CanDbcModel> _ListCanDbcModel;
|
||||
@@ -938,6 +986,43 @@ namespace CapMachine.Wpf.ViewModels
|
||||
set { _ArbBaudRateCbxItems = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
|
||||
private DelegateCommand<object> _SchEnableCmd;
|
||||
/// <summary>
|
||||
/// 调度表的使能 操作的指令
|
||||
/// </summary>
|
||||
public DelegateCommand<object> SchEnableCmd
|
||||
{
|
||||
set
|
||||
{
|
||||
_SchEnableCmd = value;
|
||||
}
|
||||
get
|
||||
{
|
||||
if (_SchEnableCmd == null)
|
||||
{
|
||||
_SchEnableCmd = new DelegateCommand<object>((Par) => SchEnableCmdCall(Par));
|
||||
}
|
||||
return _SchEnableCmd;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 调度表的使能信息
|
||||
/// </summary>
|
||||
/// <param name="par"></param>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
private void SchEnableCmdCall(object par)
|
||||
{
|
||||
if (SelectedCANConfigExdDto == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
CanFdDriveService.ToomossCanFDDrive.SchEnable = SelectedCANConfigExdDto.SchEnable;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private DelegateCommand<string> _CanOpCmd;
|
||||
/// <summary>
|
||||
/// CAN操作的指令
|
||||
@@ -1029,6 +1114,7 @@ namespace CapMachine.Wpf.ViewModels
|
||||
.Set(a => a.ArbBaudRate, SelectedCANConfigExdDto.ArbBaudRate)
|
||||
.Set(a => a.ISOEnable, SelectedCANConfigExdDto.ISOEnable)
|
||||
.Set(a => a.ResEnable, SelectedCANConfigExdDto.ResEnable)
|
||||
.Set(a => a.SchEnable, SelectedCANConfigExdDto.SchEnable)
|
||||
.Where(a => a.Id == SelectedCANConfigExdDto.Id)
|
||||
.ExecuteUpdated();
|
||||
}
|
||||
@@ -1090,6 +1176,12 @@ namespace CapMachine.Wpf.ViewModels
|
||||
|
||||
break;
|
||||
case "CycleSend"://循环发送你
|
||||
|
||||
//有可能加载完毕后不手动改变状态,导致值没有传输,所以这里赋值
|
||||
CanFdDriveService.ToomossCanFDDrive.SchEnable = SelectedCANConfigExdDto.SchEnable;
|
||||
//无论有没有调度表,都要把这个配置给CanDriveService
|
||||
CanFdDriveService.ListCANFdScheduleConfig = ListCANFdScheduleConfigDto.ToList();
|
||||
|
||||
//循环发送数据
|
||||
CanFdDriveService.CycleSendMsg();
|
||||
|
||||
@@ -1153,6 +1245,26 @@ namespace CapMachine.Wpf.ViewModels
|
||||
set { _WriteRuleCbxItems = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private ObservableCollection<CbxItems> _ReadRuleCbxItems;
|
||||
/// <summary>
|
||||
/// 读取的规格集合
|
||||
/// </summary>
|
||||
public ObservableCollection<CbxItems> ReadRuleCbxItems
|
||||
{
|
||||
get { return _ReadRuleCbxItems; }
|
||||
set { _ReadRuleCbxItems = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private ObservableCollection<CANFdScheduleConfigDto> _ListCANFdScheduleConfigDto;
|
||||
/// <summary>
|
||||
///调度表集合
|
||||
/// </summary>
|
||||
public ObservableCollection<CANFdScheduleConfigDto> ListCANFdScheduleConfigDto
|
||||
{
|
||||
get { return _ListCANFdScheduleConfigDto; }
|
||||
set { _ListCANFdScheduleConfigDto = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
//private string _SelectedWriteName;
|
||||
///// <summary>
|
||||
///// 选中的写入的Name
|
||||
@@ -1298,6 +1410,45 @@ namespace CapMachine.Wpf.ViewModels
|
||||
System.Windows.MessageBox.Show("请选中后再进行【删除】操作?", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case "WriteSch"://调度表
|
||||
|
||||
var data = CanFdDriveService.CmdData.GroupBy(a => a.MsgName).Select(a => a.Key).ToList();
|
||||
|
||||
if (data != null && data.Count > 0)
|
||||
{
|
||||
//弹窗
|
||||
DialogService.ShowDialog("DialogCANFdSchConfigView", new DialogParameters() {
|
||||
{"ListMsg", CanFdDriveService.CmdData.GroupBy(a=>a.MsgName).Select(a=>a.Key).ToList() },
|
||||
{ "ListCANFdScheduleConfigDto",ListCANFdScheduleConfigDto},
|
||||
{ "SelectCanLinConfigProId",SelectCanLinConfigPro.Id},
|
||||
|
||||
}, (par) =>
|
||||
{
|
||||
if (par.Result == ButtonResult.OK)
|
||||
{
|
||||
////程序名称
|
||||
ListCANFdScheduleConfigDto = par.Parameters.GetValue<ObservableCollection<CANFdScheduleConfigDto>>("ReturnValue");
|
||||
//把更新后的最新值给当前的主集合中
|
||||
SelectCanLinConfigPro.CanFdScheduleConfigs = Mapper.Map<List<CANFdScheduleConfig>>(ListCANFdScheduleConfigDto.ToList());
|
||||
|
||||
}
|
||||
else if (par.Result == ButtonResult.Cancel)
|
||||
{
|
||||
//取消
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
System.Windows.MessageBox.Show("未发现写入的执行的命令数据,无法配置?", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
|
||||
}
|
||||
|
||||
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user