startRollerController.cs 3.9 KB
using DeviceLibrary;
using OnlineStore;
using OnlineStore.Common;
using System;
using System.Security.Cryptography;
using System.Web.Http;
using WebApi.Schemas;

namespace WebApi.Controllers
{
    [RoutePrefix("api")]
    public class startRollerController : ApiController
    {
        [HttpPost]
        public Result_20861 Get([FromBody] InParam_20861 body)
        {
            Result_20861 result = new Result_20861();
            try
            {
                var requestData = body;
                {
                    if (string.IsNullOrEmpty(requestData.cid))
                    {
                        result.code = 202;
                        result.status = "cid is empty";
                    }
                    else
                    {
                        if (body.cid.Equals("B1") || body.cid.Equals("B2"))
                        {
                            if (!RobotManage.isRunning)
                            {
                                result.code = 201;
                                result.status = crc.GetString("Res0079", "机器尚未启动不能呼叫Agv");
                                return result;
                            }
                        }
                        else
                        {
                            result.code = -1;
                            result.status = $" cid {body.cid} not exist";
                        }
                        switch (body.cid)
                        {
                            case "B1"://NS200入料口上料任务
                                      //RECEIVE  线体进料
                                      //DELIVER 线体出料
                                if ("RECEIVE".Equals(requestData.op))
                                {
                                    RobotManage.mainMachine.RightMoveInfo.NewMove(MoveStep.R40_InShelf);//等待agv到位后执行,启动进入
                                    result.status = "IS_RECEIVING";
                                }
                                else if ("DELIVER".Equals(requestData.op))
                                {
                                    RobotManage.mainMachine.RightMoveInfo.NewMove(MoveStep.R30_OutShelf);//等待agv到位后执行,启动料串离开 
                                    result.status = "IS_DELIVERING";
                                    LogUtil.info("AGVManager:下料请求,等待agv到位后执行,启动料串离开");
                                }
                                break;
                            case "B2"://NS200出料口上料任务
                                if ("RECEIVE".Equals(requestData.op))
                                {
                                    RobotManage.mainMachine.LeftMoveInfo.NewMove(MoveStep.L60_InShelf);//等待agv到位后执行,启动进入
                                    result.status = "IS_RECEIVING";
                                }
                                else if ("DELIVER".Equals(requestData.op))
                                {
                                    RobotManage.mainMachine.LeftMoveInfo.NewMove(MoveStep.L50_OutShelf);//等待agv到位后执行,启动料串离开 
                                    result.status = "IS_DELIVERING";
                                    LogUtil.info("AGVManager:下料请求,等待agv到位后执行,启动料串离开");
                                }
                                break;
                        }
                    }
                }
                LogUtil.info($"AGV请求 滚筒转:【{JsonHelper.SerializeObject(body)}】【{JsonHelper.SerializeObject(result)}】");
            }
            catch (Exception ex)
            {
                result.code = 204;
                result.status = $"parse error:{ex}";
                LogUtil.error("startRoller", ex);
            }

            return result;
        }
    }
}