using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEAWCS_Communicator;
|
using WIDESEAWCS_Core;
|
using WIDESEAWCS_DTO.AGVInfo;
|
using WIDESEAWCS_QuartzJob;
|
|
namespace WIDESEAWCS_Tasks.ConveyorLineExtend
|
{
|
public class AGVsignal
|
{
|
public static WebResponseContent AGVRequestin<T>(T conveyor) where T : ConveyorLineDTO, new()
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
if (conveyor == null) throw new Exception("请求数据为空");
|
if (string.IsNullOrEmpty(conveyor.Station)) throw new Exception("站点编号为空");
|
CommonConveyorLine conveyorLine = Storage.Devices.FirstOrDefault(x => x.DeviceName == "输送线") as CommonConveyorLine;
|
if (!conveyorLine.IsConnected) throw new Exception($"通讯连接错误,请检查网络");
|
switch (conveyor.Type)
|
{
|
case 1:
|
content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestPut, true, conveyor.Station);
|
if (content.Status) content.Status = conveyorLine.GetValue<ConveyorLine_AGV, bool>(ConveyorLine_AGV.ConveyorLinePermitPut, conveyor.Station);
|
break;
|
case 2:
|
content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVPutComplete, true, conveyor.Station);
|
break;
|
case 3:
|
content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestTake, true, conveyor.Station);
|
if (content.Status) content.Status = conveyorLine.GetValue<ConveyorLine_AGV, bool>(ConveyorLine_AGV.ConveyorLinePermitTake, conveyor.Station);
|
break;
|
case 4:
|
content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVTakeComplete, true, conveyor.Station);
|
break;
|
default: throw new Exception($"类型有误[Type:{conveyor.Type}]");
|
}
|
content = content.Status ? content.OK() : content.Error();
|
}
|
catch (Exception ex)
|
{
|
content.Error(ex.Message);
|
}
|
return content;
|
}
|
}
|
}
|