| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481 | using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Drawing;using System.Diagnostics;using System.Windows.Forms;using System.Collections;namespace FPER{    public class UIReceiverInfo    {        int myReceiverID;        ReceiverTypeInfo myReceiverTypeInfo;      //수신기 설정값        int cnt_ReceiverCut = 0;           //차단 count        public UIReceiverInfo(int receiverid)        {            try            {                this.myReceiverID = receiverid;            }            catch (Exception ex)            {                Util.UErrorMessage(ex, 0, 0);            }        }        /****************************************************************************************************         *          *   수신기 설정값 읽어오기 : 수신기 설정값이 변경되면 호출해 준다...[시작]         *          ****************************************************************************************************/        public ReceiverTypeInfo ReadAll_ReceiverTypeInfo(MDIParent mdi)        {            ReceiverTypeInfo myReceiverTypeInfo = new ReceiverTypeInfo(this.myReceiverID);            try            {                DacBoardConfig dacBoardConfig = new DacBoardConfig(this.myReceiverID); // cyim 2015.7.30 데이타베이스 접속 루틴 변경                try                {                    /*******************************************************                     * 통신보드 설정값 읽어오기                     *******************************************************/                    DataTable dt = dacBoardConfig.Board_Select(this.myReceiverID, 0, "Y");                    if (dt.Rows.Count > 0)                    {                        // cyim 2017.01.12 : IFC3300 은 통신보드 0번이 존재한다                                 // cyim 2016.11.03 : 통신보드(중계반)는 최대 64	//통신보드수 16개로 고정                        BoardTypeInfo[] brd = new BoardTypeInfo[65];                        int boardCnt = 0;                        // cyim 2016.10.31 : 대용량 수신기용 UI 변경                        foreach (DataRow dr in dt.Rows)                        {                            int BoardId = int.Parse(Convert.ToString(dr[0]));                            // cyim 2017.01.12 : IFC3300 은 통신보드 0번이 존재한다                              if (mdi.ReceiverModel == "IFC3300")                            {                                if (BoardId == 0)                                    continue;                            }                            else                            {                                if (BoardId == 15)                                    continue;                            }                            Boolean Loop0UseFlag = Convert.ToString(dr["LOOP0_USE_FLAG"]) == "Y" ? true : false;                            Boolean Loop1UseFlag = Convert.ToString(dr["LOOP1_USE_FLAG"]) == "Y" ? true : false;                            Boolean Loop2UseFlag = Convert.ToString(Util.NullToStr(dr["LOOP2_USE_FLAG"])) == "Y" ? true : false;                            Boolean Loop3UseFlag = Convert.ToString(Util.NullToStr(dr["LOOP3_USE_FLAG"])) == "Y" ? true : false;                            Boolean Loop0CutFlag = Convert.ToString(dr["LOOP0_CUT_FLAG"]) == "Y" ? true : false;                            Boolean Loop1CutFlag = Convert.ToString(dr["LOOP1_CUT_FLAG"]) == "Y" ? true : false;                            Boolean Loop2CutFlag = Convert.ToString(Util.NullToStr(dr["LOOP2_CUT_FLAG"])) == "Y" ? true : false;                            Boolean Loop3CutFlag = Convert.ToString(Util.NullToStr(dr["LOOP3_CUT_FLAG"])) == "Y" ? true : false;                            Boolean UseFlag = Convert.ToString(dr["USE_FLAG"]) == "Y" ? true : false;                            //통신보드설정 저장                            brd[BoardId - 1] = new BoardTypeInfo(BoardId, UseFlag, Loop0UseFlag, Loop1UseFlag, Loop2UseFlag, Loop3UseFlag);                            if (Loop0UseFlag)                            {                                //Loop0의 중계기 127개의 설정정보 저장, 배열임                                brd[BoardId - 1].Loop0_RepeaterType = RepeaterTypeRead(BoardId, 0);                                brd[BoardId - 1].Loop0CutFlag = Loop0CutFlag;                            }                            if (Loop1UseFlag)                            {                                //Loop1의 중계기 127개의 설정정보 저장, 배열임                                brd[BoardId - 1].Loop1_RepeaterType = RepeaterTypeRead(BoardId, 1);                                brd[BoardId - 1].Loop1CutFlag = Loop1CutFlag;                            }                            if (Loop2UseFlag)                            {                                //Loop0의 중계기 127개의 설정정보 저장, 배열임                                brd[BoardId - 1].Loop2_RepeaterType = RepeaterTypeRead(BoardId, 2);                                brd[BoardId - 1].Loop2CutFlag = Loop2CutFlag;                            }                            if (Loop3UseFlag)                            {                                //Loop1의 중계기 127개의 설정정보 저장, 배열임                                brd[BoardId - 1].Loop3_RepeaterType = RepeaterTypeRead(BoardId, 3);                                brd[BoardId - 1].Loop3CutFlag = Loop3CutFlag;                            }                            ++boardCnt;                            Application.DoEvents();                        }                        //통신보드 설정값 저장                        myReceiverTypeInfo.MyBoardType = brd;                    }                    else                    {                        throw new Exception("통신보드 설정정보가 없습니다. 통신보드 설정정보를 확인하십시요.");                    }                }                catch (Exception ex)                {                    Util.UErrorMessage(ex, 0, 0);                    throw ex;                }            }            catch (Exception ex)            {                Util.UErrorMessage(ex, 0, 0);                throw ex;            }            return myReceiverTypeInfo;        }        //중계기 설정정보        private RepeaterDeviceTypeInfo[] RepeaterTypeRead(int BoardId, int LoopNo)        {            RepeaterDeviceTypeInfo[] repType = new RepeaterDeviceTypeInfo[127];            try            {                DacDeviceConfig dacDeviceConfig = new DacDeviceConfig(myReceiverID); // cyim 2015.7.30 데이타베이스 접속 루틴 변경                DacRepeaterConfig dacRepeaterConfig = new DacRepeaterConfig(myReceiverID); // cyim 2015.7.30 데이타베이스 접속 루틴 변경                // 특정 계통의 중계기 전체를 읽어온다.                DataTable dt = dacRepeaterConfig.Repeater_Select(this.myReceiverID, BoardId, LoopNo, 0, null);                if (dt.Rows.Count > 0)                {                    foreach (DataRow dr in dt.Rows)                    {                        //중계기설정값                        int RepeaterID = int.Parse(dr["REPEATER_ID"].ToString());                        // lch_19.04.01                        // TB_REPEATER 테이블에서 128 중계기는 없는데 DB에 있을 수 있다(교류전원이상, 예비전원이상 정보를 128 중계기로 요청한다)                         if (RepeaterID == 128) break;                        // cyim 2015.6.8 아날로그 감지기 연동 추가                        // '1' = A : 2X2                         // '2' = B : 4X4                         // '4' = C : 아날로그연감지기                         // '5' = D : 아날로그열감지기                         String RepeaterType = Convert.ToString(dr["REPEATER_TYPE"]);                        Boolean UseFlag = Convert.ToString(dr["USE_FLAG"]) == "Y" ? true : false;                        Boolean CutFlag = Convert.ToString(dr["Cut_FLAG"]) == "Y" ? true : false;                        String Divicetype = "";                        if (RepeaterType.Equals("1")) Divicetype = "A";                        else if (RepeaterType.Equals("2")) Divicetype = "B";                        else if (RepeaterType.Equals("4")) Divicetype = "C";                        else if (RepeaterType.Equals("5")) Divicetype = "D";                        RepeaterDeviceTypeInfo dev = new RepeaterDeviceTypeInfo(RepeaterID);  //중계기및 회로 설정정보                        if (!Divicetype.Equals(""))                        {                            dev.UseFlag = UseFlag;                            dev.RepeaterType = Divicetype;                            dev.CutFlag = CutFlag;                        }                        else dev.UseFlag = false;                        //회로설정값                         DataTable dt2 = dacDeviceConfig.Device_Select(this.myReceiverID, BoardId, LoopNo, RepeaterID, 0, null);                        foreach (DataRow dr2 in dt2.Rows)                        {                            int DeviceID = int.Parse(dr2["DEVICE_ID"].ToString());                            Boolean devCutFlag = dr2["CUT_FLAG"].ToString() == "Y" ? true : false;                            if (dr2["INOUT_TYPE"].ToString().Equals(code_GroupIO.Input))                            {                                dev.setInputDeviceTypeInfo(DeviceID, dr2["DEVICE_TYPE"].ToString(), dr2["DEVICE_NAME"].ToString(), dr2["POSITION_CODE"].ToString(), devCutFlag);                            }                            else                            {                                dev.setOutputDeviceTypeInfo(DeviceID, dr2["DEVICE_TYPE"].ToString(), dr2["DEVICE_NAME"].ToString(), dr2["POSITION_CODE"].ToString(), devCutFlag);                            }                        }                        repType[RepeaterID - 1] = dev;                    }                }            }            catch (Exception ex)            {                Util.UErrorMessage(ex, 0, 0);                throw ex;            }            return repType;        }        /****************************************************************************************************         *  설정값 읽어오기                                                                                                       [끝]         ****************************************************************************************************/        //TB_CONFIG의 환경정보를 불러온다.. 없는경우 생성해 준다...        public ReceiverConfigVo ReadConfig()        {            ReceiverConfigVo vo = null;            try            {                DacReceiverConfig dacReceiverConfig = new DacReceiverConfig(myReceiverID); // cyim 2015.7.30 데이타베이스 접속 루틴 변경                DataTable dt = dacReceiverConfig.Config_Select(this.myReceiverID);                if (dt.Rows.Count > 0)                {                    DataRow dr = dt.Rows[0];                    vo = new ReceiverConfigVo(this.myReceiverID);                    vo.Fire_accumulation_mode = Util.NullToStr(dr["FIRE_ACCUMULATION_MODE"]) == "Y" ? true : false;                    vo.Fire_accumulation_time = (Util.StrToInt(dr["FIRE_ACCUMULATION_TIME"], 0) > 60 ? Util.StrToInt(dr["FIRE_ACCUMULATION_TIME"], 0) / 1000 : Util.StrToInt(dr["FIRE_ACCUMULATION_TIME"], 0));                    vo.Fire_process_mode = Util.NullToStr(dr["FIRE_PROCESS_MODE"]) == "Y" ? true : false;                    vo.Sound_process_mode = Util.NullToStr(dr["SOUND_PROCESS_MODE"]) == "Y" ? true : false;                    vo.Master_user_id = Util.NullToStr(dr["MASTER_USER_ID"]);                    vo.Master_password = Util.NullToStr(dr["MASTER_PASSWORD"]);                    vo.Building_name = Util.NullToStr(dr["BUILDING_NAME"]);                    // cyim 2013.7.29 화재시화면전환 정보 데이타베이스 저장 및 읽기                    vo.Jump_field_flag = Util.NullToStr(dr["JUMP_FIELD"]);                    // cyim 2013.6.27 운전설정시에 시운전 모드 체크박스 추가 및 메인 UI 표시                    vo.Test_run_flag = Util.NullToStr(dr["TEST_RUN_FLAG"]);                    // cyim 2014.8.11 화면에 마스터인지 슬레이브인지 표시                    vo.Master_flag = Util.NullToStr(dr["MASTER_FLAG"]);                    try                    {                        vo.Background_image = Util.NullToStr(dr["BACKGROUND_IMAGE"]);                    }                    catch (Exception ex)                    {                        Util.UErrorMessage(ex, 0, 0);                    }                }                else                {                    //TB_CONFIG의 환경정보가 없는경우 기본설정정보                    vo = new ReceiverConfigVo(this.myReceiverID);                    vo.Fire_accumulation_mode = false;                    vo.Fire_accumulation_time = 0;                    vo.Fire_process_mode = false;                    vo.Sound_process_mode = false;                    vo.Master_user_id = "icontrols";                    vo.Master_password = "";                    vo.Building_name = "아이콘트롤스 빌딩";                    // cyim 2013.7.29 화재시화면전환 정보 데이타베이스 저장 및 읽기                    vo.Jump_field_flag = "N";                    // cyim 2013.6.27 운전설정시에 시운전 모드 체크박스 추가 및 메인 UI 표시                    vo.Test_run_flag = "N";                    // cyim 2014.8.11 화면에 마스터인지 슬레이브인지 표시                    vo.Master_flag = "N";                    dacReceiverConfig.Config_Update(QUERYMode.insert, this.myReceiverID, vo.Fire_accumulation_mode ? "Y" : "N"                        , vo.Fire_accumulation_time, vo.Fire_process_mode ? "Y" : "N", vo.Sound_process_mode ? "Y" : "N"                        , vo.Master_user_id, vo.Master_password                        , vo.Building_name, vo.Background_image, vo.Test_run_flag, vo.Jump_field_flag);                }            }            catch (Exception ex)            {                Util.UErrorMessage(ex, 0, 0);                throw ex;            }            return vo;        }        /************************************************************************/        /*  차단 count  : 출력회로,중계기,통신보드,Loop0,Loop1                           */        /************************************************************************/        public int Count_ReceiverCut(ReceiverTypeInfo receiverInfo)        {            this.myReceiverTypeInfo = receiverInfo;            try            {                //----------------------------------------------------------------                //                             변수초기화                //----------------------------------------------------------------                this.cnt_ReceiverCut = 0;    //차단 count                //----------------------------------------------------------------                if (receiverInfo == null) return 0;                BoardTypeInfo[] boardInfos = receiverInfo.MyBoardType; //전체통신보드                if (boardInfos != null)                {                    foreach (BoardTypeInfo brd in boardInfos)                    {                        // cyim 2016.10.31 : 계통정보는 0,1,2,3 으로 변경                        RepeaterDeviceTypeInfo[] loop0_repinfo;            //127개 중계기 설정값                        RepeaterDeviceTypeInfo[] loop1_repinfo;            //127개 중계기 설정값                        RepeaterDeviceTypeInfo[] loop2_repinfo;            //127개 중계기 설정값                        RepeaterDeviceTypeInfo[] loop3_repinfo;            //127개 중계기 설정값                        if (brd != null)                        {                            //통신보드 차단여부                            if (brd.UseFlag)                            {                                /////////////// loop 0                                if (brd.Loop0UseFlag)                                {                                    if (brd.Loop0CutFlag)                                    {                                        this.cnt_ReceiverCut++;     //Loop0  : 차단증가                                    }                                    else                                    {                                        loop0_repinfo = brd.Loop0_RepeaterType;                                        RepeaterPointUnit[] loop0_repdata = brd.Loop0_RepeaterUnit_Data;   //127개 중계기 데이터                                        foreach (RepeaterDeviceTypeInfo dev in loop0_repinfo)                                        {                                            if (dev != null)                                            {                                                int RepeaterID = dev.RepeaterNo;                                                RepeaterPointUnit unit = loop0_repdata[RepeaterID - 1];                                                //RepeaterUnit_Display(dev, unit, this.myReceiverId, brd.BoardNo, 0);       //중계기 설정타입 및 데이터로 카운트 표시                                                if (dev.UseFlag)                                                {                                                    if (dev.CutFlag)                                                    {                                                        this.cnt_ReceiverCut++;     //중계기  : 차단증가                                                    }                                                    else                                                    {                                                        if (dev.RepeaterType.Equals("A"))                                                        {  // 2*2 중계기                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[2];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[2];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 2; i++)                                                            {                                                                if (inDeviceTypeInfos == null) break;                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++; //회로차단  : 증가                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++;   //회로차단  : 증가                                                                }                                                            }                                                        }                                                        else if (dev.RepeaterType.Equals("B"))                                                        {  // 4*4 중계기                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[4];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[4];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 4; i++)                                                            {                                                                if (inDeviceTypeInfos == null) break;                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++; //회로차단  : 증가                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++;   //회로차단  : 증가                                                                }                                                            }                                                        }                                                        // cyim 2015.6.8 아날로그 감지기 연동 추가                                                        else if (dev.RepeaterType.Equals("C") || dev.RepeaterType.Equals("D"))                                                        {  // 2*2 중계기                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[1];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[1];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 1; i++)                                                            {                                                                if (inDeviceTypeInfos == null) break;                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++; //회로차단  : 증가                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++;   //회로차단  : 증가                                                                }                                                            }                                                        }                                                    }                                                }                                            }                                        }                                    }                                }                                /////////////// loop 0                                /////////////// loop 1                                if (brd.Loop1UseFlag)                                {                                    if (brd.Loop1CutFlag)                                    {                                        this.cnt_ReceiverCut++;     //Loop1  : 차단증가                                    }                                    else                                    {                                        loop1_repinfo = brd.Loop1_RepeaterType;                                        RepeaterPointUnit[] loop1_repdata = brd.Loop1_RepeaterUnit_Data;   //127개 중계기 데이터                                        foreach (RepeaterDeviceTypeInfo dev in loop1_repinfo)                                        {                                            if (dev != null)                                            {                                                int RepeaterID = dev.RepeaterNo;                                                RepeaterPointUnit unit = loop1_repdata[RepeaterID - 1];                                                //RepeaterUnit_Display(dev, unit, this.myReceiverId, brd.BoardNo, 1);       //중계기 설정타입 및 데이터로 카운트 표시                                                if (dev.UseFlag)                                                {                                                    if (dev.CutFlag)                                                    {                                                        this.cnt_ReceiverCut++;     //중계기  : 차단증가                                                    }                                                    else                                                    {                                                        if (dev.RepeaterType.Equals("A"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[2];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[2];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 2; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++; //회로차단  : 증가                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++;   //회로차단  : 증가                                                                }                                                            }                                                        }                                                        else if (dev.RepeaterType.Equals("B"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[4];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[4];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 4; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++; //회로차단  : 증가                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++;   //회로차단  : 증가                                                                }                                                            }                                                        }                                                        // cyim 2015.6.8 아날로그 감지기 연동 추가                                                        else if (dev.RepeaterType.Equals("C") || dev.RepeaterType.Equals("D"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[1];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[1];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 1; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++; //회로차단  : 증가                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++;   //회로차단  : 증가                                                                }                                                            }                                                        }                                                    }                                                }                                            }                                        }                                    }                                }                                /////////////// loop 1                                /////////////// loop 2                                if (brd.Loop2UseFlag)                                {                                    if (brd.Loop2CutFlag)                                    {                                        this.cnt_ReceiverCut++;     //Loop2  : 차단증가                                    }                                    else                                    {                                        loop2_repinfo = brd.Loop2_RepeaterType;                                        RepeaterPointUnit[] loop2_repdata = brd.Loop2_RepeaterUnit_Data;   //127개 중계기 데이터                                        foreach (RepeaterDeviceTypeInfo dev in loop2_repinfo)                                        {                                            if (dev != null)                                            {                                                int RepeaterID = dev.RepeaterNo;                                                RepeaterPointUnit unit = loop2_repdata[RepeaterID - 1];                                                //RepeaterUnit_Display(dev, unit, this.myReceiverId, brd.BoardNo, 1);       //중계기 설정타입 및 데이터로 카운트 표시                                                if (dev.UseFlag)                                                {                                                    if (dev.CutFlag)                                                    {                                                        this.cnt_ReceiverCut++;     //중계기  : 차단증가                                                    }                                                    else                                                    {                                                        if (dev.RepeaterType.Equals("A"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[2];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[2];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 2; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++; //회로차단  : 증가                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++;   //회로차단  : 증가                                                                }                                                            }                                                        }                                                        else if (dev.RepeaterType.Equals("B"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[4];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[4];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 4; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++; //회로차단  : 증가                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++;   //회로차단  : 증가                                                                }                                                            }                                                        }                                                        // cyim 2015.6.8 아날로그 감지기 연동 추가                                                        else if (dev.RepeaterType.Equals("C") || dev.RepeaterType.Equals("D"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[1];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[1];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 1; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++; //회로차단  : 증가                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++;   //회로차단  : 증가                                                                }                                                            }                                                        }                                                    }                                                }                                            }                                        }                                    }                                }                                /////////////// loop 2                                /////////////// loop 3                                if (brd.Loop3UseFlag)                                {                                    if (brd.Loop3CutFlag)                                    {                                        this.cnt_ReceiverCut++;     //Loop3  : 차단증가                                    }                                    else                                    {                                        loop3_repinfo = brd.Loop3_RepeaterType;                                        RepeaterPointUnit[] loop3_repdata = brd.Loop3_RepeaterUnit_Data;   //127개 중계기 데이터                                        foreach (RepeaterDeviceTypeInfo dev in loop3_repinfo)                                        {                                            if (dev != null)                                            {                                                int RepeaterID = dev.RepeaterNo;                                                RepeaterPointUnit unit = loop3_repdata[RepeaterID - 1];                                                //RepeaterUnit_Display(dev, unit, this.myReceiverId, brd.BoardNo, 1);       //중계기 설정타입 및 데이터로 카운트 표시                                                if (dev.UseFlag)                                                {                                                    if (dev.CutFlag)                                                    {                                                        this.cnt_ReceiverCut++;     //중계기  : 차단증가                                                    }                                                    else                                                    {                                                        if (dev.RepeaterType.Equals("A"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[2];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[2];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 2; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++; //회로차단  : 증가                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++;   //회로차단  : 증가                                                                }                                                            }                                                        }                                                        else if (dev.RepeaterType.Equals("B"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[4];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[4];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 4; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++; //회로차단  : 증가                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++;   //회로차단  : 증가                                                                }                                                            }                                                        }                                                        // cyim 2015.6.8 아날로그 감지기 연동 추가                                                        else if (dev.RepeaterType.Equals("C") || dev.RepeaterType.Equals("D"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[1];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[1];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 1; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++; //회로차단  : 증가                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag) this.cnt_ReceiverCut++;   //회로차단  : 증가                                                                }                                                            }                                                        }                                                    }                                                }                                            }                                        }                                    }                                }                                /////////////// loop 3                            }                        }                    }                }            }            catch (Exception ex)            {                Util.UErrorMessage(ex, 0, 0);                throw ex;            }            return this.cnt_ReceiverCut;        }        /************************************************************************/        /*  차단 count  : 출력회로,중계기,통신보드,Loop0,Loop1                           */        /************************************************************************/        public ArrayList Array_ReceiverCut(ReceiverTypeInfo receiverInfo)        {            this.myReceiverTypeInfo = receiverInfo;            ArrayList ary = new ArrayList();            try            {                if (receiverInfo == null) return null;                BoardTypeInfo[] boardInfos = receiverInfo.MyBoardType; //전체통신보드                if (boardInfos != null)                {                    foreach (BoardTypeInfo brd in boardInfos)                    {                        // cyim 2016.10.31 : 계통정보는 0,1,2,3 으로 변경                        RepeaterDeviceTypeInfo[] loop0_repinfo;            //127개 중계기 설정값                        RepeaterDeviceTypeInfo[] loop1_repinfo;            //127개 중계기 설정값                        RepeaterDeviceTypeInfo[] loop2_repinfo;            //127개 중계기 설정값                        RepeaterDeviceTypeInfo[] loop3_repinfo;            //127개 중계기 설정값                        if (brd != null)                        {                            if (brd.UseFlag)          //통신보드 차단여부                            {                                /////////////// loop 0                                if (brd.Loop0UseFlag)                                {                                    if (brd.Loop0CutFlag)                                    {                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                            , brd.BoardNo, 0, 0, 0, "A", true, MappingStatus.Normal, string.Format("통신보드[{0}] LOOP0 차단", brd.BoardNo));                                        ary.Add(eventLogMsg);                                    }                                    else                                    {                                        loop0_repinfo = brd.Loop0_RepeaterType;                                        RepeaterPointUnit[] loop0_repdata = brd.Loop0_RepeaterUnit_Data;   //127개 중계기 데이터                                        foreach (RepeaterDeviceTypeInfo dev in loop0_repinfo)                                        {                                            if (dev != null)                                            {                                                int RepeaterID = dev.RepeaterNo;                                                RepeaterPointUnit unit = loop0_repdata[RepeaterID - 1];                                                //RepeaterUnit_Display(dev, unit, this.myReceiverId, brd.BoardNo, 0);       //중계기 설정타입 및 데이터로 카운트 표시                                                if (dev.UseFlag)                                                {                                                    if (dev.CutFlag)                                                    {                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                            , brd.BoardNo, 0, RepeaterID, 0, "A", true, MappingStatus.Normal, string.Format("통신보드[{0}] LOOP0 중계기[{1}] 차단", brd.BoardNo, RepeaterID));                                                        ary.Add(eventLogMsg);                                                    }                                                    else                                                    {                                                        if (dev.RepeaterType.Equals("A"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[2];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[2];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 2; i++)                                                            {                                                                if (inDeviceTypeInfos == null) break;                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag) //입력회로차단  : 증가                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 0, RepeaterID, i + 1, "I", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP0 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "I"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag) //출력회로차단  : 증가                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 0, RepeaterID, i + 1, "O", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP0 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "O"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                            }                                                        }                                                        else if (dev.RepeaterType.Equals("B"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[4];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[4];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 4; i++)                                                            {                                                                if (inDeviceTypeInfos == null) break;                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 0, RepeaterID, i + 1, "I", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP0 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "I"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 0, RepeaterID, i + 1, "O", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP0 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "O"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                            }                                                        }                                                        // cyim 2015.6.8 아날로그 감지기 연동 추가                                                        else if (dev.RepeaterType.Equals("C") || dev.RepeaterType.Equals("D"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[1];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[1];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 1; i++)                                                            {                                                                if (inDeviceTypeInfos == null) break;                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag) //입력회로차단  : 증가                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 0, RepeaterID, i + 1, "I", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP0 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "I"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag) //출력회로차단  : 증가                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 0, RepeaterID, i + 1, "O", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP0 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "O"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                            }                                                        }                                                    }                                                }                                            }                                        }                                    }                                }                                /////////////// loop 0                                /////////////// loop 1                                if (brd.Loop1UseFlag)                                {                                    if (brd.Loop1CutFlag)                                    {                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                            , brd.BoardNo, 1, 0, 0, "A", true, MappingStatus.Normal, string.Format("통신보드[{0}] LOOP1 차단", brd.BoardNo));                                        ary.Add(eventLogMsg);                                    }                                    else                                    {                                        loop1_repinfo = brd.Loop1_RepeaterType;                                        RepeaterPointUnit[] loop1_repdata = brd.Loop1_RepeaterUnit_Data;   //127개 중계기 데이터                                        foreach (RepeaterDeviceTypeInfo dev in loop1_repinfo)                                        {                                            if (dev != null)                                            {                                                int RepeaterID = dev.RepeaterNo;                                                RepeaterPointUnit unit = loop1_repdata[RepeaterID - 1];                                                //RepeaterUnit_Display(dev, unit, this.myReceiverId, brd.BoardNo, 1);       //중계기 설정타입 및 데이터로 카운트 표시                                                if (dev.UseFlag)                                                {                                                    if (dev.CutFlag)                                                    {                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                            , brd.BoardNo, 1, RepeaterID, 0, "A", true, MappingStatus.Normal, string.Format("통신보드[{0}] LOOP1 중계기[{1}] 차단", brd.BoardNo, RepeaterID));                                                        ary.Add(eventLogMsg);                                                    }                                                    else                                                    {                                                        if (dev.RepeaterType.Equals("A"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[2];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[2];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 2; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 1, RepeaterID, i + 1, "I", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP1 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "I"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 1, RepeaterID, i + 1, "O", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP1 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "O"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                            }                                                        }                                                        else if (dev.RepeaterType.Equals("B"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[4];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[4];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 4; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 1, RepeaterID, i + 1, "I", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP1 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "I"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 1, RepeaterID, i + 1, "O", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP1 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "O"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                            }                                                        }                                                        // cyim 2015.6.8 아날로그 감지기 연동 추가                                                        else if (dev.RepeaterType.Equals("C") || dev.RepeaterType.Equals("D"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[1];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[1];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 1; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 1, RepeaterID, i + 1, "I", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP1 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "I"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 1, RepeaterID, i + 1, "O", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP1 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "O"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                            }                                                        }                                                    }                                                }                                            }                                        }                                    }                                }                                /////////////// loop 1                                /////////////// loop 2                                if (brd.Loop2UseFlag)                                {                                    if (brd.Loop2CutFlag)                                    {                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                            , brd.BoardNo, 2, 0, 0, "A", true, MappingStatus.Normal, string.Format("통신보드[{0}] LOOP2 차단", brd.BoardNo));                                        ary.Add(eventLogMsg);                                    }                                    else                                    {                                        loop2_repinfo = brd.Loop2_RepeaterType;                                        RepeaterPointUnit[] loop2_repdata = brd.Loop2_RepeaterUnit_Data;   //127개 중계기 데이터                                        foreach (RepeaterDeviceTypeInfo dev in loop2_repinfo)                                        {                                            if (dev != null)                                            {                                                int RepeaterID = dev.RepeaterNo;                                                RepeaterPointUnit unit = loop2_repdata[RepeaterID - 1];                                                //RepeaterUnit_Display(dev, unit, this.myReceiverId, brd.BoardNo, 1);       //중계기 설정타입 및 데이터로 카운트 표시                                                if (dev.UseFlag)                                                {                                                    if (dev.CutFlag)                                                    {                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                            , brd.BoardNo, 2, RepeaterID, 0, "A", true, MappingStatus.Normal, string.Format("통신보드[{0}] LOOP2 중계기[{1}] 차단", brd.BoardNo, RepeaterID));                                                        ary.Add(eventLogMsg);                                                    }                                                    else                                                    {                                                        if (dev.RepeaterType.Equals("A"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[2];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[2];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 2; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 2, RepeaterID, i + 1, "I", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP2 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "I"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 2, RepeaterID, i + 1, "O", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP2 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "O"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                            }                                                        }                                                        else if (dev.RepeaterType.Equals("B"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[4];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[4];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 4; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 2, RepeaterID, i + 1, "I", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP2 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "I"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 2, RepeaterID, i + 1, "O", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP2 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "O"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                            }                                                        }                                                        // cyim 2015.6.8 아날로그 감지기 연동 추가                                                        else if (dev.RepeaterType.Equals("C") || dev.RepeaterType.Equals("D"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[1];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[1];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 1; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 2, RepeaterID, i + 1, "I", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP2 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "I"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 2, RepeaterID, i + 1, "O", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP2 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "O"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                            }                                                        }                                                    }                                                }                                            }                                        }                                    }                                }                                /////////////// loop 2                                /////////////// loop 3                                if (brd.Loop3UseFlag)                                {                                    if (brd.Loop3CutFlag)                                    {                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                            , brd.BoardNo, 3, 0, 0, "A", true, MappingStatus.Normal, string.Format("통신보드[{0}] LOOP3 차단", brd.BoardNo));                                        ary.Add(eventLogMsg);                                    }                                    else                                    {                                        loop3_repinfo = brd.Loop3_RepeaterType;                                        RepeaterPointUnit[] loop3_repdata = brd.Loop3_RepeaterUnit_Data;   //127개 중계기 데이터                                        foreach (RepeaterDeviceTypeInfo dev in loop3_repinfo)                                        {                                            if (dev != null)                                            {                                                int RepeaterID = dev.RepeaterNo;                                                RepeaterPointUnit unit = loop3_repdata[RepeaterID - 1];                                                //RepeaterUnit_Display(dev, unit, this.myReceiverId, brd.BoardNo, 1);       //중계기 설정타입 및 데이터로 카운트 표시                                                if (dev.UseFlag)                                                {                                                    if (dev.CutFlag)                                                    {                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                            , brd.BoardNo, 3, RepeaterID, 0, "A", true, MappingStatus.Normal, string.Format("통신보드[{0}] LOOP3 중계기[{1}] 차단", brd.BoardNo, RepeaterID));                                                        ary.Add(eventLogMsg);                                                    }                                                    else                                                    {                                                        if (dev.RepeaterType.Equals("A"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[2];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[2];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 2; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 3, RepeaterID, i + 1, "I", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP3 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "I"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 3, RepeaterID, i + 1, "O", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP3 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "O"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                            }                                                        }                                                        else if (dev.RepeaterType.Equals("B"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[4];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[4];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 4; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 3, RepeaterID, i + 1, "I", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP3 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "I"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 3, RepeaterID, i + 1, "O", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP3 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "O"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                            }                                                        }                                                        // cyim 2015.6.8 아날로그 감지기 연동 추가                                                        else if (dev.RepeaterType.Equals("C") || dev.RepeaterType.Equals("D"))                                                        {                                                            DeviceTypeInfo[] inDeviceTypeInfos = new DeviceTypeInfo[1];                                                            DeviceTypeInfo[] outDeviceTypeInfos = new DeviceTypeInfo[1];                                                            inDeviceTypeInfos = dev.inDeviceTypeInfos;                                                            outDeviceTypeInfos = dev.outDeviceTypeInfos;                                                            for (int i = 0; i < 1; i++)                                                            {                                                                if (inDeviceTypeInfos[i] != null)                                                                {                                                                    if (inDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 3, RepeaterID, i + 1, "I", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP3 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "I"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                                if (outDeviceTypeInfos[i] != null)                                                                {                                                                    if (outDeviceTypeInfos[i].CutFlag)                                                                    {                                                                        EventLogInfo eventLogMsg = CreateEventLogInfo("CE", receiverInfo.ReceiverNo, 1                                                                            , brd.BoardNo, 3, RepeaterID, i + 1, "O", true, MappingStatus.Normal                                                                            , string.Format("통신보드[{0}] LOOP3 중계기[{1}] 회로[{2}] 타입[{3}] 차단", brd.BoardNo, RepeaterID, i + 1, "O"));                                                                        ary.Add(eventLogMsg);                                                                    }                                                                }                                                            }                                                        }                                                    }                                                }                                            }                                        }                                    }                                }                                /////////////// loop 3                            }                            //else                            //{                            //    this.cnt_ReceiverCut++;     //통신보드 : 차단증가                            //}                        }                    }                }            }            catch (Exception ex)            {                Util.UErrorMessage(ex, 0, 0);                throw ex;            }            return ary;        }        //이벤트 로그 메세지 생성        private EventLogInfo CreateEventLogInfo(String Command_type, int Receiver_id            , int Comm_id, int Board_id, int Loop_no, int Repeater_id, int Device_id, String Inout_type            , bool LiveMsgFlag, MappingStatus EventStatus, string message            )        {            EventLogInfo eventLogInfo = null;            try            {                DateTime commandTime = DateTime.Now;                //               * 'L'  밀리 세컨드. 필요에 따라서 0을 선두에 추가해, 3 자리수로 표현합니다 (000 - 999).                  //* 'N'  나노초. 필요에 따라서 0을 선두에 추가해, 9 자리수로 표현합니다 (000000000 - 999999999).                  string commandId = String.Format("{0:yyyy}{0:MM}{0:dd}{0:HH}{0:mm}{0:ss}{9:00000}{1}{2:00}{3:0}{4:00}{5:0}{6:000}{7:00}{8}", commandTime, Command_type                    , Receiver_id, Comm_id, Board_id, Loop_no, Repeater_id, Device_id, Inout_type, commandTime.Millisecond);                eventLogInfo = new EventLogInfo(commandId);                //MskDeviceIDString device_str = new MskDeviceIDString(                //    Comm_id, Board_id, Loop_no, Repeater_id, Device_id, Inout_type);                string eventTypeName = "차단설정";                //string message = String.Format("[{0}]{1} ", Command_type, eventTypeName);                string command_time = String.Format("{0:yyyy}{0:MM}{0:dd}{0:HH}{0:mm}{0:ss}{1:00000}", commandTime, commandTime.Millisecond);                //eventLogInfo.EventTime = command_time;                eventLogInfo.EventTime = commandTime;                eventLogInfo.EventType = Command_type;      //-----------------------                eventLogInfo.EventTypeName = eventTypeName;     //-----------------------                eventLogInfo.Message = message;     //-----------------------                eventLogInfo.EventStatus = EventStatus;                eventLogInfo.LiveMsgFlag = LiveMsgFlag;                eventLogInfo.ReceiverID = Receiver_id;                eventLogInfo.CommId = Comm_id;                eventLogInfo.BoardNo = Board_id;                eventLogInfo.LoopNo = Loop_no;                eventLogInfo.RepeaterNo = Repeater_id;                eventLogInfo.DeviceId = Device_id;                eventLogInfo.InoutType = Inout_type;                eventLogInfo.DeviceMessage = Util.device_message(Inout_type, Receiver_id, Comm_id, Board_id, Loop_no, Repeater_id, Device_id);                //eventLogInfo.Confirm_flag = "N";                //eventLogInfo.Confirm_remark = message;            }            catch (Exception ex)            {                Util.UErrorMessage(ex, 0, 0);                //MessageBox.Show(string.Format("[{0}]\r\n{1}", ex.Message, ex.Source), Application.ProductName);                //Debug.WriteLine(ex.Message);            }            return eventLogInfo;        }    }    //환경설정정보    public class ReceiverConfigVo    {        private int receiver_id = 0;     //현재수신기ID        private bool fire_accumulation_mode = false;  //축적모드        private int fire_accumulation_time = 0;    //축적시간(초)-설정값        private int fire_accumulation_second = 0;    //축적시간(초)        private bool fire_process_mode = false;   //화재모드        private bool sound_process_mode = false;   //지구음향모드--사용안함        private string master_user_id = "";   //관리자ID        private string master_password = "";   //관리자PASSWORD        private string building_name = "아이콘트롤스 빌딩";   //건물명        //private string background_image = null;   //바탕이미지        private string background_image = null;   //바탕이미지        //D:\타기작업실\아이콘트롤스\이미지        private bool fire_accumulation_start = false;    //축적감지 시작        // cyim 2013.7.29 화재시화면전환 정보 데이타베이스 저장 및 읽기        private string jump_field_flag = "";        // cyim 2013.6.27 운전설정시에 시운전 모드 체크박스 추가 및 메인 UI 표시         private string test_run_flag = "";        // cyim 2014.8.11 화면에 마스터인지 슬레이브인지 표시        private string master_flag = "";        public ReceiverConfigVo(int recevier_id)        {            this.receiver_id = recevier_id;        }        public bool Fire_accumulation_mode { get { return this.fire_accumulation_mode; } set { this.fire_accumulation_mode = value; } }        public int Fire_accumulation_time { get { return this.fire_accumulation_time; } set { this.fire_accumulation_time = value; this.fire_accumulation_second = value; } }        public int Fire_accumulation_second { get { return this.fire_accumulation_second; } set { this.fire_accumulation_second = value; } }        public bool Fire_process_mode { get { return this.fire_process_mode; } set { this.fire_process_mode = value; } }        public bool Sound_process_mode { get { return this.sound_process_mode; } set { this.sound_process_mode = value; } }        public string Master_user_id { get { return this.master_user_id; } set { this.master_user_id = value; } }        public string Master_password { get { return this.master_password; } set { this.master_password = value; } }        public bool Fire_accumulation_start { get { return this.fire_accumulation_start; } set { this.fire_accumulation_start = value; } }        public string Building_name { get { return this.building_name; } set { this.building_name = value; } }        //public string Background_image { get { return this.background_image; } set { this.background_image = value; } }        public string Background_image { get { return this.background_image; } set { this.background_image = value; } }        // cyim 2013.7.29 화재시화면전환 정보 데이타베이스 저장 및 읽기        public string Jump_field_flag { get { return this.jump_field_flag; } set { this.jump_field_flag = value; } }        // cyim 2013.6.27 운전설정시에 시운전 모드 체크박스 추가 및 메인 UI 표시         public string Test_run_flag { get { return this.test_run_flag; } set { this.test_run_flag = value; } }        // cyim 2014.8.11 화면에 마스터인지 슬레이브인지 표시        public string Master_flag { get { return this.master_flag; } set { this.master_flag = value; } }        public void Fire_accumulation_reset()        {            try            {                this.fire_accumulation_second = this.fire_accumulation_time;            }            catch (Exception ex)            {                Util.UErrorMessage(ex, 0, 0);            }        }    }    public class ReceiverAlarmProcess    {        private int errorCnt = 0;   //통신에러카운트        private int fireCnt = 0;    //화재발생카운트        private int writeCnt = 0;   //설비가동카운트        private int blockingCnt = 0;     //단선카운트        private int cutCnt = 0;     //차단카운트        private RCVData_ReadNotifyStatus[] fireStatus;    //화재발생내역        private RCVData_ReadNotifyStatus[] writeStatus;   //설비가동내역        private RCVData_ReadNotifyStatus[] faultStatus;   //Fault내역        public ReceiverAlarmProcess()        {            try            {                fireStatus = new RCVData_ReadNotifyStatus[0];                writeStatus = new RCVData_ReadNotifyStatus[0];                faultStatus = new RCVData_ReadNotifyStatus[0];            }            catch (Exception ex)            {                Util.UErrorMessage(ex, 0, 0);            }        }        public int ErrorCnt { get { return this.errorCnt; } set { this.errorCnt = value; } }        public int FireCnt { get { return this.fireCnt; } set { this.fireCnt = value; } }        public int WriteCnt { get { return this.writeCnt; } set { this.writeCnt = value; } }        public int BlockingCnt { get { return this.blockingCnt; } set { this.blockingCnt = value; } }        public int CutCnt { get { return this.cutCnt; } set { this.cutCnt = value; } }        //화재목록에 추가        public void FireSatusAdd(RCVData_ReadNotifyStatus res)        {            try            {                int cnt = fireStatus.Length;                Array.Resize(ref fireStatus, cnt + 1);            }            catch (Exception ex)            {                Util.UErrorMessage(ex, 0, 0);                throw ex;                //MessageBox.Show(string.Format("[{0}]\r\n{1}", ex.Message, ex.Source), Application.ProductName);            }        }        //화재목록에서 제외        public void FireSatusDel(RCVData_ReadNotifyStatus res)        {            try            {                int cnt = fireStatus.Length;                RCVData_ReadNotifyStatus[] nfireStatus = new RCVData_ReadNotifyStatus[cnt];                Array.Copy(fireStatus, 0, nfireStatus, 0, cnt);                for (int i = 0; i < cnt; i++)                {                    if (nfireStatus[i] == res)                    {                        Array.Resize(ref fireStatus, cnt - 1);                        Array.Copy(fireStatus, 0, nfireStatus, 0, cnt);                    }                }            }            catch (Exception ex)            {                Util.UErrorMessage(ex, 0, 0);                throw ex;                //Debug.WriteLine(ex.Message);            }        }    }}
 |