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