using ProjectBase.Data.Logs; using ProjectBase.Data.Redis; using SIASUN.Autopilot.Device.Common; using SIASUN.Autopilot.Device.Message; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SIASUN.Autopilot.BLL.Controler { public class BlControler { // 控制器命令值 private string power = "1"; /// /// 定时器 /// private static MTimer mTime; private RedisHelper redis = new RedisHelper(0); /// /// 控制上电命令 ICU-》RCU /// /// 0=Power Off;1=Power ON;2=无效命令 /// public int RCUPowerOnRequest(PowerStatus power) { try { LogHelper.log.Info("发送RCU控制上电命令请求"); 控制器上电命令 sMsg = new 控制器上电命令() { RCU上电 = power.ToString(), 油门电机控制器上电 = power.ToString(), 制动电机控制器上电 = power.ToString(), 离合电机控制器上电 = power.ToString(), 转向电机控制器上电 = power.ToString(), 换挡臂X电机控制器上电 = power.ToString(), 换挡臂Y电机控制器上电 = power.ToString() }; SimpleCommand<控制器上电命令> cmd = new SimpleCommand<控制器上电命令>(); int r = cmd.Execute(sMsg, sMsg.GetId); LogHelper.log.Info(string.Format("发送控制器上电命令,返回值{0}", r)); if (r > 0) { mTime = new MTimer(100, 500, 1, CirculateSend); mTime.Open(); } return r; } catch (Exception ex) { LogHelper.log.Error("发送控制器上电命令出现错误", ex); return 0; } } /// /// 执行机构使能请求 /// /// 0=Disable;1=Enable /// 油门离合器控制:0=Joint;1=Release;2=无效命令 /// 实际系统控制模式请求:0=自动学习模式;1=手动学习模式;3=人工驾驶模式;4=机器人自检模式;5=机器人调试模式 /// public int RCUEnableRequest() { try { LogHelper.log.Info("发送RCU使能命令请求"); 执行机构使能请求 sMsg = new 执行机构使能请求(); sMsg = redis.GetString<执行机构使能请求>("执行机构使能请求"); SimpleCommand<执行机构使能请求> cmd = new SimpleCommand<执行机构使能请求>(); int r = cmd.Execute(sMsg, sMsg.GetId); LogHelper.log.Info(string.Format("发送执行机构使能请求,返回值{0}", r)); return r; } catch (Exception ex) { LogHelper.log.Error("发送执行机构使能请求出现错误", ex); return 0; } } /// /// 循环发送命令 /// private static void CirculateSend(object sender, long JumpPeriod, long interval) { } /// /// 学习模式请求确认 /// /// /// public int RCULearnModeRequest() { try { LogHelper.log.Info("发送RCU学习模式请求确认命令"); 学习模式请求确认 sMg = new 学习模式请求确认(); sMg = redis.GetString<学习模式请求确认>("学习模式请求确认"); SimpleCommand<学习模式请求确认> cmd = new SimpleCommand<学习模式请求确认>(); int r = cmd.Execute(sMg, sMg.GetId); LogHelper.log.Info(string.Format("发送学习模式请求确认命令,返回值{0}", r)); return r; } catch (Exception ex) { LogHelper.log.Error("发送学习模式请求确认命令出现错误", ex); return 0; } } /// /// 踏板执行机构控制命令 /// /// public int PedalControlCommand(踏板执行机构控制命令 sMg) { try { LogHelper.log.Info("发送踏板执行机构控制命令"); SimpleCommand<踏板执行机构控制命令> cmd = new SimpleCommand<踏板执行机构控制命令>(); int r = cmd.Execute(sMg, sMg.GetId); LogHelper.log.Info(string.Format("发送踏板执行机构控制命令,返回值{0}", r)); return r; } catch (Exception ex) { LogHelper.log.Error("发送踏板执行机构控制命令出现错误", ex); return 0; } } /// /// 转向执行机构控制命令 /// /// public int TurnControlCommand(转向执行机构控制命令 sMg) { try { LogHelper.log.Info("发送转向执行机构控制命令"); SimpleCommand<转向执行机构控制命令> cmd = new SimpleCommand<转向执行机构控制命令>(); int r = cmd.Execute(sMg, sMg.GetId); LogHelper.log.Info(string.Format("发送转向执行机构控制命令,返回值{0}", r)); return r; } catch (Exception ex) { LogHelper.log.Error("发送转向执行机构控制命令出现错误", ex); return 0; } } /// /// 挡位执行机构控制命令 /// /// public int GearControlCommand(挡位执行机构控制命令 sMg) { try { LogHelper.log.Info("发送挡位执行机构控制命令"); SimpleCommand<挡位执行机构控制命令> cmd = new SimpleCommand<挡位执行机构控制命令>(); int r = cmd.Execute(sMg, sMg.GetId); LogHelper.log.Info(string.Format("发送挡位执行机构控制命令,返回值{0}", r)); return r; } catch (Exception ex) { LogHelper.log.Error("发送挡位执行机构控制命令出现错误", ex); return 0; } } } }