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; }
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; }
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; }