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;
}
}
}
}