diff --git a/CapMachine.Wpf/LinDrive/LinCmdData.cs b/CapMachine.Wpf/LinDrive/LinCmdData.cs
index 8a37f98..9b89c56 100644
--- a/CapMachine.Wpf/LinDrive/LinCmdData.cs
+++ b/CapMachine.Wpf/LinDrive/LinCmdData.cs
@@ -1,4 +1,5 @@
-using System;
+using CapMachine.Wpf.Dtos;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -31,5 +32,17 @@ namespace CapMachine.Wpf.LinDrive
/// 没有的话,则给默认值
///
public double SignalCmdValue { get; set; }
+
+ /////
+ ///// 逻辑规则Id
+ /////
+ //public long LogicRuleId { get; set; }
+
+ ///
+ /// CanLinConfig的逻辑转换规则
+ /// 比如:速度下发的数据SV是4000,但是下发到CAN的值是40,可能是其他的逻辑转换规则,这里就是保存其中的逻辑规则
+ ///
+ public LogicRuleDto? LogicRuleDto { get; set; }
+
}
}
diff --git a/CapMachine.Wpf/Services/LinDriveService.cs b/CapMachine.Wpf/Services/LinDriveService.cs
index bd4c4f9..ecc577a 100644
--- a/CapMachine.Wpf/Services/LinDriveService.cs
+++ b/CapMachine.Wpf/Services/LinDriveService.cs
@@ -1,15 +1,9 @@
using CapMachine.Model.CANLIN;
-using CapMachine.Wpf.CanDrive;
using CapMachine.Wpf.LinDrive;
using ImTools;
using Prism.Ioc;
using Prism.Mvvm;
-using System;
-using System.Collections.Generic;
using System.Collections.ObjectModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace CapMachine.Wpf.Services
{
@@ -20,15 +14,19 @@ namespace CapMachine.Wpf.Services
{
public HighSpeedDataService HighSpeedDataService { get; }
+ public LogicRuleService LogicRuleService { get; }
+
///
/// 实例化函数
///
- public LinDriveService(HighSpeedDataService highSpeedDataService, IContainerProvider containerProvider)
+ public LinDriveService(HighSpeedDataService highSpeedDataService, IContainerProvider containerProvider, LogicRuleService logicRuleService)
{
ToomossLinDrive = new ToomossLin(containerProvider);
//高速数据服务
HighSpeedDataService = highSpeedDataService;
+ LogicRuleService = logicRuleService;
+
//ToomossLinDrive.StartLinDrive();
}
@@ -171,16 +169,32 @@ namespace CapMachine.Wpf.Services
///
public void UpdateSpeedCmdData(double SpeedData)
{
+ //if (SpeedLinCmdData != null)
+ //{
+ // SpeedLinCmdData.SignalCmdValue = SpeedData;
+ //}
+
if (SpeedLinCmdData != null)
{
- SpeedLinCmdData.SignalCmdValue = SpeedData;
- }
- //if (EnableLinCmdData != null)
- //{
- // EnableLinCmdData.SignalCmdValue = 1;
- //}
- }
+ //首先是否判断是有斜率
+ if (SpeedLinCmdData.LogicRuleDto == null)
+ {
+ //没有启动逻辑规则处理
+ SpeedLinCmdData.SignalCmdValue = SpeedData;
+ }
+ else
+ {
+ //LogicRuleService.ApplyExpressionFast(SpeedData, SpeedCanCmdData.LogicRuleDto);
+ SpeedLinCmdData.SignalCmdValue = LogicRuleService.ApplyExpressionFast(SpeedData, SpeedLinCmdData.LogicRuleDto);
+ //Console.WriteLine($"实时转换后转速值:{SpeedCanCmdData.SignalCmdValue}-SV值:{SpeedData}");
+ }
+ //if (EnableLinCmdData != null)
+ //{
+ // EnableLinCmdData.SignalCmdValue = 1;
+ //}
+ }
+ }
///
/// 更新压缩机使能数据
diff --git a/CapMachine.Wpf/ViewModels/LinConfigViewModel.cs b/CapMachine.Wpf/ViewModels/LinConfigViewModel.cs
index 7962ad2..9287034 100644
--- a/CapMachine.Wpf/ViewModels/LinConfigViewModel.cs
+++ b/CapMachine.Wpf/ViewModels/LinConfigViewModel.cs
@@ -38,7 +38,7 @@ namespace CapMachine.Wpf.ViewModels
///
public LinConfigViewModel(IDialogService dialogService, IFreeSql freeSql,
IEventAggregator eventAggregator, IRegionManager regionManager, SysRunService sysRunService,
- ConfigService configService, LinDriveService linDriveService, ComActionService comActionService,
+ ConfigService configService, LinDriveService linDriveService, ComActionService comActionService, LogicRuleService logicRuleService,
IMapper mapper, MachineRtDataService machineRtDataService)
{
//LogService = logService;
@@ -49,6 +49,7 @@ namespace CapMachine.Wpf.ViewModels
ConfigService = configService;
LinDriveService = linDriveService;
ComActionService = comActionService;
+ LogicRuleService = logicRuleService;
Mapper = mapper;
this.MachineRtDataService = machineRtDataService;
@@ -95,7 +96,8 @@ namespace CapMachine.Wpf.ViewModels
new CbxItems(){ Key="通讯PTC模块温度",Text="通讯PTC模块温度"},
};
InitLoadLinConfigPro();
-
+ //初始化写规则下拉框
+ InitWriteRuleCbx();
}
@@ -109,6 +111,7 @@ namespace CapMachine.Wpf.ViewModels
public ConfigService ConfigService { get; }
public LinDriveService LinDriveService { get; }
public ComActionService ComActionService { get; }
+ public LogicRuleService LogicRuleService { get; }
public IMapper Mapper { get; }
private MachineRtDataService MachineRtDataService { get; }
@@ -118,6 +121,50 @@ namespace CapMachine.Wpf.ViewModels
public IDialogService DialogService { get; }
+ private ObservableCollection _WriteRuleCbxItems;
+ ///
+ /// 写入的规格集合
+ ///
+ public ObservableCollection WriteRuleCbxItems
+ {
+ get { return _WriteRuleCbxItems; }
+ set { _WriteRuleCbxItems = value; RaisePropertyChanged(); }
+ }
+
+
+ #region 规则
+
+
+ ///
+ /// 逻辑更改事件
+ ///
+ ///
+ ///
+ private void LogicRuleChangeEventCall(string msg)
+ {
+ //InitWriteRuleCbx();
+ }
+
+ ///
+ /// 初始化写规则下拉框
+ ///
+ private void InitWriteRuleCbx()
+ {
+ WriteRuleCbxItems = new ObservableCollection();
+ //选择的读写规则
+ foreach (var itemRule in LogicRuleService.LogicRuleDtos)
+ {
+ WriteRuleCbxItems.Add(new CbxItems()
+ {
+ Key = itemRule.Id.ToString(),
+ Text = itemRule.Name
+ });
+ }
+ }
+
+
+ #endregion
+
#region LinConfigPro
@@ -157,6 +204,7 @@ namespace CapMachine.Wpf.ViewModels
MsgName = item.MsgFrameName,
SignalName = item.SignalName,
SignalCmdValue = double.TryParse(item.DefautValue, out double result) == true ? result : 0,
+ LogicRuleDto = Mapper.Map(item.LogicRule),
});
//LinDriveService.CmdData.Add(new LinCmdData()
//{
@@ -523,6 +571,7 @@ namespace CapMachine.Wpf.ViewModels
MsgName = item.MsgFrameName,
SignalName = item.SignalName,
SignalCmdValue = double.TryParse(item.DefautValue, out double result) == true ? result : 0,
+ LogicRuleDto = Mapper.Map(item.LogicRule),
});
//LinDriveService.CmdData.Add(new LinCmdData()
@@ -1174,6 +1223,7 @@ namespace CapMachine.Wpf.ViewModels
//直接修改
FreeSql.Update(item.Id)
.Set(a => a.Name, item.Name)
+ .Set(a => a.LogicRuleId, item.LogicRuleId)
.Set(a => a.DefautValue, item.DefautValue)
.ExecuteAffrows();
//ListWriteCanLinRWConfigDto.Remove(SelectedWriteCanLinRWConfigDto);
diff --git a/CapMachine.Wpf/Views/LINConfigView.xaml b/CapMachine.Wpf/Views/LINConfigView.xaml
index c596c7b..c2ef49b 100644
--- a/CapMachine.Wpf/Views/LINConfigView.xaml
+++ b/CapMachine.Wpf/Views/LINConfigView.xaml
@@ -813,13 +813,26 @@
-
+
+
+
+
+
+
+
+
+
+