using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; namespace FPER { // // 아날로그 감지기 연동 // public class _AnalogDetect // cyim 2015.8.4 수신반을 위한 static 클래스 정리 { // 감지기 트렌드 창 활성 여부 public bool Form_Active_AnalogDetecter = false; // 현재 정의된 낮시간대 public string FireDayTime_StartHour = null; public string FireDayTime_StartMin = null; public string FireDayTime_EndHour = null; public string FireDayTime_EndMin = null; // 현재 시간이 낮이라면 true, 밤이라면 false public bool FireDayTime = false; // 아날로그 감지기의 화재 모드중 낮인지 밤인지 구분하기 위한 시간대 설정 값 public void Get_TB_DAYTIME(int ReceiverID) // cyim 2015.7.30 데이타베이스 접속 루틴 변경 { try { DacUIProcess dacUIProcess_TB_DAYTIME = new DacUIProcess(ReceiverID); string SQL = "select rdb$relation_name "; SQL = SQL + "from rdb$relations "; SQL = SQL + "where rdb$system_flag=0 "; SQL = SQL + "and rdb$relation_name = '" + "TB_DAYTIME" + "'"; DataTable checktable = dacUIProcess_TB_DAYTIME.SelectSQL(SQL); // cyim 2015.7.10 테이블이 존재하는지 먼저 살펴보도록함 if (checktable.Rows.Count != 0) { SQL = ""; SQL += " SELECT START_HOUR,START_MIN,END_HOUR,END_MIN"; SQL += " FROM TB_DAYTIME "; DataSet dao_TB_DAYTIME = dacUIProcess_TB_DAYTIME.Select(SQL); DataTable dt_TB_DAYTIME = dao_TB_DAYTIME.Tables[0]; if (dt_TB_DAYTIME.Rows.Count != 0) { foreach (DataRow dr in dt_TB_DAYTIME.Rows) { FireDayTime_StartHour = dr["START_HOUR"].ToString(); FireDayTime_StartMin = dr["START_MIN"].ToString(); FireDayTime_EndHour = dr["END_HOUR"].ToString(); FireDayTime_EndMin = dr["END_MIN"].ToString(); } } } else { // 없으면 기본값 낮시간대는 오전 6시부터 저녁 6시까지이다 FireDayTime_StartHour = "6"; FireDayTime_StartMin = "0"; FireDayTime_EndHour = "18"; FireDayTime_EndMin = "0"; } } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } // 메인에서 1초 타이머에서 사용하는 함수 public void FireDayTime_Check_Timer_Tick() { // TB_DAYTIME 이 있는 경우에만 동작한다 if (FireDayTime_StartHour == null || FireDayTime_StartMin == null || FireDayTime_EndHour == null || FireDayTime_EndMin == null) return; string NowTime = DateTime.Now.ToString("HH:mm:ss"); // yyyy-MM-dd HH:mm:ss string[] Time = NowTime.Split(':'); int Hour = Int32.Parse(Time[0]); int Minute = Int32.Parse(Time[1]); // 4자리 숫자로 계산하는 게 편하다 int CurrentTime = (Hour * 100) + Minute; int TB_DAYTIME_START = (Int32.Parse(FireDayTime_StartHour) * 100) + Int32.Parse(FireDayTime_StartMin); int TB_DAYTIME_END = (Int32.Parse(FireDayTime_EndHour) * 100) + Int32.Parse(FireDayTime_EndMin); // 시작 시간과 분이 현재 시간보다 앞서 있고 동시에 종료 시간과 분이 현재 시간보다 뒤에 있다면 낮이다 if (CurrentTime >= TB_DAYTIME_START && CurrentTime <= TB_DAYTIME_END) { // 낮 FireDayTime = true; } else { // 밤 FireDayTime = false; } } // 현재 레벨 상태값 구하기 (Normal : 0, Fault :1, PreFire : 2, Fire : 3) public int Get_LevelStatus(int Data, AnalogLevel Level) { // TB_DAYTIME 이 있는 경우에만 동작한다 if (FireDayTime_StartHour == null || FireDayTime_StartMin == null || FireDayTime_EndHour == null || FireDayTime_EndMin == null) return 0; // 현재 밤인지 낮인지 먼저 구별이 필요함 if (Data >= 0 && Data <= Convert.ToInt32(Level.FAULT_VALUE)) return 1; else { // 낮 if (FireDayTime == true) { if (Data >= Convert.ToInt32(Level.PREFIRE_VALUE) && (Data <= Convert.ToInt32(Level.FIRED_VALUE))) return 2; else if (Data >= Convert.ToInt32(Level.FIRED_VALUE)) return 3; } // 밤 else { if (Data >= Convert.ToInt32(Level.PREFIRE_VALUE) && (Data <= Convert.ToInt32(Level.FIREN_VALUE))) return 2; else if (Data >= Convert.ToInt32(Level.FIREN_VALUE)) return 3; } } // 정상 return 0; } } // // 아날로그 감지기 레벨 설정 클래스 // public class AnalogLevel { public AnalogLevel(int pFAULT_VALUE, int pPREFIRE_VALUE, int pFIRED_VALUE, int pFIREN_VALUE) { FAULT_VALUE = pFAULT_VALUE; PREFIRE_VALUE = pPREFIRE_VALUE; FIRED_VALUE = pFIRED_VALUE; FIREN_VALUE = pFIREN_VALUE; } public int FAULT_VALUE = 0; public int PREFIRE_VALUE = 0; public int FIRED_VALUE = 0; public int FIREN_VALUE = 0; } }