예제 #1
0
파일: TaskTools.cs 프로젝트: xdpcxq/WCS
        /// <summary>
        /// 行车复位
        /// </summary>
        /// <param name="dev"></param>
        /// <param name="mes"></param>
        public void ResetLoc_ABC(List <WCS_CONFIG_DEVICE> dev, out string mes)
        {
            try
            {
                int locY = 1;
                int locZ = 1;
                // 行车待命点1
                int locX1 = Convert.ToInt32(DataControl._mStools.GetValueByKey("StandbyA1"));
                // 行车待命点2
                int locX2 = Convert.ToInt32(DataControl._mStools.GetValueByKey("StandbyA2"));

                // 获取当前摆渡车资讯
                ABC a1 = new ABC(dev[0].DEVICE);
                ABC a2 = new ABC(dev[1].DEVICE);

                // 定位任务指令
                byte[] order1;
                byte[] order2;

                // 任务明细
                WCS_TASK_ITEM item1;
                WCS_TASK_ITEM item2;

                if (DataControl._mStools.BytesToInt(a1.CurrentXsite(), 0) < DataControl._mStools.BytesToInt(a2.CurrentXsite(), 0))
                {
                    // 定位任务指令
                    order1 = ABC._TaskControl(ABC.TaskLocate, a1.ABCNum(), DataControl._mStools.IntToBytes(locX1), DataControl._mStools.IntToBytes(locY), DataControl._mStools.IntToBytes(locZ));
                    order2 = ABC._TaskControl(ABC.TaskLocate, a2.ABCNum(), DataControl._mStools.IntToBytes(locX2), DataControl._mStools.IntToBytes(locY), DataControl._mStools.IntToBytes(locZ));
                    // 任务明细
                    item1 = new WCS_TASK_ITEM()
                    {
                        ITEM_ID = ItemId.行车复位,
                        ID      = 5,
                        DEVICE  = dev[0].DEVICE,
                        LOC_TO  = Convert.ToString(locX1) + "-" + Convert.ToString(locY) + "-" + Convert.ToString(locZ)
                    };
                    item2 = new WCS_TASK_ITEM()
                    {
                        ITEM_ID = ItemId.行车复位,
                        ID      = 6,
                        DEVICE  = dev[1].DEVICE,
                        LOC_TO  = Convert.ToString(locX2) + "-" + Convert.ToString(locY) + "-" + Convert.ToString(locZ)
                    };
                }
                else
                {
                    // 定位任务指令
                    order1 = ABC._TaskControl(ABC.TaskLocate, a1.ABCNum(), DataControl._mStools.IntToBytes(locX2), DataControl._mStools.IntToBytes(locY), DataControl._mStools.IntToBytes(locZ));
                    order2 = ABC._TaskControl(ABC.TaskLocate, a2.ABCNum(), DataControl._mStools.IntToBytes(locX1), DataControl._mStools.IntToBytes(locY), DataControl._mStools.IntToBytes(locZ));
                    // 任务明细
                    item1 = new WCS_TASK_ITEM()
                    {
                        ITEM_ID = ItemId.行车复位,
                        ID      = 5,
                        DEVICE  = dev[0].DEVICE,
                        LOC_TO  = Convert.ToString(locX2) + "-" + Convert.ToString(locY) + "-" + Convert.ToString(locZ)
                    };
                    item2 = new WCS_TASK_ITEM()
                    {
                        ITEM_ID = ItemId.行车复位,
                        ID      = 6,
                        DEVICE  = dev[1].DEVICE,
                        LOC_TO  = Convert.ToString(locX1) + "-" + Convert.ToString(locY) + "-" + Convert.ToString(locZ)
                    };
                }
                // 加入任务作业链表
                mes = null;
                if (dev[0].FLAG == DeviceFlag.空闲)
                {
                    DataControl._mTaskControler.StartTask(new ABCTack(item1, DeviceType.行车, order1));
                }
                else
                {
                    mes = dev[0].DEVICE + " 行车目前无法操作复位任务; \r";
                }

                if (dev[1].FLAG == DeviceFlag.空闲)
                {
                    DataControl._mTaskControler.StartTask(new ABCTack(item2, DeviceType.行车, order2));
                }
                else
                {
                    mes = mes + dev[1].DEVICE + " 行车目前无法操作复位任务; \r";
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }