Пример #1
0
        /// <summary>
        /// 处理外形检测
        /// </summary>
        /// <param name="tskID">子作业ID</param>
        /// <param name="distance">轴距</param>
        /// <param name="carSize">车辆尺寸-取物时为无效</param>
        /// <returns></returns>
        public int DealCheckCar(int tskID, int distance, string carSize)
        {
            CMasterTask mtsk = null;
            CTask       htsk = null;

            motsk.GetMTaskAndCTaskOfTid(tskID, out mtsk, out htsk);
            if (mtsk == null || htsk == null)
            {
                return(101);
            }
            if (mtsk.IsTemp == true)  //取物后存车流程
            {
                CLocation toLct = new CWLocation().SelectLctFromAddrs(htsk.ToLctAdrs);
                if (toLct.Status != CLocation.EnmLocationStatus.Temping || toLct.ICCardCode != "") //车位上有车
                {
                    motsk.IDealCheckedCar(htsk.ID, htsk.CarSize, distance);                        //依就近原则分配
                }
                else
                {
                    motsk.ITempDealCheckCar(htsk.ID, mtsk.ID, distance, htsk.CarSize, toLct.Address);
                }
            }
            else
            {
                motsk.IDealCheckedCar(htsk.ID, carSize, distance);
            }
            return(100);
        }
