其他程序的CAN CANFD LIN的移植
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using CapMachine.Model.CANLIN;
|
||||
using CapMachine.Wpf.CanDrive;
|
||||
using CapMachine.Wpf.Dtos;
|
||||
using ImTools;
|
||||
using Prism.Ioc;
|
||||
using Prism.Mvvm;
|
||||
@@ -20,15 +21,17 @@ namespace CapMachine.Wpf.Services
|
||||
{
|
||||
|
||||
public HighSpeedDataService HighSpeedDataService { get; }
|
||||
public LogicRuleService LogicRuleService { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 实例化函数
|
||||
/// </summary>
|
||||
public CanDriveService(HighSpeedDataService highSpeedDataService, IContainerProvider containerProvider)
|
||||
public CanDriveService(HighSpeedDataService highSpeedDataService, IContainerProvider containerProvider, LogicRuleService logicRuleService)
|
||||
{
|
||||
ToomossCanDrive = new ToomossCan(containerProvider);
|
||||
//高速数据服务
|
||||
HighSpeedDataService = highSpeedDataService;
|
||||
LogicRuleService = logicRuleService;
|
||||
|
||||
//ToomossCanDrive.StartCanDrive();
|
||||
}
|
||||
@@ -97,12 +100,38 @@ namespace CapMachine.Wpf.Services
|
||||
/// </summary>
|
||||
private CanCmdData EnableCanCmdData { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// PTC使能 指令数据 实例
|
||||
/// </summary>
|
||||
private CanCmdData PTCEnableCanCmdData { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// PTC功率 指令数据 实例
|
||||
/// </summary>
|
||||
private CanCmdData PTCPwCanCmdData { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// PTC水流量 指令数据 实例
|
||||
/// </summary>
|
||||
private CanCmdData PTCFlowCanCmdData { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// PTC水温 指令数据 实例
|
||||
/// </summary>
|
||||
private CanCmdData PTCWaterTempCanCmdData { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 要发送的CAN指令数据
|
||||
/// 在程序配置好后就确定要发送哪些数据
|
||||
/// </summary>
|
||||
public List<CanCmdData> CmdData { get; set; } = new List<CanCmdData>();
|
||||
|
||||
/// <summary>
|
||||
/// CNA 调度表的配置信息
|
||||
/// </summary>
|
||||
public List<CANScheduleConfigDto> ListCANScheduleConfig { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 增加发送的指令数据
|
||||
/// </summary>
|
||||
@@ -124,6 +153,18 @@ namespace CapMachine.Wpf.Services
|
||||
case "Anti_Sleep":
|
||||
//SpeedCanCmdData = SendCanCmdData;
|
||||
break;
|
||||
case "PTC使能":
|
||||
PTCEnableCanCmdData = SendCanCmdData;
|
||||
break;
|
||||
case "PTC功率":
|
||||
PTCPwCanCmdData = SendCanCmdData;
|
||||
break;
|
||||
case "PTC水流量":
|
||||
PTCFlowCanCmdData = SendCanCmdData;
|
||||
break;
|
||||
case "PTC水温":
|
||||
PTCWaterTempCanCmdData = SendCanCmdData;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -139,14 +180,26 @@ namespace CapMachine.Wpf.Services
|
||||
/// <param name="canCmdData"></param>
|
||||
public void UpdateSpeedCmdData(double SpeedData)
|
||||
{
|
||||
//if (SpeedCanCmdData != null)
|
||||
//{
|
||||
// SpeedCanCmdData.SignalCmdValue = SpeedData;
|
||||
//}
|
||||
if (SpeedCanCmdData != null)
|
||||
{
|
||||
SpeedCanCmdData.SignalCmdValue = SpeedData;
|
||||
//首先是否判断是有斜率
|
||||
if (SpeedCanCmdData.LogicRuleDto == null)
|
||||
{
|
||||
//没有启动逻辑规则处理
|
||||
SpeedCanCmdData.SignalCmdValue = SpeedData;
|
||||
}
|
||||
else
|
||||
{
|
||||
//LogicRuleService.ApplyExpressionFast(SpeedData, SpeedCanCmdData.LogicRuleDto);
|
||||
SpeedCanCmdData.SignalCmdValue = LogicRuleService.ApplyExpressionFast(SpeedData, SpeedCanCmdData.LogicRuleDto);
|
||||
//Console.WriteLine($"实时转换后转速值:{SpeedCanCmdData.SignalCmdValue}-SV值:{SpeedData}");
|
||||
}
|
||||
|
||||
}
|
||||
//if (EnableCanCmdData != null)
|
||||
//{
|
||||
// EnableCanCmdData.SignalCmdValue = 1;
|
||||
//}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -162,6 +215,67 @@ namespace CapMachine.Wpf.Services
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 更新压缩机的功率限制
|
||||
/// </summary>
|
||||
/// <param name="IsEnable"></param>
|
||||
public void UpdateCapPwLimitCmdData(double PwLimit)
|
||||
{
|
||||
if (PwLimitCanCmdData != null)
|
||||
{
|
||||
PwLimitCanCmdData.SignalCmdValue = PwLimit;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 更新 PTC使能信号
|
||||
/// </summary>
|
||||
/// <param name="IsEnable"></param>
|
||||
public void UpdateCapPTCEnableCmdData(bool IsEnable)
|
||||
{
|
||||
if (PTCEnableCanCmdData != null)
|
||||
{
|
||||
PTCEnableCanCmdData.SignalCmdValue = IsEnable ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新 PTC功率 信号
|
||||
/// </summary>
|
||||
/// <param name="IsEnable"></param>
|
||||
public void UpdateCapPTCPwCmdData(double PTCPw)
|
||||
{
|
||||
if (PTCPwCanCmdData != null)
|
||||
{
|
||||
PTCPwCanCmdData.SignalCmdValue = PTCPw;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新 PTC水流量 信号
|
||||
/// </summary>
|
||||
/// <param name="IsEnable"></param>
|
||||
public void UpdateCapPTCFlowCmdData(double Flow)
|
||||
{
|
||||
if (PTCFlowCanCmdData != null)
|
||||
{
|
||||
PTCFlowCanCmdData.SignalCmdValue = Flow;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新 PTC水温 信号
|
||||
/// </summary>
|
||||
/// <param name="IsEnable"></param>
|
||||
public void UpdateCapPTCWaterTempCmdData(double WaterTemp)
|
||||
{
|
||||
if (PTCWaterTempCanCmdData != null)
|
||||
{
|
||||
PTCWaterTempCanCmdData.SignalCmdValue = WaterTemp;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发送消息给CAN 驱动
|
||||
/// </summary>
|
||||
@@ -199,9 +313,39 @@ namespace CapMachine.Wpf.Services
|
||||
{
|
||||
if (CmdData.Count > 0)
|
||||
{
|
||||
ToomossCanDrive.IsCycleSend = true;
|
||||
|
||||
ToomossCanDrive.CmdData = CmdData;
|
||||
ToomossCanDrive.StartCycleSendMsg();
|
||||
|
||||
if (ToomossCanDrive.SchEnable)
|
||||
{
|
||||
|
||||
//使用调度表的话,需要在调度表中配置信息后才可以进行操作
|
||||
var GroupMsg = ToomossCanDrive.CmdData.GroupBy(a => a.MsgName).ToList();
|
||||
foreach (var itemMsg in GroupMsg)
|
||||
{
|
||||
if (!ListCANScheduleConfig.ToList().Any(a => a.MsgName == itemMsg.Key))
|
||||
{
|
||||
System.Windows.MessageBox.Show($"你使能了调度表,但是调度表中没有设置【{itemMsg.Key}】信息,请设置后再操作", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (ListCANScheduleConfig == null && ListCANScheduleConfig!.Count() == 0)
|
||||
{
|
||||
System.Windows.MessageBox.Show("调度表配置为空数据,请检查!将无法发送数据", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
|
||||
return;
|
||||
}
|
||||
ToomossCanDrive.ListCANScheduleConfig = ListCANScheduleConfig!;
|
||||
ToomossCanDrive.StartSchedule();
|
||||
ToomossCanDrive.StartCycleUpdateCmd();
|
||||
}
|
||||
else
|
||||
{
|
||||
ToomossCanDrive.StartPrecisionCycleSendMsg();
|
||||
//ToomossCanDrive.StartCycleSendMsg();
|
||||
}
|
||||
|
||||
ToomossCanDrive.IsCycleSend = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -210,7 +354,15 @@ namespace CapMachine.Wpf.Services
|
||||
}
|
||||
else
|
||||
{
|
||||
ToomossCanDrive.IsCycleSend = false;
|
||||
if (ToomossCanDrive.SchEnable)
|
||||
{
|
||||
ToomossCanDrive.IsCycleSend = false;
|
||||
ToomossCanDrive.StopSchedule();
|
||||
}
|
||||
else
|
||||
{
|
||||
ToomossCanDrive.IsCycleSend = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -230,7 +382,7 @@ namespace CapMachine.Wpf.Services
|
||||
if (ListCanDbcModel.Count > 0)
|
||||
{
|
||||
ToomossCanDrive.IsCycleRevice = true;
|
||||
ToomossCanDrive.StartPrecisionCycleSendMsg();
|
||||
ToomossCanDrive.StartCycleReviceCanMsg();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -277,7 +429,9 @@ namespace CapMachine.Wpf.Services
|
||||
if (ListCanDbcModel.Any(a => a.Name == Name))
|
||||
{
|
||||
//double.TryParse(ListCanDbcModel.FindFirst(a => a.Name == Name).SignalRtValue, out double Result1);
|
||||
//return double.TryParse(ListCanDbcModel.FindFirst(a => a.Name == Name).SignalRtValue.Split(" ")[0], out double Result) == true ? Result : 0;
|
||||
return double.TryParse(ListCanDbcModel.FindFirst(a => a.Name == Name).SignalRtValue.Split(" ")[0], out double Result) == true ? Result : 0;
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user