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