Example #1
0
        /// <summary>
        /// 继续执行给AGV发送任务
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        public SendToAgvResult ContinueTask(ContinueToAgvInfo req)
        {
            string          url      = $"http://{ip}:{port}/cms/services/rest/hikRpcService/continueTasl";
            string          param    = JsonConvert.SerializeObject(req);
            string          result   = Post(url, param);
            SendToAgvResult sdresult = JsonConvert.DeserializeObject <SendToAgvResult>(result);

            return(sdresult);
        }
Example #2
0
        /// <summary>
        /// 将信息转化继续执行发送给AGV的实体类
        /// </summary>
        /// <param name="ds"></param>
        /// <param name="desaddress"></param>
        /// <returns></returns>
        public static ContinueToAgvInfo ContinueToModel(DataSet ds, string desaddress)
        {
            ContinueToAgvInfo req = new ContinueToAgvInfo
            {
                ReqCode          = Guid.NewGuid().ToString("N"),
                ReqTime          = "",
                ClientCode       = "",
                TokenCode        = "",
                InterFaceName    = "",
                WbCode           = "",
                PodCode          = "",
                AgvCode          = "",
                TaskCode         = ds.Tables[0].Rows[0]["TaskId"].ToString(),
                TaskSeq          = "",
                Data             = "",
                NextPositionCode = new Positioncodepath
                {
                    PositionCode = desaddress,
                    Type         = "00",
                },
            };

            return(req);
        }
Example #3
0
        public string HandleCallBackData(ReciveAgeCallBack agvCallBack)
        {
            string msg = string.Empty;

            //外形检测出到达
            if (agvCallBack.Method == Arrive)
            {
                DataSet ds = DataTrans.D_GetSchByTaskIdArrive(agvCallBack.TaskCode);
                if (ds != null && ds.Tables[0].Rows.Count > 0)
                {
                    #region 读取外形检测是否报警
                    bool         flag  = false;
                    string       ssjid = ds.Tables[0].Rows[0]["SNUMBER"].ToString();
                    TransportStr ts    = lsTransport.Find(si => si.SSJID == ssjid);
                    if (ts == null)
                    {
                        return(string.Empty);
                    }

                    int      btid = Convert.ToInt32(ts.BTID);
                    byte[]   bty  = new byte[2];
                    BitArray arr  = new BitArray(bty);
                    if (!HsWcsReadalarm(out arr))
                    {
                        return("");
                    }
                    else
                    {
                        for (int i = 0; i < 3; i++)
                        {
                            int start = (btid - 1) * 3;
                            flag = arr[start + i];
                            if (flag == true)
                            {
                                break;
                            }
                        }
                    }
                    #endregion

                    string desaddress = string.Empty;
                    //如果报警返回
                    if (flag == true)
                    {
                        desaddress = ts.VAR5;
                    }
                    else
                    {
                        TransportStr rkssj = lsTransport.Find(t => t.ALLEYID == ds.Tables[0].Rows[0]["TCARGO_ALLEY_ID"].ToString());
                        if (rkssj == null)
                        {
                            return(string.Empty);
                        }
                        desaddress = rkssj.VAR5;
                    }

                    ContinueToAgvInfo req    = ContinueToModel(ds, desaddress);
                    SendToAgvResult   result = ContinueTask(req);
                    if (result.Message == "成功" && flag)
                    {
                        NotifyEvent?.Invoke("R", $"外形检测不合格,给AGV发送返回起始点成功,任务id为:{agvCallBack.TaskCode}目的地{desaddress}");
                        log.WriteLog($"外形检测不合格,给AGV发送返回起始点成功,任务id为:{agvCallBack.TaskCode}目的地{desaddress}");

                        DataTrans.P_UpdatePhase(agvCallBack.TaskCode, "1", "5", string.Empty);
                    }
                    else if (result.Message == "成功" && !flag)
                    {
                        DataTrans.P_UpdatePhase(agvCallBack.TaskCode, "3", "3", string.Empty);
                        NotifyEvent?.Invoke("R", $"外形检测合格,给AGV发送目标巷道成功,任务Id为{agvCallBack.TaskCode}目的地{desaddress}");
                        log.WriteLog($"外形检测合格,给AGV发送目标巷道成功,任务Id为{agvCallBack.TaskCode}目的地{desaddress}");
                        msg = "OK";
                    }
                    else
                    {
                        NotifyEvent?.Invoke("R", $"给AGV发送目标巷道失败,任务id为:{agvCallBack.TaskCode}");
                        log.WriteLog($"给AGV发送目标巷道失败,任务id为:{agvCallBack.TaskCode}");
                        msg = "Lost";
                    }
                }
            }
            //放货完成
            else if (agvCallBack.Method == Finish)
            {
                DataSet ds = DataTrans.D_GetSchByTaskId(agvCallBack.TaskCode);
                if (ds != null && ds.Tables[0].Rows.Count > 0)
                {
                    TransportStr ts;
                    if (ds.Tables[0].Rows[0]["TASKTYPE"].ToString() == "1")
                    {
                        ts = lsTransport.Find(si => si.ALLEYID == ds.Tables[0].Rows[0]["TCARGO_ALLEY_ID"].ToString());
                    }
                    else
                    {
                        ts = lsTransport.Find(si => si.SSJID == ds.Tables[0].Rows[0]["TCARGO_ALLEY_ID"].ToString());
                    }
                    if (ts == null)
                    {
                        return(string.Empty);
                    }
                    ts.TRAYCODE = ds.Tables[0].Rows[0]["TRAYCODE"].ToString();
                    ts.ZXRWH    = ds.Tables[0].Rows[0]["TASKNO"].ToString();

                    if (crl.HsWriteToSSJ(ts))
                    {
                        NotifyEvent?.Invoke("S", $"根据AGV反馈任务与id{agvCallBack.TaskCode}放货完成,给输送机{ts.SSJID}下发任务成功");
                        log.WriteLog($"根据AGV反馈任务id{agvCallBack.TaskCode}放货完成,给输送机{ts.SSJID}下发任务成功");
                        if (ds.Tables[0].Rows[0]["TASKTYPE"].ToString() == "1")
                        {
                            DataTrans.P_UpdatePhase(agvCallBack.TaskCode, "1", "3", string.Empty);
                        }
                        else if (ds.Tables[0].Rows[0]["TASKTYPE"].ToString() == "2")
                        {
                            DataTrans.P_UpdatePhase(agvCallBack.TaskCode, "1", "4", string.Empty);
                        }
                        msg = "OK";
                    }
                    else
                    {
                        NotifyEvent?.Invoke("S", $"根据AGV反馈任务id{agvCallBack.TaskCode}放货完成,给输送机{ts.SSJID}下发任务失败");
                        log.WriteLog($"根据AGV反馈任务id{agvCallBack.TaskCode}放货完成,给输送机{ts.SSJID}下发任务失败");
                        msg = "Lost";
                    }
                }
            }
            return(msg);
        }