Exemple #1
0
        public void Update(string _sCrntLotNo, EN_SEQ_STAT Stat, string _sCrntDev, bool _bMaint)
        {
            long   lCrntTime = DateTime.Now.Ticks;
            long   lGapTime  = lCrntTime - lPreTime;
            double dTimeGap  = lGapTime / 10000.0f;

            if (_bMaint) //업타임 계산에서 씀
            {
                Data.FailureTime += dTimeGap;
            }
            else if (Stat == EN_SEQ_STAT.Error && ML.ER_GetErrLevel((ei)ML.ER_GetLastErr()) == EN_ERR_LEVEL.Error)
            {
                Data.DownTime += dTimeGap;
            }
            else if (Stat == EN_SEQ_STAT.Running || Stat == EN_SEQ_STAT.RunWarn)
            {
                Data.RunTime += dTimeGap;
            }
            else //Stop Init Warnning WorkEnd
            {
                Data.IdleTime += dTimeGap;
            }

            bool LotChanged = (sPreLot != _sCrntLotNo); //&& sPreLot != "" ;
            bool LotEnded   = LotChanged && _sCrntLotNo == "";
            bool LotOpened  = LotChanged && sPreLot == "";


            if (LotOpened)
            {
                //새로운랏 처리.
                DataClear();
                Data.LotNo     = _sCrntLotNo;
                Data.Device    = _sCrntDev;
                Data.StartedAt = DateTime.Now.ToOADate();
            }
            else if (LotEnded)
            {
                Data.EndedAt = DateTime.Now.ToOADate();
                SaveDataIni(Data.StartedAt);
                //이위로는 기존랏 처리.
            }
            else if (LotChanged)
            {
                Data.EndedAt = DateTime.Now.ToOADate();
                SaveDataIni(Data.StartedAt);
                //이위로는 기존랏 처리.

                //새로운랏 처리.
                DataClear();
                Data.LotNo     = _sCrntLotNo;
                Data.Device    = _sCrntDev;
                Data.StartedAt = DateTime.Now.ToOADate();
            }
            lPreTime = lCrntTime;
            //sPreLot  = "";
            sPreLot = _sCrntLotNo;
        }
Exemple #2
0
        public void Update(EN_SEQ_STAT Stat, string _sCrntDev, bool _bMaint)
        {
            string sCrntDay  = DateTime.Now.ToString("MMdd");
            long   lCrntTime = DateTime.Now.Ticks;
            long   lGapTime  = lCrntTime - lPreTime;
            double dTimeGap  = lGapTime / 10000.0f;

            if (_bMaint) //업타임 계산에서 씀
            {
                Data.FailureTime += dTimeGap;
            }
            else if (Stat == EN_SEQ_STAT.Error && ML.ER_GetErrLevel((ei)ML.ER_GetLastErr()) == EN_ERR_LEVEL.Error)
            {
                Data.DownTime += dTimeGap;
            }
            else if (Stat == EN_SEQ_STAT.Running || Stat == EN_SEQ_STAT.RunWarn)
            {
                Data.RunTime += dTimeGap;
            }
            else //Stop Init Warnning WorkEnd
            {
                Data.IdleTime += dTimeGap;
            }

            Data.Device = _sCrntDev;


            //if(DM.ARAY[ri.OALN].CheckAllStat(cs.WorkEnd) || DM.ARAY[ri.WORK].CheckAllStat(cs.WorkEnd))
            //{
            //    Data.ToTalWorkCnt++;
            //    Data.DayWorkCnt++;
            //}

            Data.ToTalWorkCnt = OM.EqpStat.iTotalWorkCnt;
            Data.DayWorkCnt   = OM.EqpStat.iDayWorkCnt;

            if (Data.LastWrkDay != sCrntDay)
            {
                OM.EqpStat.iDayWorkCnt = 0;
                //OM.EqpStat.iDayWorkUPH = 0 ;

                DataClear();
                Data.LastWrkDay = sCrntDay;
            }

            lPreTime = lCrntTime;
        }
Exemple #3
0
        public void Update(string _sCrntLotNo, EN_SEQ_STAT Stat, string _sCrntDev, bool _bMaint)
        {
            long   lCrntTime = DateTime.Now.Ticks;
            long   lGapTime  = lCrntTime - lPreTime;
            double dTimeGap  = lGapTime / 10000.0f;

            if (_bMaint) //업타임 계산에서 씀
            {
                Data.FailureTime += dTimeGap;
            }
            else if (Stat == EN_SEQ_STAT.Error && ML.ER_GetErrLevel((ei)ML.ER_GetLastErr()) == EN_ERR_LEVEL.Error)
            {
                Data.DownTime += dTimeGap;
            }
            else if (Stat == EN_SEQ_STAT.Running || Stat == EN_SEQ_STAT.RunWarn)
            {
                Data.RunTime += dTimeGap;
            }
            else //Stop Init Warnning WorkEnd
            {
                Data.IdleTime += dTimeGap;
            }

            //20190523 선계원
            //CDC장비에서는 1혈액샘플당 1랏으로 치고 픽커가 찝을때 "?"으로 랏오픈후
            //중간에 바코드 찍으면 바코드로 랏넘버를 바꿔야 함.
            if (sPreLot == "?" && _sCrntLotNo != "?")
            {
                sPreLot = _sCrntLotNo;
            }
            bool LotChanged = (sPreLot != _sCrntLotNo);//&& sPreLot != "" ;
            bool LotEnded   = LotChanged && _sCrntLotNo == "";
            bool LotOpened  = LotChanged && sPreLot == "";

            if (LotOpened)
            {
                //새로운랏 처리.
                DataClear();
                Data.LotNo     = _sCrntLotNo;
                Data.Device    = _sCrntDev;
                Data.StartedAt = DateTime.Now.ToOADate();

                OM.EqpStat.iWorkCnt    = 0;
                OM.EqpStat.iFailCnt    = 0;
                OM.EqpStat.dWorkUPH    = 0;
                OM.EqpStat.dWorkTime   = 0;
                OM.EqpStat.iReinputCnt = 0;
            }
            else if (LotEnded)
            {
                Data.EndedAt = DateTime.Now.ToOADate();
                SaveDataIni(Data.StartedAt);
                //이위로는 기존랏 처리.
            }
            else if (LotChanged)
            {
                Data.EndedAt = DateTime.Now.ToOADate();
                SaveDataIni(Data.StartedAt);
                //이위로는 기존랏 처리.

                //새로운랏 처리.
                DataClear();
                Data.LotNo     = _sCrntLotNo;
                Data.Device    = _sCrntDev;
                Data.StartedAt = DateTime.Now.ToOADate();


                OM.EqpStat.iWorkCnt    = 0;
                OM.EqpStat.iFailCnt    = 0;
                OM.EqpStat.dWorkUPH    = 0;
                OM.EqpStat.dWorkTime   = 0;
                OM.EqpStat.iReinputCnt = 0;
            }
            lPreTime = lCrntTime;
            //sPreLot  = "";
            sPreLot = _sCrntLotNo;
        }