| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570 | using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace IControls_FireManager{    public partial class Form_Receiver_Add : Form    {        // 클래스 생성        _RECEIVER RECEIVER = new _RECEIVER();        private int _RETRY_COUNT = 2;        private int _DELTA_VOLT = 10;        private int _COMM_TIMEOUT = 1000;        private int _COMM_DELAY = 100;        // 신규추가용 인지 편집용 구분        private bool EditMode = false; // true : 편집용 , false = 신규추가용        // 수신기 추가 혹은 수신기 정보를 편집할때 사용되는 클래스이다         // iIndex : 0 이 들어오는 경우 -> 데이타베이스에 수신기 아이디가 존재한다면 새로운 아이디를 생성하고, 폴더 생성및 데이타베이스를 카피한다         // iIndex : 수신기 ID 값이 들어오는 경우 -> 수신기 정보를 편집        private string DEFAULT_MODEL = "IFC3300";        public Form_Receiver_Add(int iIndex)        {            ///            /// 초기화            ///              InitializeComponent();            // 리시버 데이터 초기화            // 사용하지 않는 값들은 기본값으로 입력한다.            // 사용여부 (미사용)            RECEIVER.ENABLE = true;            // 타입 (미사용)            RECEIVER.TYPE = null;            // 이중화 플래그 (항상 false 설정함.  입력용 화면도 없음.)            RECEIVER.REDUNDANT_FLAG = false;            // =============================================            //// 통신보드 최대개수 // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경            //if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER]).MODEL == "IFC3300")            //    RECEIVER.COM_BOARD_MAX_NUM = 68; // cyim             //else            //    RECEIVER.COM_BOARD_MAX_NUM = 15;            // IO보드 최대개수            RECEIVER.IO_BOARD_MAX_NUM = 15;            RECEIVER.ID = iIndex.ToString();            // 프로젝트 새로 만들기 구조 변경            //  -> 프로젝트 폴더는 해쉬테이블에 없다면 곧바로 생성            //  -> 해쉬테이블이 있다면 분명 편집모드로 진입            //  -> 해쉬테이블에 없다면 새로운 수신기 추가 -> Initialize_Defalut 실행            //  -> 해쉬테이블에 없지만 기존의 데이타베이스에 있는경우 (데이타베이스 열기 시도하는 경우) -> Initialize_SubPort_FromDB 실행             //    -> 참고 : 프로젝트 폴더 생성시 중복된 데이타베이스 파일 예외처리되므로 가능함            // 기존의  ID 가 있는지 체크.            if (_Data.HASH_RECEIVER.ContainsKey(RECEIVER.ID) == false)            {                //                // 데이타베이스 접근 경로 지정부                //                _Data.DataBaseFilePath_Set(null);//RECEIVER.ID);                // 수신기 폴더 생성                _File.Create_ReceiverFolder(_Data.Project_Path, _Data.Project_Name, RECEIVER.ID);                // 수신기 ID 조회 : 0 이면 수신기 ID 가 없다                if (Initialize_Receiver_FromDB(RECEIVER.ID) == 0)                {                    // 아이디 생성                    RECEIVER.ID = Convert.ToString(_Data.CREATE_RECEIVER_ID());                    // Initialize_Defalut 함수안에 Initialize_SubPort 함수를 이미 포함하고 있다                    Initialize_Defalut();                }                else                {                    // DB에서 SubPort 값까지 모두 불러온다.                    Initialize_SubPort_FromDB(RECEIVER.ID);                }                // 새로운 수신기를 추가함                EditMode = false;            }            else            {                // 수신기 아이디를 토대로 해쉬테이블의 있는 정보를 가져온다                RECEIVER = (_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID];                // 기존의 수신기 수정함                EditMode = true;            }            // RECEIVER 내용을 화면에 표출한다.            Fill_ReceiverData();            ///            /// 이벤트            ///             // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용)            this.FormClosing += new FormClosingEventHandler(CreateForm_FormClosing);            // 윈도우 스타일 변경 이벤트 핸들러 등록            _Event.WindowStyleSet_SendMessage_Event += new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event);            ///            /// 스타일 변경            ///             UI_Style_Initialize();        }        // Receiver 데이터를 DB에 저장하자!        public void _Event_Project_Receiver_Save_Event()        {            try            {                int iReceiverID = Util.StrToInt(RECEIVER.ID, 0);                // TB_BOARD에 쓰기 (통신 보드, I/O 보드, KEYPAD)                // 기존 데이터는 지운다. (이미 모든 데이터는 RECEIVER에 들어있다!)                _Db.Execute(_Sql.Delete_Table("TB_BOARD", RECEIVER.ID));                string sSQL_BOARD = null;                //                // 통신보드                //                // 강제 쿼리 (특별히 펌프로 인하여 추가되는 보드가 존재한다)                try                {                    if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).MODEL == "IFC3300")                    {                        sSQL_BOARD = _Sql.TB_BOARD_table_Insert_BigReceiver(                            iReceiverID,    // ReceiverID                            1,              // COMMID  (1 고정)                            0,              // BOARDID (0 고정)                             "통신보드 0",   // BOARD_NAME                            "Y",            // LOOP0 Use Flag                             "N",            // LOOP1 Use Flag                             "N",            // LOOP2 Use Flag                             "N",            // LOOP3 Use Flag                             "Y");           //  Use Flag                     }                    else                    {                        sSQL_BOARD = _Sql.TB_BOARD_table_Insert(                            iReceiverID,    // ReceiverID                            1,              // COMMID  (1 고정)                            15,             // BOARDID (15 고정)                            "통신보드 15",  // BOARDID                            "Y",            // LOOP0 Use Flag                             "N",            // LOOP1 Use Flag                             "Y");           //  Use Flag                     }                    _Db.Execute(sSQL_BOARD);                }                catch                {; }                // cyim 2016.09.21 : TB_BOARD 에 루프 0~3 저장 하도록 한다                foreach (string COM_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).List_COM_BOARD_ID)                {                    // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경                    if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).MODEL == "IFC3300")                    {                        sSQL_BOARD = _Sql.TB_BOARD_table_Insert_BigReceiver(                            iReceiverID,    // ReceiverID                            1,      // COMMID  (1로 고정)                            ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID,  // BOARDID                            ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_NAME,  // BOARDID                            (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh1_Use_Flag ? "Y" : "N"),  // LOOP0 Use Flag                             (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh2_Use_Flag ? "Y" : "N"),  // LOOP1 Use Flag                             (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh3_Use_Flag ? "Y" : "N"),  // LOOP2 Use Flag                             (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh4_Use_Flag ? "Y" : "N"),  // LOOP3 Use Flag                             (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bUse_Flag ? "Y" : "N")); //  Use Flag                     }                    else                    {                        sSQL_BOARD = _Sql.TB_BOARD_table_Insert(                           iReceiverID,    // ReceiverID                           1,      // COMMID  (1로 고정)                           ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID,  // BOARDID                           ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_NAME,  // BOARDID                           (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh1_Use_Flag ? "Y" : "N"),  // LOOP0 Use Flag                            (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh2_Use_Flag ? "Y" : "N"),  // LOOP1 Use Flag                            (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bUse_Flag ? "Y" : "N")); //  Use Flag                     }                    _Db.Execute(sSQL_BOARD);                }                //                // IO 보드                //                // 강제 쿼리 (특별히 IO 보드는 셋팅하지 않아도 기본적으로 사용함으로 셋팅한다. 모델에 상관없이 IO 보드는 15는 무조건 사용하는 보드이다)                try                {                    if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).MODEL == "IFC3300")                    {                        // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다                        sSQL_BOARD = _Sql.TB_BOARD_table_Insert_BigReceiver(                            iReceiverID,    // ReceiverID                            3,              // COMMID  (3 고정)                            0,             // BOARDID (0 고정) // cyim 2016.01.10 IO 보드 강제쿼리에 코드 버그	                            "I/O 보드 0",  // BOARD_NAME                            "Y",            // LOOP0 Use Flag                             "N",            // LOOP1 Use Flag                             "N",            // LOOP2 Use Flag                             "N",            // LOOP3 Use Flag                             "Y");           //  Use Flag                     }                    else                    {                        sSQL_BOARD = _Sql.TB_BOARD_table_Insert(                            iReceiverID,    // ReceiverID                            3,              // COMMID  (3 고정)                            15,             // BOARDID (15 고정)                            "I/O 보드 15",  // BOARDID                            "Y",            // LOOP0 Use Flag                             "N",            // LOOP1 Use Flag                             "Y");           //  Use Flag                     }                    _Db.Execute(sSQL_BOARD);                }                catch                {; }                // cyim 2016.09.21 : TB_BOARD 에 루프 0~3 저장 하도록 한다                foreach (string IO_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).List_IO_BOARD_ID)                {                    // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경                    if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).MODEL == "IFC3300")                    {                        sSQL_BOARD = _Sql.TB_BOARD_table_Insert_BigReceiver(                            iReceiverID,    // ReceiverID                            3,      // IO Board ID  (3로 고정)                            ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_ID,  // BOARDID                            ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_NAME,  // BOARDID                            (((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).bUse_Flag ? "Y" : "N"),   // LOOP0 Use Flag (Use Flag와 같은 같으로 넣는다.)                                                     "N",  // LOOP1 Use Flag                             "N",  // LOOP2 Use Flag                             "N",  // LOOP3 Use Flag                             (((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).bUse_Flag ? "Y" : "N")); //  Use Flag                     }                    else                    {                        sSQL_BOARD = _Sql.TB_BOARD_table_Insert(                            iReceiverID,    // ReceiverID                            3,      // IO Board ID  (3로 고정)                            ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_ID,  // BOARDID                            ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_NAME,  // BOARDID                            (((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).bUse_Flag ? "Y" : "N"),   // LOOP0 Use Flag (Use Flag와 같은 같으로 넣는다.)                             "N",  // LOOP1 Use Flag                             (((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).bUse_Flag ? "Y" : "N")); //  Use Flag                    }                    _Db.Execute(sSQL_BOARD);                }                // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경                if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).MODEL == "IFC3300")                {                    // cyim 2016.09.21 : TB_BOARD 에 루프 0~3 저장 하도록 한다                    sSQL_BOARD = _Sql.TB_BOARD_table_Insert_BigReceiver(                        iReceiverID,    // ReceiverID                        4,      // KeyPAD ID  (4로 고정)                        RECEIVER.KEYPAD.BOARD_ID,  // BOARDID                        RECEIVER.KEYPAD.BOARD_NAME,  // BOARDID                        "N",  // LOOP0 Use Flag                         "N",  // LOOP1 Use Flag                         "N",  // LOOP2 Use Flag                         "N",  // LOOP3 Use Flag                         (RECEIVER.KEYPAD.bUse_Flag ? "Y" : "N")); //  Use Flag                 }                else                {                    sSQL_BOARD = _Sql.TB_BOARD_table_Insert(                        iReceiverID,    // ReceiverID                        4,      // KeyPAD ID  (4로 고정)                        RECEIVER.KEYPAD.BOARD_ID,  // BOARDID                        RECEIVER.KEYPAD.BOARD_NAME,  // BOARDID                        "N",  // LOOP0 Use Flag                         "N",  // LOOP1 Use Flag                         (RECEIVER.KEYPAD.bUse_Flag ? "Y" : "N")); //  Use Flag                 }                _Db.Execute(sSQL_BOARD);                // TB_COMM                 // 기존 데이터는 지운다.                _Db.Execute(_Sql.Delete_Table("TB_COMM", RECEIVER.ID));                string sSQL_COMM_CommBoard = _Sql.TB_COMM_table_Insert(iReceiverID,  // Receiver ID                                                                        1,           // COMM ID  (고정)                                                                        "FRONT LOOP",   // 명칭 (고정)                                                                        1,          // COMM LOOP (고정)                                                                        RECEIVER.Port4CommBoard.Get_COM_PORT(),     // COMM_PORT                                                                        RECEIVER.Port4CommBoard.BaudRate,           // BAUD_RATE                                                                        RECEIVER.Port4CommBoard.Get_COM_PARITY(),   // Parity                                                                        RECEIVER.Port4CommBoard.DataBits,           // DATABits                                                                        RECEIVER.Port4CommBoard.Get_COM_STOPBIT(),  // StopBits                                                                        RECEIVER.Port4CommBoard.TimeOut,            // TimeOut                                                                        RECEIVER.Port4CommBoard.Delay,              // Delay                                                                        RECEIVER.Port4CommBoard.Delta_Volt,         // Delta Volt (전압차 발생시 표시)                                                                        RECEIVER.Port4CommBoard.Retry_Count,       // 통신 Retry Count                                                                        (RECEIVER.Port4CommBoard.Use_Flag ? "Y" : "N"));    // 사용여부                string sSQL_COMM_IOBoard = _Sql.TB_COMM_table_Insert(iReceiverID,  // Receiver ID                                                                        3,           // COMM ID  (고정)                                                                        "IO BOARD",   // 명칭 (고정)                                                                        3,          // COMM LOOP (고정)                                                                        RECEIVER.Port4IOBoard.Get_COM_PORT(),     // COMM_PORT                                                                        RECEIVER.Port4IOBoard.BaudRate,           // BAUD_RATE                                                                        RECEIVER.Port4IOBoard.Get_COM_PARITY(),   // Parity                                                                        RECEIVER.Port4IOBoard.DataBits,           // DATABits                                                                        RECEIVER.Port4IOBoard.Get_COM_STOPBIT(),  // StopBits                                                                        RECEIVER.Port4IOBoard.TimeOut,            // TimeOut                                                                        RECEIVER.Port4IOBoard.Delay,              // Delay                                                                        RECEIVER.Port4IOBoard.Delta_Volt,         // Delta Volt (전압차 발생시 표시)                                                                        RECEIVER.Port4IOBoard.Retry_Count,       // 통신 Retry Count                                                                        (RECEIVER.Port4IOBoard.Use_Flag ? "Y" : "N"));    // 사용여부                string sSQL_COMM_KeyPAD = _Sql.TB_COMM_table_Insert(iReceiverID,  // Receiver ID                                                                         4,           // COMM ID  (고정)                                                                         "KEYPAD",   // 명칭 (고정)                                                                         4,          // COMM LOOP (고정)                                                                         RECEIVER.Port4KeyPAD.Get_COM_PORT(),     // COMM_PORT                                                                         RECEIVER.Port4KeyPAD.BaudRate,           // BAUD_RATE                                                                         RECEIVER.Port4KeyPAD.Get_COM_PARITY(),   // Parity                                                                         RECEIVER.Port4KeyPAD.DataBits,           // DATABits                                                                         RECEIVER.Port4KeyPAD.Get_COM_STOPBIT(),  // StopBits                                                                         RECEIVER.Port4KeyPAD.TimeOut,            // TimeOut                                                                         RECEIVER.Port4KeyPAD.Delay,              // Delay                                                                         RECEIVER.Port4KeyPAD.Delta_Volt,         // Delta Volt (전압차 발생시 표시)                                                                         RECEIVER.Port4KeyPAD.Retry_Count,       // 통신 Retry Count                                                                         (RECEIVER.Port4KeyPAD.Use_Flag ? "Y" : "N"));    // 사용여부                string sSQL_COMM_EmergencyBroadcast = _Sql.TB_COMM_table_Insert(iReceiverID,  // Receiver ID                                                                         5,           // COMM ID  (고정)                                                                         "BroadCast",   // 명칭 (고정)                                                                         5,          // COMM LOOP (고정)                                                                         RECEIVER.Port4EmergencyBroadcast.Get_COM_PORT(),     // COMM_PORT                                                                         RECEIVER.Port4EmergencyBroadcast.BaudRate,           // BAUD_RATE                                                                         RECEIVER.Port4EmergencyBroadcast.Get_COM_PARITY(),   // Parity                                                                         RECEIVER.Port4EmergencyBroadcast.DataBits,           // DATABits                                                                         RECEIVER.Port4EmergencyBroadcast.Get_COM_STOPBIT(),  // StopBits                                                                         RECEIVER.Port4EmergencyBroadcast.TimeOut,            // TimeOut                                                                         RECEIVER.Port4EmergencyBroadcast.Delay,              // Delay                                                                         RECEIVER.Port4EmergencyBroadcast.Delta_Volt,         // Delta Volt (전압차 발생시 표시)                                                                         RECEIVER.Port4EmergencyBroadcast.Retry_Count,       // 통신 Retry Count                                                                         (RECEIVER.Port4EmergencyBroadcast.Use_Flag ? "Y" : "N"));    // 사용여부                _Db.Execute(sSQL_COMM_CommBoard);                _Db.Execute(sSQL_COMM_IOBoard);                _Db.Execute(sSQL_COMM_KeyPAD);                _Db.Execute(sSQL_COMM_EmergencyBroadcast);                // TB_CONFIG                _Db.Execute(_Sql.Delete_Table("TB_CONFIG", RECEIVER.ID));                string sSQL_Config = _Sql.TB_CONFIG_table_Insert(iReceiverID,       // 수신기 ID                                                                 (RECEIVER.FIRE_ACCUMULATION_MODE ? "Y" : "N"),  // 축적 모드 여부                                                                 RECEIVER.FIRE_ACCUMULATION_SECOND,   // 축적 시간                                                                 (RECEIVER.RECOVER_MODE ? "Y" : "N"),  // 자동복구 (N) / 지속(Y)                                                                 RECEIVER.USERID,    // Master USER ID                                                                 RECEIVER.USER_PASSWORD,    // Master Password                                                                 RECEIVER.NAME,    // 빌딩명 (수신기명)                                                                 (RECEIVER.JUMP_TO_VIEW ? "Y" : "N"),   // 화재시 화면 이동 여부 (Y/N)                                                                 (RECEIVER.MASTER_FLAG ? "Y" : "N"), // 네트워크 수신기 설정 기능 추가 MASTER_FLAG 여부 (Y/N)                                                                 "N" // 시운전모드 // cyim 2013.7.3 시운전모드 초기값 변경 // 기본값 변경 cyim 2013.7.29 Y->N                                                                 );                _Db.Execute(sSQL_Config);                // TB_DEVICE_TYPE 중에 타입이 SYMBOL_TYPE 중 O 는 무조건 N 으로 변경한다                _Db.UPDATE("TB_DEVICE_TYPE", "SYMBOL_TYPE=O", "USE_FLAG=N");                // TB_RECEIVER                // 기존 데이터는 지운다.                _Db.Execute(_Sql.Delete_Table("TB_RECEIVER", RECEIVER.ID));                string sSQL_Receiver = _Sql.TB_RECEIVER_table_Insert(iReceiverID, RECEIVER.NAME, RECEIVER.IP, RECEIVER.EVENT_PORT, RECEIVER.COMMAND_PORT, RECEIVER.sUseFlag, RECEIVER.MODEL);                _Db.Execute(sSQL_Receiver);            }            catch (Exception ex)            {                // LOG                                _Event.DebugView_SendMessage_Write(ex.ToString());                // 실패하였습니다                _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.OK, 250, 150, _Text.FailInform, 0);            }        }        // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용)        public void CreateForm_FormClosing(object sender, FormClosingEventArgs e)        {            // 윈도우 스타일 변경 이벤트 핸들러 해제            _Event.WindowStyleSet_SendMessage_Event -= new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event);        }        // 윈도우 스타일 변경 이벤트        public void _Event_WindowStyleSet_SendMessage_Event()        {            UI_Style_Initialize();        }        // 스타일 초기화 함수        private void UI_Style_Initialize()        {        }        // 기본 데이터를 RECEIVER에 채운다.        public void Initialize_Defalut()        {            //수신기 기본 아이피는 127.0.0.1 -> 네트워크수신기 설정시에는 반드시 Static 아이피를 사용해야한다            // 기본값 (현재아이피)            string[] myip = { "127", "0", "0", "1" };//_Convert.String_to_ArrayString(_Convert.Split_IPAddress, _Tcp.MyIP());            EditBox_IP1.Text = myip[0];            EditBox_IP2.Text = myip[1];            EditBox_IP3.Text = myip[2];            EditBox_IP4.Text = myip[3];            // 기본 데이터로 RECEIVER 클래스의 내용을 채운다.                     // IP            RECEIVER.IP = EditBox_IP1.Text + _Text.Period + EditBox_IP2.Text + _Text.Period + EditBox_IP3.Text + _Text.Period + EditBox_IP4.Text;            RECEIVER.EVENT_PORT = 9001;            RECEIVER.COMMAND_PORT = 9002;            // 축적 모드 (true:축척, false:비축척)            //RECEIVER.FIRE_ACCUMULATION_MODE = false;  <= 자동 설정이 됨.            RECEIVER.FIRE_ACCUMULATION_SECOND = 0;            // 수신기 모델            RECEIVER.MODEL = DEFAULT_MODEL;            // 수신기 모델에 따른 통신보드 개수            RECEIVER.COM_BOARD_MAX_NUM = 64;            // 복구 모드 (false: 자동복구, true: 지속)            RECEIVER.RECOVER_MODE = false;            RECEIVER.NAME = "";            // 화재 감지되면 해당 화면으로 점프함.             RECEIVER.JUMP_TO_VIEW = false; // 기본값 변경 cyim 2013.7.29 Y->N            // 네트워크 수신기 설정 기능 추가 (신규로 들어가는 경우 슬레이브)            RECEIVER.MASTER_FLAG = false;            // 서브 포트 내용을 초기화한다.            Initialize_SubPort();            // 이름            RECEIVER.KEY_NAME = _Text.UI_TREE_RECEIVER + RECEIVER.ID + " [" + RECEIVER.MODEL + "]";        }        // 수신기 표시 내용 채워넣기        public void Fill_ReceiverData()        {            // 빌딩명칭 표시            editBox_BuildingName.Text = RECEIVER.NAME;            // 기본값 (현재아이피)            string[] myip = _Convert.String_to_ArrayString(_Convert.Split_IPAddress, RECEIVER.IP);            EditBox_IP1.Text = myip[0];            EditBox_IP2.Text = myip[1];            EditBox_IP3.Text = myip[2];            EditBox_IP4.Text = myip[3];            // 축적 내용 표시            uiComboBox_FireAccumulation.Items.Clear();            uiComboBox_FireAccumulation.Items.Add("0 (축적안함)");            uiComboBox_FireAccumulation.Items.Add("30");            uiComboBox_FireAccumulation.Items.Add("40");            uiComboBox_FireAccumulation.Items.Add("50");            uiComboBox_FireAccumulation.Items.Add("60");            switch (RECEIVER.FIRE_ACCUMULATION_SECOND)            {                case 0:                    uiComboBox_FireAccumulation.SelectedIndex = 0;                    break;                case 30:                    uiComboBox_FireAccumulation.SelectedIndex = 1;                    break;                case 40:                    uiComboBox_FireAccumulation.SelectedIndex = 2;                    break;                case 50:                    uiComboBox_FireAccumulation.SelectedIndex = 3;                    break;                case 60:                    uiComboBox_FireAccumulation.SelectedIndex = 4;                    break;            }            // 포트번호 표시 (이벤트 포트, 명령 포트)            editBox_CommandPort.Text = Convert.ToString(RECEIVER.COMMAND_PORT);            editBox_EventPort.Text = Convert.ToString(RECEIVER.EVENT_PORT);            // Jump To View 플래그 표시            uiCheckBox_ViewChange.Checked = RECEIVER.JUMP_TO_VIEW;            // 네트워크 수신기 설정 기능 추가            uiCheckBox_MasterFlag.Checked = RECEIVER.MASTER_FLAG;            // cyim 2016.12.02 : 수신기 모델 설정 기능 추가            if (RECEIVER.MODEL == "IFC3300") uiRadioButton_IFC3300.Checked = true;            else if (RECEIVER.MODEL == "IFC3000") uiRadioButton_IFC3000.Checked = true;            else if (RECEIVER.MODEL == "IFC2000") uiRadioButton_IFC2000.Checked = true;            else if (RECEIVER.MODEL == "IFC1000") uiRadioButton_IFC1000.Checked = true;            else uiRadioButton_IFC1000.Checked = true;            // 화재 모드 표시  (False = 자동복구, True = 지속)            if (RECEIVER.RECOVER_MODE == false) uiRadioButton_AutoRecover.Checked = true;            else uiRadioButton_Steady.Checked = true;        }        private bool Check_IP_Range(string Data)        {            try            {                int ip = Int32.Parse(Data);                if (ip >= 0 && ip <= 255)                    return true;                else                    return false;            }            catch            {                return false;            }        }        // 추가 버튼        public void UiButton_SubPortAdd_Click(object sender, EventArgs e)        {            // 예외처리 (미구현)            // ID 가 양수형 숫자인지            // IP 라면 범위초과인지            string IP1 = EditBox_IP1.Text;            string IP2 = EditBox_IP2.Text;            string IP3 = EditBox_IP3.Text;            string IP4 = EditBox_IP4.Text;            // IP            RECEIVER.IP = IP1 + _Text.Period + IP2 + _Text.Period + IP3 + _Text.Period + IP4;            //// 기존의 IP 가 있는지 체크해서 있다면 경고 팝업창 처리            //foreach (string RECEIVER_KEY in _Data.LIST_RECEIVER_ID)            //{            //    if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_KEY]).IP == RECEIVER.IP)            //    {            //        _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 250, 150, _Text.OverLapIP, 0);            //        return;            //    }            //}            // 공백 허용 안함            if (IP1.Trim().Length == 0                || IP2.Trim().Length == 0                || IP3.Trim().Length == 0                || IP4.Trim().Length == 0)            {                _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 250, 150, _Text.NullIP, 0);                return;            }            // 허용 범위 체크            if (Check_IP_Range(IP1) == false                || Check_IP_Range(IP2) == false                || Check_IP_Range(IP3) == false                || Check_IP_Range(IP4) == false)            {                _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 250, 150, _Text.NotIP, 0);                return;            }            // 편집모드가 아닌 신규추가용인 경우            if (EditMode == false)            {                // 기존의 ID 가 있는지 체크해서 있다면 경고 팝업창 처리                if (_Data.HASH_RECEIVER.ContainsKey(RECEIVER.ID) == true)                {                    _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 250, 150, _Text.OverLapKey, 0);                    return;                }            }            // 빌딩명칭 체크            if (editBox_BuildingName.Text == null || editBox_BuildingName.Text.Trim().Length == 0)            {                _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 250, 150, _Text.NotCorrectBuildName, 0);                //return; // 프로젝트 열기시에 빌딩명이 없어도 읽을수 있도록 처리 - cyim 2013.6.18            }            else if (_Error.Data_Confirm_NotDefineString(this.editBox_BuildingName.Text.Trim()) != null)            {                // 상위 비교문에서 팝업처리                return;            }            // 빌딩명칭 표시 (선후행공백처리)            RECEIVER.NAME = editBox_BuildingName.Text.Trim();            if (uiComboBox_FireAccumulation.SelectedIndex == 0)            {                RECEIVER.FIRE_ACCUMULATION_SECOND = 0;            }            else            {                RECEIVER.FIRE_ACCUMULATION_SECOND = Convert.ToInt16(uiComboBox_FireAccumulation.SelectedValue);            }            // COMMAND Port            RECEIVER.COMMAND_PORT = Util.StrToInt(editBox_CommandPort.Text, 0);            // Event Port            RECEIVER.EVENT_PORT = Util.StrToInt(editBox_EventPort.Text, 0);            // Jump To View 플래그 표시            RECEIVER.JUMP_TO_VIEW = uiCheckBox_ViewChange.Checked;            // 네트워크 수신기 설정 기능 추가            RECEIVER.MASTER_FLAG = uiCheckBox_MasterFlag.Checked;            // 복구 모드 (False  = 자동복구, False = 지속)            if (uiRadioButton_AutoRecover.Checked == true)            {                RECEIVER.RECOVER_MODE = false;            }            else            {                RECEIVER.RECOVER_MODE = true;            }            // cyim 2016.12.02 : 수신기 모델 설정 기능 추가            if (uiRadioButton_IFC3300.Checked == true) RECEIVER.MODEL = "IFC3300";            else if (uiRadioButton_IFC1000.Checked == true) RECEIVER.MODEL = "IFC1000";            else if (uiRadioButton_IFC2000.Checked == true) RECEIVER.MODEL = "IFC2000";            else if (uiRadioButton_IFC3000.Checked == true) RECEIVER.MODEL = "IFC3000";            // 이름            RECEIVER.KEY_NAME = _Text.UI_TREE_RECEIVER + RECEIVER.ID + " [" + RECEIVER.MODEL + "]";            // 편집모드가 아닌 신규추가용인 경우            if (EditMode == false)            {                // 해쉬에 추가                 if (_Hash.Add(_Data.HASH_RECEIVER, RECEIVER.ID, RECEIVER) == true)                {                    // 키리스트에 추가                    _Data.LIST_RECEIVER_ID.Add(RECEIVER.ID);                }                // 트리에 추가                _Event.TreeView_ReceiverNodeSet_SendMessage_Write(RECEIVER);            }            else            {                // 완료 이벤트 발생                _Event.WorkViewPageName_Receiver_SendMessage_Write(RECEIVER.ID);            }            // DB 에 저장            _Event_Project_Receiver_Save_Event();            // 수신기 편집만 저장한다고 나옴, 즉 추가의 경우는 팝업창이 출력되지 않는다            if (EditMode == true)            {                // 저장하였습니다                _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.OK, 250, 150, _Text.SaveInform, 0);            }            else            {                // 신규 수신기 아이디 추가                if (_Data.LIST_XMLRECEIVER_ID.Contains(RECEIVER.ID) == false)                    _Data.LIST_XMLRECEIVER_ID.Add(RECEIVER.ID);                // 수신기 파일 생성                _File.Write_Receiver_XML(_Data.Project_Path + "\\" + _Data.Project_Name);            }            // 프로젝트 수정            _Data.ProJect_Save_Complete = false;            // 폼종료            this.Close();        }        COMM_STOPBIT GetStopBits(string sParam)        {            COMM_STOPBIT eRet = COMM_STOPBIT.ONESTOPBIT;  // 디폴트값            if (sParam == "2") eRet = COMM_STOPBIT.TWOSTOPBITS;            if (sParam == "1.5") eRet = COMM_STOPBIT.ONE5STOPBITS;            return eRet;        }        COMM_PARITY GetParity(string sParam)        {            COMM_PARITY eRet = COMM_PARITY.NONE;  // 디폴트값            if (sParam == "E") eRet = COMM_PARITY.EVEN;            if (sParam == "O") eRet = COMM_PARITY.ODD;            return eRet;        }        int GetComPort(string sParam)        {            int iRet = 0;            if (sParam == "COM1") iRet = 1;            if (sParam == "COM2") iRet = 2;            if (sParam == "COM3") iRet = 3;            if (sParam == "COM4") iRet = 4;            if (sParam == "COM5") iRet = 5;            if (sParam == "COM6") iRet = 6;            if (sParam == "COM7") iRet = 7;            if (sParam == "COM8") iRet = 8;            return iRet;        }        // 무작정 Alter 명령어를 사용하면 기존의 데이타가 삭제되어 버린다        public bool Column_Check(string ColumnName, string TableName)        {            string SQL = string.Format("SELECT Count({0}) FROM {1}", ColumnName, TableName);            // 접속 세션            FirebirdSql.Data.FirebirdClient.FbConnection session = null;            // 접속된 상태의 명령어            FirebirdSql.Data.FirebirdClient.FbCommand command = null;            // 접속 세션 주소            string address = null;            try            {                // 접속 세션 주소 셋팅                address = string.Format("Server={0};User={1};Password={2};Database={3};Charset={4};ServerType={5}",                                _Data.DB_IP,        // IP ex)192.168.63.22                                 _Data.DB_ID,   // 사용자                                 _Data.DB_PassWord,  // 암호                                 _Data.DB_FullPath,      // 절대위치.. ex) C:\TEST\TEST.FDB                                 "KSC_5601",         // KSC_5601 같은 문자셋을 지정                                 "0");                // 상위 문구를 신뢰하고 보내는 루틴                session = new FirebirdSql.Data.FirebirdClient.FbConnection(address);                session.Open();                command = new FirebirdSql.Data.FirebirdClient.FbCommand(SQL, session);                command.ExecuteNonQuery();                if (session != null) session.Close();                if (command != null) command.Dispose();                return true;            }            catch (Exception e)            {                // LOG                                _Event.DebugView_SendMessage_Write(e.ToString() + "SQL:" + SQL);                if (session != null) session.Close();                if (command != null) command.Dispose();                return false;            }        }        public bool Data_Check(string TableName, string DataName, string DataValue)        {            string SQL = string.Format("SELECT * FROM {0} WHERE {1}='{2}'", TableName, DataName, DataValue);            // 접속 세션            FirebirdSql.Data.FirebirdClient.FbConnection session = null;            // 접속된 상태의 명령어            FirebirdSql.Data.FirebirdClient.FbCommand command = null;            // 접속 세션 주소            string address = null;            // 접속 아답터                       FirebirdSql.Data.FirebirdClient.FbDataAdapter dataAdapter = null;            DataSet dataSet = null;            try            {                // 접속 세션 주소 셋팅                address = string.Format("Server={0};User={1};Password={2};Database={3};Charset={4};ServerType={5}",                                _Data.DB_IP,        // IP ex)192.168.63.22                                 _Data.DB_ID,   // 사용자                                 _Data.DB_PassWord,  // 암호                                 _Data.DB_FullPath,      // 절대위치.. ex) C:\TEST\TEST.FDB                                 "KSC_5601",         // KSC_5601 같은 문자셋을 지정                                 "0");                // 상위 문구를 신뢰하고 보내는 루틴                session = new FirebirdSql.Data.FirebirdClient.FbConnection(address);                session.Open();                command = new FirebirdSql.Data.FirebirdClient.FbCommand(SQL, session);                dataAdapter = new FirebirdSql.Data.FirebirdClient.FbDataAdapter(SQL, session);                dataAdapter.SelectCommand = command;                dataSet = new DataSet();                dataAdapter.Fill(dataSet, "GetData");                if (dataAdapter != null) dataAdapter.Dispose();                if (session != null) session.Close();                if (command != null) command.Dispose();                if (dataSet != null) dataSet.Dispose();                if (dataSet.Tables["GetData"].Rows.Count > 0) return true;                else return false;            }            catch (Exception e)            {                // LOG                                _Event.DebugView_SendMessage_Write(e.ToString() + "SQL:" + SQL);                if (dataAdapter != null) dataAdapter.Dispose();                if (session != null) session.Close();                if (command != null) command.Dispose();                if (dataSet != null) dataSet.Dispose();                return false;            }        }        // 아래 함수는 프로젝트 읽기하는 경우 무조건 진입하는 함수이다.        // DB에서 수신기 정보를 읽어 RECEIVER에 값을 넣는다.        // 또한 강제쿼리를 날려서 데이타베이스 변경이 필요한 경우에 반영하도록 한다        public int Initialize_Receiver_FromDB(string Receiver_ID)        {            //            // cyim 2016.12.02 : 프로젝트를 열때 강제 쿼리	            //            // cyim 2016.09.21 : TB_BOARD_2 테이블 사용하도록 한내용을 다시 TB_BOARD 로 변경한다. 결국은 무조건 프로젝트를 열때 컬럼이 추가된다. 기존에 있다면 예외 처리됨            if (Column_Check("LOOP2_USE_FLAG", "TB_BOARD") == false) _Db.Execute("ALTER TABLE TB_BOARD ADD LOOP2_USE_FLAG VARCHAR(1)");            if (Column_Check("LOOP3_USE_FLAG", "TB_BOARD") == false) _Db.Execute("ALTER TABLE TB_BOARD ADD LOOP3_USE_FLAG VARCHAR(1)");            if (Column_Check("LOOP2_BAUD_RATE", "TB_BOARD") == false) _Db.Execute("ALTER TABLE TB_BOARD ADD LOOP2_BAUD_RATE VARCHAR(1)"); // cyim 2016.11.04 : 잘못된 쿼리 수정            if (Column_Check("LOOP3_BAUD_RATE", "TB_BOARD") == false) _Db.Execute("ALTER TABLE TB_BOARD ADD LOOP3_BAUD_RATE VARCHAR(1)");            if (Column_Check("LOOP2_CUT_FLAG", "TB_BOARD") == false) _Db.Execute("ALTER TABLE TB_BOARD ADD LOOP2_CUT_FLAG VARCHAR(1)");            if (Column_Check("LOOP3_CUT_FLAG", "TB_BOARD") == false) _Db.Execute("ALTER TABLE TB_BOARD ADD LOOP3_CUT_FLAG VARCHAR(1)");            if (Column_Check("MODEL", "TB_RECEIVER") == false) _Db.Execute("ALTER TABLE TB_RECEIVER ADD MODEL VARCHAR(20)");            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "EW") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "EW", "설비출력상태 ON", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "EF") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "EF", "설비출력상태 OFF", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "ED") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "ED", "설비전체연동조작버튼", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "A1") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "A1", "가압펌프1 스위치 기동", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "A2") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "A2", "가압펌프1 스위치 정지", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "A3") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "A3", "가압펌프2 스위치 기동", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "A4") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "A4", "가압펌프2 스위치 정지", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "A5") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "A5", "비상발전기 스위치 기동", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "A6") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "A6", "비상발전기 스위치 정지", "FireManager", "current_timestamp"));            // cyim 2017.01.17 신규 이벤트 추가 (펌프 수동기동)                       if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "PA") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "PA", "PUMP1 스위치 수동", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "PB") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "PB", "PUMP2 스위치 수동", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "PC") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "PC", "PUMP3 스위치 수동", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "PD") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "PD", "PUMP4 스위치 수동", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "SA") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "SA", "PUMP5 스위치 수동", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "SB") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "SB", "PUMP6 스위치 수동", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "SC") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "SC", "PUMP7 스위치 수동", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "SD") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "SD", "PUMP8 스위치 수동", "FireManager", "current_timestamp"));            // cyim 2017.02.14 : 강제쿼리                 if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "O3") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "O3", "화재축적모드설정(30초)", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "O4") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "O4", "화재축적모드설정(40초)", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "O5") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "O5", "화재축적모드설정(50초)", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "O6") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "O6", "화재축적모드설정(60초)", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "AO") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "AO", "화재축적모드설정", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "AF") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "AF", "화재축적모드비설정", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "HM") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "HM", "화재지속모드설정", "FireManager", "current_timestamp"));            if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "RM") == false)                _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",                   "RM", "자동복구모드설정", "FireManager", "current_timestamp"));            // cyim 2016.12.15 : 프로젝트를 열때 강제 쿼리	(수신반용 테이블)            // 존재할때 삭제하는 코드는 유보하고, 존재하지 않는 경우에는 테이블 신규 생성            DataRowCollection DB_TABLE_Check = null;            DB_TABLE_Check = _Db.ExecuteRead_SqlDataAdapter(_Sql.Table_Exist("TB_USERS"));            if (DB_TABLE_Check == null || DB_TABLE_Check.Count == 0)                _Db.Execute(_Sql.Create_TB_USERS());            DB_TABLE_Check = _Db.ExecuteRead_SqlDataAdapter(_Sql.Table_Exist("TB_PUSH_DEVICE"));            if (DB_TABLE_Check == null || DB_TABLE_Check.Count == 0)                _Db.Execute(_Sql.Create_TB_PUSH_DEVICE());            DB_TABLE_Check = _Db.ExecuteRead_SqlDataAdapter(_Sql.Table_Exist("TB_RECEIVER_ERROR_COUNT"));            if (DB_TABLE_Check == null || DB_TABLE_Check.Count == 0)                _Db.Execute(_Sql.Create_TB_RECEIVER_ERROR_COUNT());            DB_TABLE_Check = _Db.ExecuteRead_SqlDataAdapter(_Sql.Table_Exist("TB_RECEIVER_ERROR_COUNT_DETAILS"));            if (DB_TABLE_Check == null || DB_TABLE_Check.Count == 0)                _Db.Execute(_Sql.Create_TB_RECEIVER_ERROR_COUNT_DETAILS());            int iRetCode = 0;            try            {                // DB에서 수신기 정보를 읽어온다.                DataRowCollection DB_TABLE_TB_RECEIVER = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_RECEIVER", Receiver_ID));                if (DB_TABLE_TB_RECEIVER != null && DB_TABLE_TB_RECEIVER.Count != 0)  // 데이터가 DB에 있다.                {                    // DB내의 리시버 데이터를 읽는다.                    DataRow dr = DB_TABLE_TB_RECEIVER[0];                    // DB 데이터를 기준으로 RECEIVER 클래스에 내용을 채운다.                    RECEIVER.ID = dr["RECEIVER_ID"].ToString();                    // cyim 2016.12.02 : 수신기 모델 설정 기능 추가                    RECEIVER.MODEL = Util.NullToStr(dr["MODEL"]);                    if (RECEIVER.MODEL == "")                    {                        // cyim 2016.12.05 : 만약 프로젝트를 열다가 중간에 예외 처리 및 강제 저장 옵션이 발동되었다면 경고 폼 출력                        _Data.Receiver_Model_TempSetting = true;                        RECEIVER.MODEL = DEFAULT_MODEL;                        _Db.Execute(string.Format("update TB_RECEIVER set MODEL='{0}' where RECEIVER_ID={1}", RECEIVER.MODEL, Receiver_ID));                    }                    // 이름                    RECEIVER.KEY_NAME = _Text.UI_TREE_RECEIVER + RECEIVER.ID + " [" + RECEIVER.MODEL + "]";                    RECEIVER.IP = dr["IP_ADDRESS"].ToString();                    RECEIVER.EVENT_PORT = Util.StrToInt(dr["EVENT_PORT_NO"], 0);                    RECEIVER.COMMAND_PORT = Util.StrToInt(dr["COMMAND_PORT_NO"], 0);                    // TB_CONFIG 테이블을 읽는다.                    DataRowCollection DB_TABLE_TB_CONFIG = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_ConfigTable(Util.StrToInt(RECEIVER.ID, 0)));                    if (DB_TABLE_TB_CONFIG != null)                    {                        dr = DB_TABLE_TB_CONFIG[0];                        RECEIVER.FIRE_ACCUMULATION_SECOND = Util.StrToInt(dr["FIRE_ACCUMULATION_TIME"], 0);                        RECEIVER.NAME = dr["BUILDING_NAME"].ToString();                        if (dr["JUMP_FIELD"].ToString() == "Y")                        {                            RECEIVER.JUMP_TO_VIEW = true;                        }                        else                        {                            RECEIVER.JUMP_TO_VIEW = false;                        }                        if (dr["FIRE_PROCESS_MODE"].ToString() == "N")                        {                            RECEIVER.RECOVER_MODE = false;                        }                        else                        {                            RECEIVER.RECOVER_MODE = true;                        }                        if (dr["MASTER_FLAG"].ToString() == "Y")                        {                            RECEIVER.MASTER_FLAG = true;                        }                        else                        {                            RECEIVER.MASTER_FLAG = false;                        }                    }                    // 리턴 코드에 RECEIVER.ID를 넣는다.                    iRetCode = Util.StrToInt(RECEIVER.ID, 0);                }            }            catch (Exception ex)            {                Util.UErrorMessage(ex, 0, 0);            }            return iRetCode;        }        // DB에서 읽은 값으로 RECEIVER의 서브 포트를 채운다.        public void Initialize_SubPort_FromDB(string Receiver_ID)        {            try            {                // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경                                DataRowCollection DB_TABLE_TB_RECEIVER = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_RECEIVER", Receiver_ID));                if (DB_TABLE_TB_RECEIVER != null && DB_TABLE_TB_RECEIVER.Count != 0)                {                    DataRow dr = DB_TABLE_TB_RECEIVER[0];                    // 통신보드 최대개수                         if (Util.NullToStr(dr["MODEL"]) == "IFC3300")                        RECEIVER.COM_BOARD_MAX_NUM = 64;                    else                        RECEIVER.COM_BOARD_MAX_NUM = 15;                }                // 통신 보드 설정 읽기  (TB_COMM)                DataRowCollection DB_TABLE_TB_COMM = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_COMM", Receiver_ID));                if (DB_TABLE_TB_COMM != null)                {                    foreach (DataRow dr in DB_TABLE_TB_COMM)                    {                        COMM_STOPBIT eStopBit = GetStopBits(dr["STOP_BITS"].ToString());                        COMM_PARITY eParity = GetParity(dr["PARITY"].ToString());                        int iComPort = GetComPort(dr["COMM_PORT"].ToString());                        int iBaudRate = Convert.ToInt32(dr["BAUD_RATE"]);                        int iDataBits = Convert.ToInt32(dr["DATA_BITS"]);                        int iID = Convert.ToInt16(dr["COMM_ID"]);                        int iTimeOut = Convert.ToInt16(dr["COMM_TIMEOUT"]);                        int iCommDelay = Convert.ToInt16(dr["COMM_DELAY"]);                        int iDelta_Volt = Convert.ToInt16(dr["DELTA_VOLT"]);                        int iRetryCount = Convert.ToInt16(dr["RETRY_COUNT"]);                        bool bUseFlag = false;                        if (dr["USE_FLAG"].ToString() == "Y")                        {                            bUseFlag = true;                        }                        switch (iID)                        {                            case 1:    // Front Loop                                {//case 2:    // Back Loop (현재 사용하지 않음.)                                    RECEIVER.Port4CommBoard.COMM_ID = iID;                                    // 포트 넘버 (COM1, COM2..)                                    RECEIVER.Port4CommBoard.PortNo = iComPort;                                    // 포트BPS (1200,9600,14400, 38400 ...)                                    RECEIVER.Port4CommBoard.BaudRate = iBaudRate;                                    // 포트 데이터 비트 설정 (5,6,7,8)                                    RECEIVER.Port4CommBoard.DataBits = iDataBits;                                    // 포트 스톱비트 설정 (1, 1.5, 2)                                    RECEIVER.Port4CommBoard.StopBits = eStopBit;                                    // 포트 패리티 설정 (None, Even, Odd)                                    RECEIVER.Port4CommBoard.Parity = eParity;                                    // 타임아웃 설정                                    RECEIVER.Port4CommBoard.TimeOut = iTimeOut;                                    // 통신 지연 설정                                    RECEIVER.Port4CommBoard.Delay = iCommDelay;                                    // 표시용 전압변화값                                    RECEIVER.Port4CommBoard.Delta_Volt = iDelta_Volt;                                    // 재시도 횟수                                    RECEIVER.Port4CommBoard.Retry_Count = iRetryCount;                                    // 사용 여부                                    RECEIVER.Port4CommBoard.Use_Flag = bUseFlag;                                    int temp = 1;                                    if (RECEIVER.MODEL == "IFC3300")                                        temp = 0;                                    // 통신 보드 세팅                                    for (int i = temp; i <= RECEIVER.COM_BOARD_MAX_NUM; i++) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다                                    {                                        // 클래스 생성                                        _COM_BOARD COM_BOARD = new _COM_BOARD();                                        // ID                                         COM_BOARD.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_COM_BOARD_KEY, i));                                        // 이름                                        COM_BOARD.Set_KEY_NAME(_Text.UI_TREE_COM_BOARD + i.ToString());                                        //데이터 읽기                                        DataRowCollection DB_TABLE_TB_BOARD = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_Board_Table(Util.StrToInt(RECEIVER.ID, 0), iID, i));                                        if (DB_TABLE_TB_BOARD != null && DB_TABLE_TB_BOARD.Count != 0)                                        {                                            DataRow dtr = DB_TABLE_TB_BOARD[0];                                            string sUseFlag = dtr["USE_FLAG"].ToString();                                            COM_BOARD.Set_Use_Flag(sUseFlag);                                            if (sUseFlag == "Y")                                            {                                                COM_BOARD.Set_CH1_Use(dtr["LOOP0_USE_FLAG"].ToString());                                                COM_BOARD.Set_CH2_Use(dtr["LOOP1_USE_FLAG"].ToString());                                                COM_BOARD.Set_CH3_Use(dtr["LOOP2_USE_FLAG"].ToString());// cyim 2016.09.21 : TB_BOARD 에 루프 0~3 저장 하도록 한다                                                COM_BOARD.Set_CH4_Use(dtr["LOOP3_USE_FLAG"].ToString());                                            }                                            else                                            {                                                COM_BOARD.Set_CH1_Use("N");                                                COM_BOARD.Set_CH2_Use("N");                                                COM_BOARD.Set_CH3_Use("N");// cyim 2016.09.21 : TB_BOARD 에 루프 0~3 저장 하도록 한다                                                COM_BOARD.Set_CH4_Use("N");                                            }                                            COM_BOARD.BOARD_ID = Util.StrToInt(dtr["BOARD_ID"].ToString(), 0);                                            COM_BOARD.BOARD_NAME = dtr["BOARD_NAME"].ToString();                                        }                                        else                                        {                                            COM_BOARD.Set_CH1_Use("N");                                            COM_BOARD.Set_CH2_Use("N");                                            COM_BOARD.Set_CH3_Use("N");// cyim 2016.09.21 : TB_BOARD 에 루프 0~3 저장 하도록 한다                                            COM_BOARD.Set_CH4_Use("N");                                            COM_BOARD.Set_Use_Flag("N");                                            COM_BOARD.BOARD_ID = i;                                            COM_BOARD.BOARD_NAME = String.Format("통신보드 {0}", i);                                        }                                        // 해쉬 추가                                        if (_Hash.Add(RECEIVER.Hash_COM_BOARD, COM_BOARD.ID, COM_BOARD) == true)                                        {                                            RECEIVER.List_COM_BOARD_ID.Add(COM_BOARD.ID);                                        }                                    }                                }                                break;                            case 3:     // IO Board                                {                                    // IO 보드                                    RECEIVER.Port4IOBoard.COMM_ID = iID;                                    // 포트 넘버 (COM1, COM2..)                                    RECEIVER.Port4IOBoard.PortNo = iComPort;                                    // 포트BPS (1200,9600,14400, 38400 ...)                                    RECEIVER.Port4IOBoard.BaudRate = iBaudRate;                                    // 포트 데이터 비트 설정 (5,6,7,8)                                    RECEIVER.Port4IOBoard.DataBits = iDataBits;                                    // 포트 스톱비트 설정 (1, 1.5, 2)                                    RECEIVER.Port4IOBoard.StopBits = eStopBit;                                    // 포트 패리티 설정 (None, Even, Odd)                                    RECEIVER.Port4IOBoard.Parity = eParity;                                    // 타임아웃 설정                                    RECEIVER.Port4IOBoard.TimeOut = iTimeOut;                                    // 통신 지연 설정                                    RECEIVER.Port4IOBoard.Delay = iCommDelay;                                    // 표시용 전압변화값                                    RECEIVER.Port4IOBoard.Delta_Volt = iDelta_Volt;                                    // 재시도 횟수                                    RECEIVER.Port4IOBoard.Retry_Count = iRetryCount;                                    // 사용 여부                                    RECEIVER.Port4IOBoard.Use_Flag = bUseFlag;                                    int temp = 1;                                    if (RECEIVER.MODEL == "IFC3300")                                        temp = 0;                                    // IO 보드 세팅                                    for (int i = temp; i <= RECEIVER.IO_BOARD_MAX_NUM; i++) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다                                    {                                        // 클래스 생성                                        _IO_BOARD IO_BOARD = new _IO_BOARD();                                        // ID                                         IO_BOARD.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_IO_BOARD_KEY, i));                                        // 이름                                        IO_BOARD.Set_KEY_NAME(_Text.UI_TREE_IO_BOARD + i.ToString());// 클래스 생성                                        //데이터 읽기                                        DataRowCollection DB_TABLE_TB_BOARD = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_Board_Table(Util.StrToInt(RECEIVER.ID, 0), iID, i));                                        if (DB_TABLE_TB_BOARD != null && DB_TABLE_TB_BOARD.Count != 0)                                        {                                            DataRow dtr = DB_TABLE_TB_BOARD[0];                                            IO_BOARD.Set_Use_Flag(dtr["USE_FLAG"].ToString());                                            IO_BOARD.BOARD_ID = Util.StrToInt(dtr["BOARD_ID"].ToString(), 0);                                            IO_BOARD.BOARD_NAME = dtr["BOARD_NAME"].ToString();                                        }                                        else                                        {                                            IO_BOARD.Set_Use_Flag("N");                                            IO_BOARD.BOARD_ID = i;                                            IO_BOARD.BOARD_NAME = String.Format("I/O 보드 {0}", i);                                        }                                        // 해쉬 추가                                        if (_Hash.Add(RECEIVER.Hash_IO_BOARD, IO_BOARD.ID, IO_BOARD) == true)                                        {                                            RECEIVER.List_IO_BOARD_ID.Add(IO_BOARD.ID);                                        }                                    }                                }                                break;                            case 4:     // KeyPAD                                RECEIVER.Port4KeyPAD.COMM_ID = iID;                                // 포트 넘버 (COM1, COM2..)                                RECEIVER.Port4KeyPAD.PortNo = iComPort;                                // 포트BPS (1200,9600,14400, 38400 ...)                                RECEIVER.Port4KeyPAD.BaudRate = iBaudRate;                                // 포트 데이터 비트 설정 (5,6,7,8)                                RECEIVER.Port4KeyPAD.DataBits = iDataBits;                                // 포트 스톱비트 설정 (1, 1.5, 2)                                RECEIVER.Port4KeyPAD.StopBits = eStopBit;                                // 포트 패리티 설정 (None, Even, Odd)                                RECEIVER.Port4KeyPAD.Parity = eParity;                                // 타임아웃 설정                                RECEIVER.Port4KeyPAD.TimeOut = iTimeOut;                                // 통신 지연 설정                                RECEIVER.Port4KeyPAD.Delay = iCommDelay;                                // 표시용 전압변화값                                RECEIVER.Port4KeyPAD.Delta_Volt = iDelta_Volt;                                // 재시도 횟수                                RECEIVER.Port4KeyPAD.Retry_Count = iRetryCount;                                // 사용 여부                                RECEIVER.Port4KeyPAD.Use_Flag = bUseFlag;                                _KEYPAD KEYPAD = new _KEYPAD();                                // ID                                 KEYPAD.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_KEYPAD_KEY, 1));                                // 이름                                KEYPAD.Set_KEY_NAME(_Text.UI_TREE_KEYPAD); // 오직 하나뿐                                //데이터 읽기                                DataRowCollection DB_TABLE_TB_BOARD_KEYPAD = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_Board_Table(Util.StrToInt(RECEIVER.ID, 0), iID, 0));                                if (DB_TABLE_TB_BOARD_KEYPAD != null && DB_TABLE_TB_BOARD_KEYPAD.Count != 0)   // DB가 데이터에 있는 경우..                                {                                       // 데이터로 KEYPAD 클래스의 프로퍼티를 채운다.                                    DataRow dtr = DB_TABLE_TB_BOARD_KEYPAD[0];                                    KEYPAD.Set_Use_Flag(dtr["USE_FLAG"].ToString());                                    KEYPAD.BOARD_ID = Util.StrToInt(dtr["BOARD_ID"].ToString(), 0);                                    KEYPAD.BOARD_NAME = dtr["BOARD_NAME"].ToString();                                }                                else  // DB에 데이터가 없는 경우..                                {       // 디폴트값으로 KEYPAD 클래스의 프로퍼티를 채우자.                                    KEYPAD.Set_Use_Flag("N");   // 사용 안함으로 세팅한다.                                    KEYPAD.BOARD_ID = 0;                                    KEYPAD.BOARD_NAME = "키패드";                                }                                RECEIVER.KEYPAD = KEYPAD;                                break;                            case 5:     // BroadCast (비상방송)                                RECEIVER.Port4EmergencyBroadcast.COMM_ID = iID;                                // 포트 넘버 (COM1, COM2..)                                RECEIVER.Port4EmergencyBroadcast.PortNo = iComPort;                                // 포트BPS (1200,9600,14400, 38400 ...)                                RECEIVER.Port4EmergencyBroadcast.BaudRate = iBaudRate;                                // 포트 데이터 비트 설정 (5,6,7,8)                                RECEIVER.Port4EmergencyBroadcast.DataBits = iDataBits;                                // 포트 스톱비트 설정 (1, 1.5, 2)                                RECEIVER.Port4EmergencyBroadcast.StopBits = eStopBit;                                // 포트 패리티 설정 (None, Even, Odd)                                RECEIVER.Port4EmergencyBroadcast.Parity = eParity;                                // 타임아웃 설정                                RECEIVER.Port4EmergencyBroadcast.TimeOut = iTimeOut;                                // 통신 지연 설정                                RECEIVER.Port4EmergencyBroadcast.Delay = iCommDelay;                                // 표시용 전압변화값                                RECEIVER.Port4EmergencyBroadcast.Delta_Volt = iDelta_Volt;                                // 재시도 횟수                                RECEIVER.Port4EmergencyBroadcast.Retry_Count = iRetryCount;                                // 사용 여부                                RECEIVER.Port4EmergencyBroadcast.Use_Flag = bUseFlag;                                _EMERGENCY_BROADCAST EMERGENCY_BROADCAST = new _EMERGENCY_BROADCAST();                                // ID                                 EMERGENCY_BROADCAST.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_EMERGENCY_BROADCAST_KEY, 1));                                // 이름                                EMERGENCY_BROADCAST.Set_KEY_NAME(_Text.UI_TREE_EMERGENCY_BROADCAST); // 오직 하나뿐                                                          RECEIVER.EMERGENCY_BROADCAST = EMERGENCY_BROADCAST;                                break;                        }                    }                }            }            catch (Exception ex)            {                Util.UErrorMessage(ex, 0, 0);            }        }        // RECEIVER의 서브 포트를 디폴트값으로 채운다.        public void Initialize_SubPort()        {            // 통신 보드와 메인보드가 통신하기 위한 통신보드용 Serial 포트 설정. (메인보드)            RECEIVER.Port4CommBoard.COMM_ID = 1;            // 포트 넘버 (COM1, COM2..)            RECEIVER.Port4CommBoard.PortNo = 1;            // 포트BPS (1200,9600,14400, 38400 ...)            RECEIVER.Port4CommBoard.BaudRate = 115200;            // 포트 데이터 비트 설정 (5,6,7,8)            RECEIVER.Port4CommBoard.DataBits = 8;            // 포트 스톱비트 설정 (1, 1.5, 2)            RECEIVER.Port4CommBoard.StopBits = COMM_STOPBIT.ONESTOPBIT;            // 포트 패리티 설정 (None, Even, Odd)            RECEIVER.Port4CommBoard.Parity = COMM_PARITY.NONE;            // 타임아웃 설정            RECEIVER.Port4CommBoard.TimeOut = _COMM_TIMEOUT;            // 통신 지연 설정            RECEIVER.Port4CommBoard.Delay = _COMM_DELAY;            // 표시용 전압변화값            RECEIVER.Port4CommBoard.Delta_Volt = _DELTA_VOLT;            // 재시도 횟수            RECEIVER.Port4CommBoard.Retry_Count = _RETRY_COUNT;            // 사용 여부            RECEIVER.Port4CommBoard.Use_Flag = true;            int temp = 1;            if (RECEIVER.MODEL == "IFC3300")                temp = 0;            for (int i = temp; i <= RECEIVER.COM_BOARD_MAX_NUM; i++) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다            {                // 클래스 생성                _COM_BOARD COM_BOARD = new _COM_BOARD();                // ID                 COM_BOARD.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_COM_BOARD_KEY, i));                // 이름                COM_BOARD.Set_KEY_NAME(_Text.UI_TREE_COM_BOARD + i.ToString());                // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경                DataRowCollection DB_TABLE_TB_RECEIVER = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_RECEIVER", RECEIVER.ID));                if (DB_TABLE_TB_RECEIVER != null && DB_TABLE_TB_RECEIVER.Count != 0)                {                    DataRow dr = DB_TABLE_TB_RECEIVER[0];                    if (Util.NullToStr(dr["MODEL"]) == "IFC3300")                    {                        if (i == 0)                        {                            COM_BOARD.Set_Use_Flag("Y");                            COM_BOARD.Set_CH1_Use("Y");                            COM_BOARD.Set_CH2_Use("N");                            COM_BOARD.Set_CH3_Use("N");                            COM_BOARD.Set_CH4_Use("N");                        }                        else                        {                            COM_BOARD.Set_Use_Flag("N");                            COM_BOARD.Set_CH1_Use("N");                            COM_BOARD.Set_CH2_Use("N");                            COM_BOARD.Set_CH3_Use("N");                            COM_BOARD.Set_CH4_Use("N");                        }                    }                    else                    {                        if (i == 15)                        {                            COM_BOARD.Set_CH1_Use("Y");                            COM_BOARD.Set_CH2_Use("N");                            COM_BOARD.Set_Use_Flag("Y");                        }                        else                        {                            COM_BOARD.Set_CH1_Use("N");                            COM_BOARD.Set_CH2_Use("N");                            COM_BOARD.Set_Use_Flag("N");                        }                    }                }                COM_BOARD.BOARD_ID = i;                COM_BOARD.BOARD_NAME = String.Format("통신보드 {0}", i);                // 해쉬 추가                if (_Hash.Add(RECEIVER.Hash_COM_BOARD, COM_BOARD.ID, COM_BOARD) == true)                {                    RECEIVER.List_COM_BOARD_ID.Add(COM_BOARD.ID);                }            }            // IO 보드            RECEIVER.Port4IOBoard.COMM_ID = 3;            // 포트 넘버 (COM1, COM2..)            RECEIVER.Port4IOBoard.PortNo = 3;            // 포트BPS (1200,9600,14400, 38400 ...)            RECEIVER.Port4IOBoard.BaudRate = 115200;            // 포트 데이터 비트 설정 (5,6,7,8)            RECEIVER.Port4IOBoard.DataBits = 8;            // 포트 스톱비트 설정 (1, 1.5, 2)            RECEIVER.Port4IOBoard.StopBits = COMM_STOPBIT.ONESTOPBIT;            // 포트 패리티 설정 (None, Even, Odd)            RECEIVER.Port4IOBoard.Parity = COMM_PARITY.NONE;            // 타임아웃 설정            RECEIVER.Port4IOBoard.TimeOut = _COMM_TIMEOUT;            // 통신 지연 설정            RECEIVER.Port4IOBoard.Delay = _COMM_DELAY;            // 표시용 전압변화값            RECEIVER.Port4IOBoard.Delta_Volt = _DELTA_VOLT;            // 재시도 횟수            RECEIVER.Port4IOBoard.Retry_Count = _RETRY_COUNT;            // 사용 여부            RECEIVER.Port4IOBoard.Use_Flag = true;            int tmp = 1;            if (RECEIVER.MODEL == "IFC3300")                tmp = 0;            for (int i = tmp; i <= RECEIVER.IO_BOARD_MAX_NUM; i++) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다            {                // 클래스 생성                _IO_BOARD IO_BOARD = new _IO_BOARD();                // ID                 IO_BOARD.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_IO_BOARD_KEY, i));                // 이름                IO_BOARD.Set_KEY_NAME(_Text.UI_TREE_IO_BOARD + i.ToString());                if (i == 15)                {                    IO_BOARD.Set_Use_Flag("Y");                }                else                {                    IO_BOARD.Set_Use_Flag("N");                }                IO_BOARD.BOARD_ID = i;                IO_BOARD.BOARD_NAME = String.Format("I/O 보드 {0}", i);                // 해쉬 추가                if (_Hash.Add(RECEIVER.Hash_IO_BOARD, IO_BOARD.ID, IO_BOARD) == true)                {                    RECEIVER.List_IO_BOARD_ID.Add(IO_BOARD.ID);                }            }            // 키패드            RECEIVER.Port4KeyPAD.COMM_ID = 4;            // 포트 넘버 (COM1, COM2..)            RECEIVER.Port4KeyPAD.PortNo = 5;    // cyim 기본값 변경 비상방송은 4->5            // 포트BPS (1200,9600,14400, 38400 ...)            RECEIVER.Port4KeyPAD.BaudRate = 115200;            // 포트 데이터 비트 설정 (5,6,7,8)            RECEIVER.Port4KeyPAD.DataBits = 8;            // 포트 스톱비트 설정 (1, 1.5, 2)            RECEIVER.Port4KeyPAD.StopBits = COMM_STOPBIT.ONESTOPBIT;            // 포트 패리티 설정 (None, Even, Odd)            RECEIVER.Port4KeyPAD.Parity = COMM_PARITY.NONE;            // 타임아웃 설정            RECEIVER.Port4KeyPAD.TimeOut = _COMM_TIMEOUT;            // 통신 지연 설정            RECEIVER.Port4KeyPAD.Delay = _COMM_DELAY;            // 표시용 전압변화값            RECEIVER.Port4KeyPAD.Delta_Volt = _DELTA_VOLT;            // 재시도 횟수            RECEIVER.Port4KeyPAD.Retry_Count = _RETRY_COUNT;            // 사용 여부            RECEIVER.Port4KeyPAD.Use_Flag = true;            _KEYPAD KEYPAD = new _KEYPAD();            // ID             KEYPAD.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_KEYPAD_KEY, 1));            // 이름            KEYPAD.Set_KEY_NAME(_Text.UI_TREE_KEYPAD); // 오직 하나뿐            KEYPAD.Set_Use_Flag("Y");   // 사용 안함으로 세팅한다. // 재수정 2012.8.29            KEYPAD.BOARD_ID = 0;            KEYPAD.BOARD_NAME = "키패드";            RECEIVER.KEYPAD = KEYPAD;            // 비상방송            RECEIVER.Port4EmergencyBroadcast.COMM_ID = 5;            // 포트 넘버 (COM1, COM2..)            RECEIVER.Port4EmergencyBroadcast.PortNo = 4;    // cyim 기본값 변경 비상방송은 5->4,             // 포트BPS (1200,9600,14400, 38400 ...)            RECEIVER.Port4EmergencyBroadcast.BaudRate = 9600;            // 포트 데이터 비트 설정 (5,6,7,8)            RECEIVER.Port4EmergencyBroadcast.DataBits = 8;            // 포트 스톱비트 설정 (1, 1.5, 2)            RECEIVER.Port4EmergencyBroadcast.StopBits = COMM_STOPBIT.ONESTOPBIT;            // 포트 패리티 설정 (None, Even, Odd)            RECEIVER.Port4EmergencyBroadcast.Parity = COMM_PARITY.NONE;            // 타임아웃 설정            RECEIVER.Port4EmergencyBroadcast.TimeOut = _COMM_TIMEOUT;            // 통신 지연 설정            RECEIVER.Port4EmergencyBroadcast.Delay = _COMM_DELAY;            // 표시용 전압변화값            RECEIVER.Port4EmergencyBroadcast.Delta_Volt = _DELTA_VOLT;            // 재시도 횟수            RECEIVER.Port4EmergencyBroadcast.Retry_Count = _RETRY_COUNT;            // 사용 여부            RECEIVER.Port4EmergencyBroadcast.Use_Flag = true;            _EMERGENCY_BROADCAST EMERGENCY_BROADCAST = new _EMERGENCY_BROADCAST();            // ID             EMERGENCY_BROADCAST.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_EMERGENCY_BROADCAST_KEY, 1));            // 이름            EMERGENCY_BROADCAST.Set_KEY_NAME(_Text.UI_TREE_EMERGENCY_BROADCAST); // 오직 하나뿐            // 포트 넘버 (COM1, COM2..)            RECEIVER.EMERGENCY_BROADCAST = EMERGENCY_BROADCAST;        }        private void uiButton_cancel_Click(object sender, EventArgs e)        {            // 신규 추가 시에만             if (EditMode == false)            {                // 데이타베이스 경로 초기화                _Data.DB_FullPath = null;                // 프로세스 삭제                System.Diagnostics.Process[] mProcess = System.Diagnostics.Process.GetProcessesByName("fbserver");                foreach (System.Diagnostics.Process p in mProcess)                    p.Kill();                System.Threading.Thread.Sleep(1000);                // 수신기 폴더 삭제                string ReiceiverFolderName = _Text.DEFAULT_FOLDER_RECEIVER_PREFIX + RECEIVER.ID;                _File.Delete_Folder(_Data.Project_Path, _Data.Project_Name + "\\" + ReiceiverFolderName);            }            Close();        }    }}
 |