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