Пример #2
0
 //手动复位
 private void btnReset_Click(object sender, EventArgs e)
 {
     try
     {
         if (comboBoxTskType.SelectedIndex > -1)
         {
             CMasterTask mtsk = (CMasterTask)comboBoxTskType.SelectedItem;
             int         rit  = Program.mng.ManualResetMasterTask(mtsk.ID);
             if (rit == 100)
             {
                 txtUseHall.Text  = "";
                 txtIccd.Text     = "";
                 rtTskStatus.Text = "";
                 comboBoxTskType.Items.Remove(mtsk);
                 MessageBox.Show("作业已复位!");
             }
             else
             {
                 MessageBox.Show("作业未复位:" + rit.ToString());
             }
         }
         else
         {
             MessageBox.Show("请选择操作的作业!");
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
 }
Пример #3
0
 private void comboBoxTskType_SelectedIndexChanged(object sender, EventArgs e)
 {
     txtUseHall.Text  = "";
     txtIccd.Text     = "";
     rtTskStatus.Text = "";
     try
     {
         CMasterTask mtsk = (CMasterTask)comboBoxTskType.SelectedItem;
         txtUseHall.Text = mtsk.HID.ToString() + "号车厅";
         txtIccd.Text    = mtsk.ICCardCode.ToString();
         int i = 1;
         foreach (CTask tsk in mtsk.Tasks)
         {
             rtTskStatus.AppendText(i.ToString() + "、" + CHelper.CtaskEqpFormat(tsk.SMG) + "_" + CHelper.CtaskTypeFormat(tsk.Type) + " -" + CHelper.TaskStatusFormatting(tsk.Status) + Environment.NewLine);
             i++;
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show("选择作业异常:" + ex.ToString());
     }
 }
Пример #4
0
        private void DealLed4Message()
        {
            #region
            while (isStart)
            {
                try
                {
                    int total;
                    int space;
                    int occupy;
                    int fixLct;
                    int spaceBigLct;
                    Program.mng.SelectLctofInfo(out total, out space, out occupy, out fixLct, out spaceBigLct);

                    CMasterTask[] mtsks   = Program.mng.GetAllMasterTaskOfHid(14);
                    string        dataStr = "";
                    CSMG          hall    = Program.mng.SelectSMG(14);
                    if (hall.Available)
                    {
                        #region 作业
                        if (hall.nIsWorking != 0)
                        {
                            CMasterTask gmtsk = null;
                            if (mtsks != null)
                            {
                                foreach (CMasterTask mtsk in mtsks)
                                {
                                    foreach (CTask tsk in mtsk.Tasks)
                                    {
                                        if (hall.nIsWorking == tsk.ID)
                                        {
                                            gmtsk = mtsk;
                                        }
                                    }
                                }
                            }
                            if (gmtsk != null)
                            {
                                if (gmtsk.ICCardCode != "")
                                {
                                    if (gmtsk.Type == EnmMasterTaskType.GetCar)
                                    {
                                        dataStr = "当前取车卡号:" + gmtsk.ICCardCode;
                                    }
                                    else if (gmtsk.Type == EnmMasterTaskType.SaveCar)
                                    {
                                        dataStr = "当前存车卡号:" + gmtsk.ICCardCode;
                                    }
                                    else
                                    {
                                        dataStr = "当前作业卡号:" + gmtsk.ICCardCode;
                                    }
                                }
                            }
                        }
                        else
                        {
                            dataStr = "剩余空闲车位:" + space.ToString() + "  其中大车位:" + spaceBigLct.ToString();
                        }
                        #endregion
                    }
                    else
                    {
                        dataStr = " 正在维护,请稍后存取车";
                    }

                    if (dataStr != "")
                    {
                        if (string.Compare(dataStr, dataStr4) != 0)
                        {
                            myDelegate.DisplayLed4Title(dataStr);
                            dataStr4 = dataStr;
                        }
                    }

                    if (isStart)
                    {
                        Thread.Sleep(1000);
                    }
                }
                catch (Exception ex)
                {
                    CWSException.WriteError(ex.ToString());
                    Thread.Sleep(10000);
                }
            }
            #endregion
        }
Пример #5
0
        /// <summary>
        /// 临时卡取车-界面收费出车
        /// </summary>
        /// <param name="hallID">车厅号</param>
        /// <returns></returns>
        public int OCreateTempICcardGetCar(string iccode, out int hallID)
        {
            hallID = 0;
            CICCard iccd = new CWICCard().SelectByUserCode(iccode);

            if (iccd.Status == CICCard.EnmICCardStatus.Lost || iccd.Status == CICCard.EnmICCardStatus.Disposed)
            {
                return(107);
            }
            CLocation lct = new CWLocation().SelectLctFromICCode(iccode);  //依存车卡号查询车位

            if (lct == null)
            {
                return(101);  //该卡没有存车
            }
            CWSMG wsmg = new CWSMG();

            CSMG[] etvs  = wsmg.SelectSMGsOfType(CSMG.EnmSMGType.ETV);
            CSMG[] halls = wsmg.SelectSMGsCanGetCar(); //选择模式为进出、出车且可用的车厅集合

            CSMG etv;                                  //所选ETV
            CSMG hall;                                 //所选Hall

            //分配车厅、ETV
            new IEGBLL.AllocateETV.GetFeeOutAllocate().AllocateEtvAndHall(etvs, halls, lct, out etv, out hall);
            if (etv == null || hall == null)
            {
                return(102);   //没有可用的ETV或车厅
            }
            //车厅模式
            if (!wsmg.CheckHallMode(hall.ID))
            {
                return(103);
            }
            //ETV模式
            if (!wsmg.CheckEtvMode(etv.ID))
            {
                return(104);
            }
            CMasterTask mtsk = motsk.GetMasterTaskFromICCode(iccode);

            if (mtsk != null)
            {
                return(105); //当前卡号正在实行
            }
            int getCarCount = motsk.GetMTskCountFromHall(hall.ID, CMasterTask.EnmMasterTaskType.GetCar);

            if (getCarCount > CWData.MaxGetCarCount)
            {
                return(106); //当前作业已满
            }

            string mse = "收费出车- 分配ETV" + etv.ID + "  取车位:" + lct.Address + "  出车厅:" + hall.ID;

            new CWSException(mse, 0);

            string etvAddrs = wsmg.GetEtvCurrAddress(etv.ID);

            //生成作业
            motsk.OTempICcdGetCar(hall.ID, etv.ID, iccode, hall.Address, lct, etvAddrs);

            hallID = hall.ID;
            return(100);
        }
Пример #6
0
        /// <summary>
        /// 刷卡取车处理
        /// </summary>
        /// <param name="physicCard">物理卡号</param>
        public void DealCardMessage(string physicCard)
        {
            //检查车厅模式是否全自动
            if (!(new CWSMG()).CheckHallMode(moHall.ID))
            {
                motsk.AddNotification(moHall.ID, "5.wav");
                return;
            }
            CICCard iccd = new CWICCard().SelectByPhysicCard(physicCard);

            if (iccd == null)
            {
                //不是本系统用卡
                motsk.AddNotification(moHall.ID, "6.wav");
                return;
            }
            if (iccd.Status == CICCard.EnmICCardStatus.Lost || iccd.Status == CICCard.EnmICCardStatus.Disposed)
            {
                //卡已注销或挂失
                motsk.AddNotification(moHall.ID, "7.wav");
                return;
            }
            //判断该卡在其他车厅有没有进行作业
            if ((new CWTask()).CheckSameMTaskInHallFromICCd(iccd.Code, moHall.ID))
            {
                motsk.AddNotification(moHall.ID, "8.wav");
                return;
            }
            CLocation lct = new CWLocation().SelectLctFromICCode(iccd.Code);
            //获取该车厅的取车数量
            int getCarCount = motsk.GetMTskCountFromHall(moHall.ID, CMasterTask.EnmMasterTaskType.GetCar);

            #region 进车厅
            if (moHall.HallType == CSMG.EnmHallType.Entance)
            {
                if (lct == null)
                {
                    if (moHall.nIsWorking != 0)
                    {
                        //获取车厅子作业
                        CTask tsk = motsk.GetCTaskFromtskID(moHall.nIsWorking);
                        if (tsk.Status == CTask.EnmTaskStatus.ICarInWaitFirstSwipeCard)   //等待第一次刷卡
                        {
                            //处理第一次刷卡
                            motsk.DealISwipedFirstCard(tsk.ID, iccd.Code);
                        }
                        else if (tsk.Status == CTask.EnmTaskStatus.IFirstSwipedWaitforCheckSize)  //等待第二次刷卡
                        {
                            //处理第二次刷卡
                            if (tsk.ICCardCode != iccd.Code)
                            {
                                motsk.AddNotification(tsk.HID, "20.wav");
                                return;
                            }
                            motsk.DealISwipedSecondCard(tsk.ID, iccd.Code);
                        }
                        else
                        {
                            //刷卡错误请重新刷卡 或该卡正在作业请稍后
                            motsk.AddNotification(moHall.ID, "9.wav");
                        }
                    }
                    else
                    {
                        CMasterTask mtsk = motsk.GetMasterTaskFromICCode(iccd.Code);
                        if (mtsk != null)
                        {
                            //该卡正在作业,请稍后
                            motsk.AddNotification(moHall.ID, "9.wav");
                            return;
                        }
                        //车厅无车,不能存车
                        motsk.AddNotification(moHall.ID, "10.wav");
                    }
                }
                else
                {
                    //请到出车厅刷卡取车
                    motsk.AddNotification(moHall.ID, "11.wav");
                    return;
                }
            }
            #endregion

            #region 出车厅
            if (moHall.HallType == CSMG.EnmHallType.Exit)
            {
                if (lct != null)
                {
                    CMasterTask mtsk = motsk.GetMasterTaskFromICCode(iccd.Code);
                    if (mtsk == null)
                    {
                        if (getCarCount > CWData.MaxGetCarCount)
                        {
                            //取车人数多,请稍后
                            motsk.AddNotification(moHall.ID, "12.wav");
                            return;
                        }
                        if (CWData.ChargeEnable)                         //收费功能开启
                        {
                            if (iccd.Type == CICCard.EnmICCardType.Temp) //临时卡
                            {
                                motsk.AddNotification(moHall.ID, "29.wav");
                                return;
                            }
                            else if (iccd.Type == CICCard.EnmICCardType.Fixed || iccd.Type == CICCard.EnmICCardType.FixedLocation)
                            {
                                if (iccd.DueDtime > DateTime.Now)    //定期卡,使用期限到
                                {
                                    motsk.AddNotification(moHall.ID, "31.wav");
                                    return;
                                }
                            }
                        }
                        //建立刷卡取车作业
                        motsk.DealOswipedFirstCard(moHall.ID, iccd, lct);
                    }
                    else
                    {
                        //正在出库请稍后
                        motsk.AddNotification(moHall.ID, "13.wav");
                    }
                }
                else
                {
                    //该卡没有存车
                    motsk.AddNotification(moHall.ID, "14.wav");
                }
            }
            #endregion

            #region 进出车厅
            if (moHall.HallType == CSMG.EnmHallType.EnterorExit)
            {
                #region 存车
                if (lct == null) //应该是进车状态
                {
                    if (moHall.nIsWorking != 0)
                    {
                        //获取车厅子作业
                        CTask tsk = motsk.GetCTaskFromtskID(moHall.nIsWorking);
                        if (tsk.Status == CTask.EnmTaskStatus.ICarInWaitFirstSwipeCard)   //等待第一次刷卡
                        {
                            //处理第一次刷卡
                            motsk.DealISwipedFirstCard(tsk.ID, iccd.Code);
                        }
                        else if (tsk.Status == CTask.EnmTaskStatus.IFirstSwipedWaitforCheckSize)   //等待第二次刷卡
                        {
                            //处理第二次刷卡
                            if (tsk.ICCardCode != iccd.Code)
                            {
                                motsk.AddNotification(tsk.HID, "20.wav");
                            }
                            else
                            {
                                motsk.DealISwipedSecondCard(tsk.ID, iccd.Code);
                            }
                        }
                        else if (tsk.Status == CTask.EnmTaskStatus.OCarOutWaitforDriveaway)    //处理取物后存车,第三次刷卡
                        {
                            motsk.DealISwipeThirdCard(tsk, iccd);
                        }
                        else
                        {
                            //刷卡错误请重新刷卡 或该卡正在作业请稍后
                            motsk.AddNotification(moHall.ID, "9.wav");
                        }
                    }
                    else
                    {
                        CMasterTask mtsk = motsk.GetMasterTaskFromICCode(iccd.Code);
                        if (mtsk != null)
                        {
                            //该卡正在作业,请稍后
                            motsk.AddNotification(moHall.ID, "9.wav");
                            return;
                        }
                        //车厅无车,不能存车
                        motsk.AddNotification(moHall.ID, "10.wav");
                    }
                }
                #endregion

                #region 取车
                else     //应该是刷卡取车
                {
                    CMasterTask mtsk = motsk.GetMasterTaskFromICCode(iccd.Code);
                    if (mtsk == null)
                    {
                        if (getCarCount > CWData.MaxGetCarCount)
                        {
                            //取车人数多,请稍后
                            motsk.AddNotification(moHall.ID, "12.wav");
                            return;
                        }
                        if (CWData.ChargeEnable)                         //收费功能开启
                        {
                            if (iccd.Type == CICCard.EnmICCardType.Temp) //临时卡
                            {
                                motsk.AddNotification(moHall.ID, "29.wav");
                                return;
                            }
                            else if (iccd.Type == CICCard.EnmICCardType.Fixed || iccd.Type == CICCard.EnmICCardType.FixedLocation)
                            {
                                if (iccd.DueDtime > DateTime.Now)    //定期卡,使用期限到
                                {
                                    motsk.AddNotification(moHall.ID, "31.wav");
                                    return;
                                }
                            }
                        }
                        //建立刷卡取车作业
                        motsk.DealOswipedFirstCard(moHall.ID, iccd, lct);
                    }
                    else
                    {
                        //正在出库请稍后
                        motsk.AddNotification(moHall.ID, "13.wav");
                    }
                }
                #endregion
            }
            #endregion
        }
Пример #7
0
        /// <summary>
        /// 更新界面信息
        /// </summary>
        private void updateMonitior()
        {
            #region  更新状态栏信息
            try
            {
                tlStripTime.Text = DateTime.Now.ToString("yyyy-MM-dd  HH:mm:ss");
                tlstripUser.Text = Program.currOpr.Code;
                int total;
                int space;
                int occupy;
                int fixLct;
                int spaceBigLct;
                Program.mng.SelectLctofInfo(out total, out space, out occupy, out fixLct, out spaceBigLct);
                tlStripTotalNum.Text  = total.ToString();
                tlStripSpaceLct.Text  = space.ToString();
                tlStripOccupylct.Text = occupy.ToString();
                tlStripFixLct.Text    = fixLct.ToString();
                tlstripBigLct.Text    = spaceBigLct.ToString();
            }
            catch (Exception ex)
            {
                MessageBox.Show("更新状态栏信息异常:" + ex.ToString());
            }
            #endregion
            #region  更新车位信息
            try
            {
                DataGridViewCell dgvc  = null;
                CLocation[]      lctns = Program.mng.SelectAllLocations();
                if (lctns == null)
                {
                    return;
                }
                //1边
                foreach (DataGridViewRow dgvr in dataGridViewOne.Rows) //获取行值
                {
                    foreach (DataGridViewCell dgvcell in dgvr.Cells)   //获取行单元格值
                    {
                        CLocation lct = Array.Find(lctns, delegate(CLocation c)
                        {
                            return(c.Line == 1 && c.List == dgvcell.ColumnIndex &&
                                   c.Layer == 5 - dgvr.Index);
                        });
                        if (lct != null)
                        {
                            SetLocationStatusColor(lct, dgvcell);
                            dgvcell.Tag = lct;
                            if (lct.Status == EnmLocationStatus.Entering || lct.Status == EnmLocationStatus.Outing)
                            {
                                dgvc = dgvcell;
                            }
                        }
                        else
                        {
                            if (dgvcell.ColumnIndex != 0)
                            {
                                dgvcell.Style.BackColor = Color.Gray;
                            }
                        }
                    }
                }

                //二边
                foreach (DataGridViewRow dgvr in dataGridViewTwo.Rows)
                {
                    foreach (DataGridViewCell dgvcell in dgvr.Cells)
                    {
                        CLocation lct = Array.Find(lctns, (l => (
                                                               l.Line == 2 &&
                                                               l.Layer == 5 - dgvr.Index &&
                                                               l.List == dgvcell.ColumnIndex
                                                               )));
                        if (lct != null)
                        {
                            SetLocationStatusColor(lct, dgvcell);
                            dgvcell.Tag = lct;

                            if (lct.Status == EnmLocationStatus.Outing || lct.Status == EnmLocationStatus.Entering)
                            {
                                dgvc = dgvcell;
                            }
                        }
                        else
                        {
                            if (dgvcell.ColumnIndex != 0)
                            {
                                dgvcell.Style.BackColor = Color.Gray;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("更新车位信息异常:" + ex.ToString());
            }
            #endregion
            #region  更新设备状态
            #region 车厅
            try
            {
                CSMG[] halls = Program.mng.SelectSMGsOfType(EnmSMGType.Hall);
                foreach (CSMG hall in halls)
                {
                    CStatCode[] HallStatCode = Program.mng.SelectStatusCodes(hall.ID);

                    string currS = "";
                    string mode  = "";
                    if (HallStatCode != null)
                    {
                        if (HallStatCode[3].CurrentValue == 1)
                        {
                            currS = "进车";
                        }
                        else if (HallStatCode[3].CurrentValue == 2)
                        {
                            currS = "出车";
                        }

                        mode = CHelper.EqpModelFormatting(HallStatCode[4].CurrentValue);

                        if (HallStatCode[4].CurrentValue != 4 && hall.Available == true)
                        {
                            Program.mng.UpdateSMGStatus(hall.ID, false, EnmModel.Init);
                        }
                        else if (HallStatCode[4].CurrentValue == 4 && hall.Available == false)
                        {
                            Program.mng.UpdateSMGStatus(hall.ID, true, EnmModel.Init);
                        }
                    }

                    string setStat = "";
                    if (hall.HallType == EnmHallType.Entance)
                    {
                        setStat = "进";
                    }
                    else if (hall.HallType == EnmHallType.Exit)
                    {
                        setStat = "出";
                    }
                    else if (hall.HallType == EnmHallType.EnterorExit)
                    {
                        setStat = "进出";
                    }

                    string smode  = mode + "/" + currS + "/" + setStat;
                    string sAvail = hall.Available ? "是" : "否";
                    switch (hall.ID)
                    {
                    case 11:
                        lblH1Model.Text = smode;      //模式标签
                        lblH1Avail.Text = sAvail;     //可用性标签
                        if (HallStatCode != null)
                        {
                            if (HallStatCode[5].CurrentValue != 0)
                            {
                                lblH1Auto.Text     = "存车步进:";
                                lblH1AutoStep.Text = HallStatCode[5].CurrentValue.ToString();
                            }
                            if (HallStatCode[6].CurrentValue != 0)
                            {
                                lblH1Auto.Text     = "取车步进:";
                                lblH1AutoStep.Text = HallStatCode[6].CurrentValue.ToString();
                            }
                            if (HallStatCode[5].CurrentValue == 0 && HallStatCode[6].CurrentValue == 0)
                            {
                                lblH1Auto.Text     = "自动步进:";
                                lblH1AutoStep.Text = "0";
                            }
                        }
                        break;

                    case 12:
                        lblH2Model.Text = smode;
                        lblH2Avail.Text = sAvail;
                        if (HallStatCode != null)
                        {
                            if (HallStatCode[5].CurrentValue != 0)
                            {
                                lblH2Auto.Text     = "存车步进:";
                                lblH2AutoStep.Text = HallStatCode[5].CurrentValue.ToString();
                            }
                            if (HallStatCode[6].CurrentValue != 0)
                            {
                                lblH2Auto.Text     = "取车步进:";
                                lblH2AutoStep.Text = HallStatCode[6].CurrentValue.ToString();
                            }
                            if (HallStatCode[5].CurrentValue == 0 && HallStatCode[6].CurrentValue == 0)
                            {
                                lblH2Auto.Text     = "自动步进:";
                                lblH2AutoStep.Text = "0";
                            }
                        }
                        break;

                    case 13:
                        lblH3Model.Text = smode;
                        lblH3Avail.Text = sAvail;
                        if (HallStatCode != null)
                        {
                            if (HallStatCode[5].CurrentValue != 0)
                            {
                                lblH3Auto.Text     = "存车步进:";
                                lblH3AutoStep.Text = HallStatCode[5].CurrentValue.ToString();
                            }
                            if (HallStatCode[6].CurrentValue != 0)
                            {
                                lblH3Auto.Text     = "取车步进:";
                                lblH3AutoStep.Text = HallStatCode[6].CurrentValue.ToString();
                            }
                            if (HallStatCode[5].CurrentValue == 0 && HallStatCode[6].CurrentValue == 0)
                            {
                                lblH3Auto.Text     = "自动步进:";
                                lblH3AutoStep.Text = "0";
                            }
                        }
                        break;

                    case 14:
                        lblH4Model.Text = smode;
                        lblH4Avail.Text = sAvail;
                        if (HallStatCode != null)
                        {
                            if (HallStatCode[5].CurrentValue != 0)
                            {
                                lblH4Auto.Text     = "存车步进:";
                                lblH4AutoStep.Text = HallStatCode[5].CurrentValue.ToString();
                            }
                            if (HallStatCode[6].CurrentValue != 0)
                            {
                                lblH4Auto.Text     = "取车步进:";
                                lblH4AutoStep.Text = HallStatCode[6].CurrentValue.ToString();
                            }
                            if (HallStatCode[5].CurrentValue == 0 && HallStatCode[6].CurrentValue == 0)
                            {
                                lblH4Auto.Text     = "自动步进:";
                                lblH4AutoStep.Text = "0";
                            }
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("车厅更新设备状态异常:" + ex.ToString());
            }
            #endregion
            #region ETV
            try
            {
                CSMG[] etvs = Program.mng.SelectSMGsOfType(EnmSMGType.ETV);
                if (etvs != null)
                {
                    foreach (CSMG smg in etvs)
                    {
                        string address    = "";
                        string mode       = "";
                        string autoStep   = "";
                        string loadStep   = "";
                        string unloadStep = "";

                        CStatCode[] etvStatCode = Program.mng.SelectStatusCodes(smg.ID);
                        if (etvStatCode != null && etvStatCode.Length > 10)
                        {
                            try
                            {
                                if (etvStatCode[1].CurrentValue != 0)
                                {
                                    address = etvStatCode[0].CurrentValue.ToString() + "边" + etvStatCode[1].CurrentValue.ToString() + "列" +
                                              etvStatCode[2].CurrentValue.ToString() + "层";
                                }
                                else
                                {
                                    if (smg.CurrAddress != null)
                                    {
                                        string caddress = smg.CurrAddress;
                                        if (caddress.Length == 4)
                                        {
                                            address = caddress.Substring(0, 1) + "边" + caddress.Substring(1, 2) + "列" + caddress.Substring(3) + "层";
                                        }
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show("更新地址异常:" + ex.ToString());
                            }

                            try
                            {
                                mode       = CHelper.EqpModelFormatting(etvStatCode[10].CurrentValue);
                                autoStep   = etvStatCode[3].CurrentValue.ToString();
                                loadStep   = etvStatCode[4].CurrentValue.ToString();
                                unloadStep = etvStatCode[5].CurrentValue.ToString();

                                if (etvStatCode[10].CurrentValue != 4 && smg.Available == true)
                                {
                                    Program.mng.UpdateSMGStatus(smg.ID, false, EnmModel.Init);
                                }
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show("更新自动步异常:" + ex.ToString());
                            }
                        }
                        string sAvail = smg.Available ? "是" : "否";

                        switch (smg.ID)
                        {
                        case 1:
                            lblEtv1CurrAddrs.Text  = address;
                            lblEtv1Model.Text      = mode;
                            lblEtv1Avail.Text      = sAvail;
                            lblEtv1AutoStep.Text   = autoStep;
                            lblEtv1Loadstep.Text   = loadStep;
                            lblEtv1UnloadStep.Text = unloadStep;
                            break;

                        case 2:
                            lblEtv2CurrAddrs.Text  = address;
                            lblEtv2Model.Text      = mode;
                            lblEtv2Avail.Text      = sAvail;
                            lblEtv2AutoStep.Text   = autoStep;
                            lblEtv2Loadstep.Text   = loadStep;
                            lblEtv2UnloadStep.Text = unloadStep;
                            break;

                        default:
                            break;
                        }
                        //移动标签
                        if (etvStatCode != null && etvStatCode.Length > 10)
                        {
                            if (smg.ID == 1)
                            {
                                try
                                {
                                    if (etvStatCode[10].CurrentValue == 4)
                                    {
                                        if (smg.nIsWorking != 0)
                                        {
                                            lblEtv1Dis.BackColor = Color.Pink;
                                        }
                                        else
                                        {
                                            if (smg.MTskID != 0)
                                            {
                                                lblEtv1Dis.BackColor = Color.MistyRose;
                                            }
                                            else
                                            {
                                                lblEtv1Dis.BackColor = Color.PaleGreen;
                                            }
                                        }
                                    }
                                    else if (etvStatCode[10].CurrentValue != 4)
                                    {
                                        lblEtv1Dis.BackColor = Color.Chocolate;
                                    }
                                }
                                catch (Exception ex)
                                {
                                    MessageBox.Show("更新标签1颜色异常:" + ex.ToString());
                                }

                                Rectangle r = dataGridViewOne.GetCellDisplayRectangle(etvStatCode[1].CurrentValue == 0 ? 1 : etvStatCode[1].CurrentValue, 0, false);
                                lblEtv1Dis.Location = new Point(r.X + 29, lblEtv1Dis.Location.Y);
                            }
                            else if (smg.ID == 2)
                            {
                                try
                                {
                                    if (etvStatCode[10].CurrentValue == 4)
                                    {
                                        if (smg.nIsWorking != 0)
                                        {
                                            lblEtv2Dis.BackColor = Color.Pink;
                                        }
                                        else
                                        {
                                            if (smg.MTskID != 0)
                                            {
                                                lblEtv2Dis.BackColor = Color.MistyRose;
                                            }
                                            else
                                            {
                                                lblEtv2Dis.BackColor = Color.PaleGreen;
                                            }
                                        }
                                    }
                                    else if (etvStatCode[10].CurrentValue != 4)
                                    {
                                        lblEtv2Dis.BackColor = Color.Chocolate;
                                    }
                                }
                                catch (Exception ex)
                                {
                                    MessageBox.Show("更新标签2颜色异常:" + ex.ToString());
                                }
                                Rectangle r = dataGridViewOne.GetCellDisplayRectangle(etvStatCode[1].CurrentValue == 0 ? 1 : etvStatCode[1].CurrentValue, 0, false);
                                lblEtv2Dis.Location = new Point(r.X + 29, lblEtv2Dis.Location.Y);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("ETV更新设备状态异常:" + ex.ToString());
            }
            #endregion
            #endregion
            #region  更新作业状态
            try
            {
                #region Hall1
                int count = 0;
                count             = Program.mng.GetMasterTaskCountOfHid(11);
                lblH1MtskNum.Text = count.ToString();
                if (count > 0)
                {
                    CMasterTask mtsk = Program.mng.GetCurrentMasterTaskOfSMG(11);
                    if (mtsk != null)
                    {
                        #region
                        lblH1TskType.Text = CHelper.MtskTypeFormat(mtsk.Type) + "/" + mtsk.ICCardCode;
                        if (mtsk.Tasks[0].SMGType == EnmSMGType.Hall)
                        {
                            lblH1State1.Text = CHelper.TaskStatusFormatting(mtsk.Tasks[0].Status);
                        }
                        else
                        {
                            if (mtsk.Tasks[0].SMG == 1)
                            {
                                lblH1State1.Text = "ETV1" + CHelper.TaskStatusFormatting(mtsk.Tasks[0].Status);
                            }
                            else
                            {
                                lblH1State1.Text = "ETV2" + CHelper.TaskStatusFormatting(mtsk.Tasks[0].Status);
                            }
                        }

                        if (mtsk.Tasks.Length > 1)
                        {
                            if (mtsk.Tasks[1].SMG == 1)
                            {
                                lblH1State2.Text = "ETV1" + CHelper.TaskStatusFormatting(mtsk.Tasks[1].Status);
                            }
                            else
                            {
                                lblH1State2.Text = "ETV2" + CHelper.TaskStatusFormatting(mtsk.Tasks[1].Status);
                            }
                        }
                        else
                        {
                            lblH1State2.Text = "待命";
                        }
                        #endregion
                    }
                    else
                    {
                        lblH1TskType.Text = "空";
                        lblH1State1.Text  = "待命";
                        lblH1State2.Text  = "待命";
                    }
                }
                else
                {
                    lblH1TskType.Text = "空";
                    lblH1State1.Text  = "待命";
                    lblH1State2.Text  = "待命";
                }
                #endregion
                #region Hall2
                int count1 = 0;
                count1            = Program.mng.GetMasterTaskCountOfHid(12);
                lblH2MtskNum.Text = count1.ToString();
                if (count1 > 0)
                {
                    CMasterTask mtsk = Program.mng.GetCurrentMasterTaskOfSMG(12);
                    if (mtsk != null)
                    {
                        lblH2TskType.Text = CHelper.MtskTypeFormat(mtsk.Type) + "/" + mtsk.ICCardCode;
                        #region
                        if (mtsk.Tasks[0].SMGType == EnmSMGType.Hall)
                        {
                            lblH2State1.Text = CHelper.TaskStatusFormatting(mtsk.Tasks[0].Status);
                        }
                        else
                        {
                            if (mtsk.Tasks[0].SMG == 1)
                            {
                                lblH2State1.Text = "ETV1" + CHelper.TaskStatusFormatting(mtsk.Tasks[0].Status);
                            }
                            else
                            {
                                lblH2State1.Text = "ETV2" + CHelper.TaskStatusFormatting(mtsk.Tasks[0].Status);
                            }
                        }

                        if (mtsk.Tasks.Length > 1)
                        {
                            if (mtsk.Tasks[1].SMG == 1)
                            {
                                lblH2State2.Text = "ETV1" + CHelper.TaskStatusFormatting(mtsk.Tasks[1].Status);
                            }
                            else
                            {
                                lblH2State2.Text = "ETV2" + CHelper.TaskStatusFormatting(mtsk.Tasks[1].Status);
                            }
                        }
                        else
                        {
                            lblH2State2.Text = "待命";
                        }
                        #endregion
                    }
                    else
                    {
                        lblH2TskType.Text = "空";
                        lblH2State1.Text  = "待命";
                        lblH2State2.Text  = "待命";
                    }
                }
                else
                {
                    lblH2TskType.Text = "空";
                    lblH2State1.Text  = "待命";
                    lblH2State2.Text  = "待命";
                }
                #endregion
                #region Hall3
                int count3 = 0;
                count3            = Program.mng.GetMasterTaskCountOfHid(13);
                lblH3MtskNum.Text = count3.ToString();
                if (count3 > 0)
                {
                    CMasterTask mtsk = Program.mng.GetCurrentMasterTaskOfSMG(13);
                    if (mtsk != null)
                    {
                        lblH3TskType.Text = CHelper.MtskTypeFormat(mtsk.Type) + "/" + mtsk.ICCardCode;
                        #region
                        if (mtsk.Tasks[0].SMGType == EnmSMGType.Hall)
                        {
                            lblH3State1.Text = CHelper.TaskStatusFormatting(mtsk.Tasks[0].Status);
                        }
                        else
                        {
                            if (mtsk.Tasks[0].SMG == 1)
                            {
                                lblH3State1.Text = "ETV1" + CHelper.TaskStatusFormatting(mtsk.Tasks[0].Status);
                            }
                            else
                            {
                                lblH3State1.Text = "ETV2" + CHelper.TaskStatusFormatting(mtsk.Tasks[0].Status);
                            }
                        }

                        if (mtsk.Tasks.Length > 1)
                        {
                            if (mtsk.Tasks[1].SMG == 1)
                            {
                                lblH3State2.Text = "ETV1" + CHelper.TaskStatusFormatting(mtsk.Tasks[1].Status);
                            }
                            else
                            {
                                lblH3State2.Text = "ETV2" + CHelper.TaskStatusFormatting(mtsk.Tasks[1].Status);
                            }
                        }
                        else
                        {
                            lblH3State2.Text = "待命";
                        }
                        #endregion
                    }
                    else
                    {
                        lblH3TskType.Text = "空";
                        lblH3State1.Text  = "待命";
                        lblH3State2.Text  = "待命";
                    }
                }
                else
                {
                    lblH3TskType.Text = "空";
                    lblH3State1.Text  = "待命";
                    lblH3State2.Text  = "待命";
                }
                #endregion
                #region Hall4
                int count4 = 0;
                count4            = Program.mng.GetMasterTaskCountOfHid(14);
                lblH4MtskNum.Text = count4.ToString();
                if (count4 > 0)
                {
                    CMasterTask mtsk = Program.mng.GetCurrentMasterTaskOfSMG(14);
                    if (mtsk != null)
                    {
                        lblH4TskType.Text = CHelper.MtskTypeFormat(mtsk.Type) + "/" + mtsk.ICCardCode;
                        #region 作业状态
                        if (mtsk.Tasks[0].SMGType == EnmSMGType.Hall)
                        {
                            lblH4State1.Text = CHelper.TaskStatusFormatting(mtsk.Tasks[0].Status);
                        }
                        else
                        {
                            if (mtsk.Tasks[0].SMG == 1)
                            {
                                lblH4State1.Text = "ETV1" + CHelper.TaskStatusFormatting(mtsk.Tasks[0].Status);
                            }
                            else
                            {
                                lblH4State1.Text = "ETV2" + CHelper.TaskStatusFormatting(mtsk.Tasks[0].Status);
                            }
                        }

                        if (mtsk.Tasks.Length > 1)
                        {
                            if (mtsk.Tasks[1].SMG == 1)
                            {
                                lblH4State2.Text = "ETV1" + CHelper.TaskStatusFormatting(mtsk.Tasks[1].Status);
                            }
                            else
                            {
                                lblH4State2.Text = "ETV2" + CHelper.TaskStatusFormatting(mtsk.Tasks[1].Status);
                            }
                        }
                        else
                        {
                            lblH4State2.Text = "待命";
                        }
                        #endregion
                    }
                    else
                    {
                        lblH4TskType.Text = "空";
                        lblH4State1.Text  = "待命";
                        lblH4State2.Text  = "待命";
                    }
                }
                else
                {
                    lblH4TskType.Text = "空";
                    lblH4State1.Text  = "待命";
                    lblH4State2.Text  = "待命";
                }
                #endregion

                #region ETV1
                CTask tsk1 = Program.mng.GetCurrentTaskOfSMG(1);
                if (tsk1 != null)
                {
                    lblEtv1State.Text = CHelper.TaskStatusFormatting(tsk1.Status);
                    lblEtv1To.Text    = "卡" + tsk1.ICCardCode + "/源" + tsk1.FromLctAdrs + "/往" + tsk1.ToLctAdrs;
                }
                else
                {
                    lblEtv1State.Text = "待命";
                    lblEtv1To.Text    = "";
                }
                #endregion
                #region ETV2
                CTask tsk2 = Program.mng.GetCurrentTaskOfSMG(2);
                if (tsk2 != null)
                {
                    lblEtv2State.Text = CHelper.TaskStatusFormatting(tsk2.Status);
                    lblEtv2To.Text    = "卡" + tsk2.ICCardCode + "/源" + tsk2.FromLctAdrs + "/往" + tsk2.ToLctAdrs;
                }
                else
                {
                    lblEtv2State.Text = "待命";
                    lblEtv2To.Text    = "";
                }
                #endregion
            }
            catch (Exception ex)
            {
                MessageBox.Show("更新作业状态异常:" + ex.ToString());
            }
            #endregion
            #region   更新状态按钮颜色
            UpdateBtnInfoColor(btnHall1Info, 11);
            UpdateBtnInfoColor(btnHall2Info, 12);
            UpdateBtnInfoColor(btnHall3Info, 13);
            UpdateBtnInfoColor(btnHall4Info, 14);
            UpdateBtnInfoColor(btnEtv1Info, 1);
            UpdateBtnInfoColor(btnEtv2Info, 2);
            #endregion
        }