123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371 |
- 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
- {
- // cyim 2016.08.26
- // 대용량 수신기를 위해 기존의 코드중 15 번 통신카드는 이제 0번으로 대체해야한다. - 엑셀파일 포맷이 변경해야함
- // 수신기는 최대 8개의 통신카드 (통신카드당 2계통 커버) => 총 16 계통
- // 중계반은 최대 60개이고 (중계반은 4계통을 커버) -> 총 240 계통
- // 예외처리 사항
- // 1) 통신보드중 15번카드는 이제 0번카드로 대체 (IO 신호용)
- // 2) IO 보드는 어차피 셋팅이 의미없음
- public partial class Form_Receiver_Port_BigReceiver : Form
- {
- _RECEIVER RECEIVER;
- string RECEIVER_ID;
- // 최대 64개 (수신기 8개 + 중계반 60개) , 단 UI 접근성을 위해 배열 인덱스를 그대로 사용하려함
- Boolean[] bCOMM_Use = new Boolean[65];
- Boolean[] bCOMM_CH1Use = new Boolean[65];
- Boolean[] bCOMM_CH2Use = new Boolean[65];
- Boolean[] bCOMM_CH3Use = new Boolean[65];
- Boolean[] bCOMM_CH4Use = new Boolean[65];
- Boolean[] bIO_Use = new Boolean[16];
- public Form_Receiver_Port_BigReceiver(int iIndex)
- {
- InitializeComponent();
- RECEIVER_ID = Convert.ToString(iIndex);
- RECEIVER = (_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID];
- ReceiverToObj();
- }
- private void UiButton_Confirm_Click(object sender, EventArgs e)
- {
- try
- {
- ObjToReceiver();
- ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard = RECEIVER.Port4CommBoard;
- ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard = RECEIVER.Port4IOBoard;
- ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD = RECEIVER.Port4KeyPAD;
- ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast = RECEIVER.Port4EmergencyBroadcast;
- // DB 에 저장
- Form_Receiver_Add DbSave_For_Form_Receiver_Add = new Form_Receiver_Add(Int32.Parse(((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).ID));
- DbSave_For_Form_Receiver_Add._Event_Project_Receiver_Save_Event();
- // 완료 이벤트 발생
- _Event.WorkViewPageName_Receiver_SendMessage_Write(RECEIVER.ID);
- // 저장하였습니다
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.OK, 250, 150, _Text.SaveInform, 0);
- // 프로젝트 수정
- _Data.ProJect_Save_Complete = false;
- Close();
- }
- catch (Exception ex)
- {
- // LOG
- _Event.DebugView_SendMessage_Write(ex.ToString());
- }
- }
- // RECEIVER 객체의 값으로 화면 오브젝트의 값을 세팅한다.
- private void ReceiverToObj()
- {
- // GroupBox 데이터 넣기 (통신보드, IO보드, KeyPad, 비상방송 통신 관련 사항)
- gb_COMM1.Text = "통신보드 : " + RECEIVER.Port4CommBoard.Get_COM_PORT();
- gb_COMM2.Text = "IO보드 : " + RECEIVER.Port4IOBoard.Get_COM_PORT();
- gb_COMM3.Text = "키패드 : " + RECEIVER.Port4KeyPAD.Get_COM_PORT();
- gb_COMM4.Text = "비상방송 : " + RECEIVER.Port4EmergencyBroadcast.Get_COM_PORT();
- cb_COMM_USE.Checked = RECEIVER.Port4CommBoard.Use_Flag;
- cb_IO_USE.Checked = RECEIVER.Port4IOBoard.Use_Flag;
- cb_KEYPAD_USE.Checked = RECEIVER.Port4KeyPAD.Use_Flag;
- cb_EMER_USE.Checked = RECEIVER.Port4EmergencyBroadcast.Use_Flag;
- // 통신 보드
- cb_COMM1_PORT.SelectedIndex = RECEIVER.Port4CommBoard.PortNo - 1;
- cb_COMM1_BAUDRATE.Text = RECEIVER.Port4CommBoard.Get_COM_BAUDRATE();
- cb_COMM1_DATABITS.Text = RECEIVER.Port4CommBoard.DataBits.ToString();
- cb_COMM1_STOPBITS.Text = RECEIVER.Port4CommBoard.Get_COM_STOPBIT();
- cb_COMM1_PARITY.Text = RECEIVER.Port4CommBoard.Get_COM_PARITY();
- // I/O 보드
- cb_COMM2_PORT.SelectedIndex = RECEIVER.Port4IOBoard.PortNo - 1;
- cb_COMM2_BAUDRATE.Text = RECEIVER.Port4IOBoard.Get_COM_BAUDRATE();
- cb_COMM2_DATABITS.Text = RECEIVER.Port4IOBoard.DataBits.ToString();
- cb_COMM2_STOPBITS.Text = RECEIVER.Port4IOBoard.Get_COM_STOPBIT();
- cb_COMM2_PARITY.Text = RECEIVER.Port4IOBoard.Get_COM_PARITY();
- // KeyPad
- cb_COMM3_PORT.SelectedIndex = RECEIVER.Port4KeyPAD.PortNo - 1;
- cb_COMM3_BAUDRATE.Text = RECEIVER.Port4KeyPAD.Get_COM_BAUDRATE();
- cb_COMM3_DATABITS.Text = RECEIVER.Port4KeyPAD.DataBits.ToString();
- cb_COMM3_STOPBITS.Text = RECEIVER.Port4KeyPAD.Get_COM_STOPBIT();
- cb_COMM3_PARITY.Text = RECEIVER.Port4KeyPAD.Get_COM_PARITY();
- // 비상방송
- cb_COMM4_PORT.SelectedIndex = RECEIVER.Port4EmergencyBroadcast.PortNo - 1;
- cb_COMM4_BAUDRATE.Text = RECEIVER.Port4EmergencyBroadcast.Get_COM_BAUDRATE();
- cb_COMM4_DATABITS.Text = RECEIVER.Port4EmergencyBroadcast.DataBits.ToString();
- cb_COMM4_STOPBITS.Text = RECEIVER.Port4EmergencyBroadcast.Get_COM_STOPBIT();
- cb_COMM4_PARITY.Text = RECEIVER.Port4EmergencyBroadcast.Get_COM_PARITY();
- // 통신보드 및 중계반
- foreach (string COM_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).List_COM_BOARD_ID)
- {
- int iID;
- iID = ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID; // BOARDID
- if ((iID > -1) && (iID < 65)) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다
- {
- // ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_NAME; // BOARDID
- bCOMM_CH1Use[iID] = ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh1_Use_Flag;
- bCOMM_CH2Use[iID] = ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh2_Use_Flag;
- bCOMM_CH3Use[iID] = ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh3_Use_Flag;
- bCOMM_CH4Use[iID] = ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh4_Use_Flag;
- bCOMM_Use[iID] = ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bUse_Flag; // Use Flag
- }
- }
- // IO 보드
- foreach (string IO_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).List_IO_BOARD_ID)
- {
- int iID;
- iID = ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_ID; // BOARDID
- if ((iID > -1) && (iID < 16)) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다
- {
- // ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_NAME; // BOARDID
- bIO_Use[iID] = ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).bUse_Flag; // Use Flag
- }
- }
- // 체크 박스 설정
- for (int i = 0; i < 65; i++) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다
- {
- //
- // 통신보드
- //
- // 사용 여부
- Control[] ctrl1 = this.Controls.Find(string.Format("cb_COMM{0}_Use", i), true);
- ((CheckBox)ctrl1[0]).Checked = bCOMM_Use[i];
- // 채널 체크여부
- Control[] ctrl2 = this.Controls.Find(string.Format("cb_COMM{0}_CH1Use", i), true);
- ((CheckBox)ctrl2[0]).Checked = bCOMM_CH1Use[i];
- Control[] ctrl3 = this.Controls.Find(string.Format("cb_COMM{0}_CH2Use", i), true);
- ((CheckBox)ctrl3[0]).Checked = bCOMM_CH2Use[i];
- //if (i > 8) // 9번 즉 중계반부터 채널이 4개이다
- {
- Control[] ctrl4 = this.Controls.Find(string.Format("cb_COMM{0}_CH3Use", i), true);
- ((CheckBox)ctrl4[0]).Checked = bCOMM_CH3Use[i];
- Control[] ctrl5 = this.Controls.Find(string.Format("cb_COMM{0}_CH4Use", i), true);
- ((CheckBox)ctrl5[0]).Checked = bCOMM_CH4Use[i];
- }
- //
- // IO 보드
- //
- if (i <= 15)
- {
- Control[] ctrl6 = this.Controls.Find(string.Format("cb_IO{0}_Use", i), true);
- ((CheckBox)ctrl6[0]).Checked = bIO_Use[i];
- }
- }
- }
- // 화면 오브젝트의 값을 RECEIVER 객체로 보낸다.
- private void ObjToReceiver()
- {
- // 포트
- RECEIVER.Port4CommBoard.Use_Flag = cb_COMM_USE.Checked;
- RECEIVER.Port4IOBoard.Use_Flag = cb_IO_USE.Checked;
- RECEIVER.Port4KeyPAD.Use_Flag = cb_KEYPAD_USE.Checked;
- RECEIVER.Port4EmergencyBroadcast.Use_Flag = cb_EMER_USE.Checked;
- // 통신 보드
- RECEIVER.Port4CommBoard.PortNo = cb_COMM1_PORT.SelectedIndex + 1;
- RECEIVER.Port4CommBoard.BaudRate = Util.StrToInt(cb_COMM1_BAUDRATE.Text, 0);
- RECEIVER.Port4CommBoard.DataBits = Util.StrToInt(cb_COMM1_DATABITS.Text, 0);
- RECEIVER.Port4CommBoard.Set_StopBits(cb_COMM1_STOPBITS.Text);
- RECEIVER.Port4CommBoard.Set_Parity(cb_COMM1_PARITY.Text);
- // I/O 보드
- RECEIVER.Port4IOBoard.PortNo = cb_COMM2_PORT.SelectedIndex + 1;
- RECEIVER.Port4IOBoard.BaudRate = Util.StrToInt(cb_COMM2_BAUDRATE.Text, 0);
- RECEIVER.Port4IOBoard.DataBits = Util.StrToInt(cb_COMM2_DATABITS.Text, 0);
- RECEIVER.Port4IOBoard.Set_StopBits(cb_COMM2_STOPBITS.Text);
- RECEIVER.Port4IOBoard.Set_Parity(cb_COMM2_PARITY.Text);
- // KeyPad
- RECEIVER.Port4KeyPAD.PortNo = cb_COMM3_PORT.SelectedIndex + 1;
- RECEIVER.Port4KeyPAD.BaudRate = Util.StrToInt(cb_COMM3_BAUDRATE.Text, 0);
- RECEIVER.Port4KeyPAD.DataBits = Util.StrToInt(cb_COMM3_DATABITS.Text, 0);
- RECEIVER.Port4KeyPAD.Set_StopBits(cb_COMM3_STOPBITS.Text);
- RECEIVER.Port4KeyPAD.Set_Parity(cb_COMM3_PARITY.Text);
- // 비상방송
- RECEIVER.Port4EmergencyBroadcast.PortNo = cb_COMM4_PORT.SelectedIndex + 1;
- RECEIVER.Port4EmergencyBroadcast.BaudRate = Util.StrToInt(cb_COMM4_BAUDRATE.Text, 0);
- RECEIVER.Port4EmergencyBroadcast.DataBits = Util.StrToInt(cb_COMM4_DATABITS.Text, 0);
- RECEIVER.Port4EmergencyBroadcast.Set_StopBits(cb_COMM4_STOPBITS.Text);
- RECEIVER.Port4EmergencyBroadcast.Set_Parity(cb_COMM4_PARITY.Text);
- // 체크 박스 설정
- for (int i = 0; i < 65; i++) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다
- {
- //
- // 통신보드
- //
- // 사용 여부
- Control[] ctrl1 = this.Controls.Find(string.Format("cb_COMM{0}_Use", i), true);
- bCOMM_Use[i] = ((CheckBox)ctrl1[0]).Checked;
- // 채널 체크여부
- Control[] ctrl2 = this.Controls.Find(string.Format("cb_COMM{0}_CH1Use", i), true);
- bCOMM_CH1Use[i] = ((CheckBox)ctrl2[0]).Checked;
- Control[] ctrl3 = this.Controls.Find(string.Format("cb_COMM{0}_CH2Use", i), true);
- bCOMM_CH2Use[i] = ((CheckBox)ctrl3[0]).Checked;
- //if (i > 8) // 9번 즉 중계반부터 채널이 4개이다
- {
- Control[] ctrl4 = this.Controls.Find(string.Format("cb_COMM{0}_CH3Use", i), true);
- bCOMM_CH3Use[i] = ((CheckBox)ctrl4[0]).Checked;
- Control[] ctrl5 = this.Controls.Find(string.Format("cb_COMM{0}_CH4Use", i), true);
- bCOMM_CH4Use[i] = ((CheckBox)ctrl5[0]).Checked;
- }
- //
- // IO 보드
- //
- if (i <= 15)
- {
- Control[] ctrl6 = this.Controls.Find(string.Format("cb_IO{0}_Use", i), true);
- bIO_Use[i] = ((CheckBox)ctrl6[0]).Checked;
- }
- }
- foreach (string COM_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).List_COM_BOARD_ID)
- {
- int iID;
- iID = ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID; // BOARDID
- if ((iID > -1) && (iID < 65)) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다
- {
- //((_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 = bCOMM_CH1Use[iID];
- ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh2_Use_Flag = bCOMM_CH2Use[iID];
- ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh3_Use_Flag = bCOMM_CH3Use[iID];
- ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh4_Use_Flag = bCOMM_CH4Use[iID];
- ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bUse_Flag = bCOMM_Use[iID]; ; // Use Flag
- }
- }
- foreach (string IO_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).List_IO_BOARD_ID)
- {
- int iID;
- iID = ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_ID; // BOARDID
- if ((iID > -1) && (iID < 16)) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다
- {
- // ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_NAME; // BOARDID
- ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).bUse_Flag = bIO_Use[iID]; // Use Flag
- }
- }
- // cyim 2014.5.22 입출력수정을 해도 변동이 없는 상황 수정
- // COM 이 활성화되면 보드에서 당연히 사용한다
- ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).KEYPAD.bUse_Flag = cb_KEYPAD_USE.Checked;
- ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).EMERGENCY_BROADCAST.Set_Use_Flag((cb_EMER_USE.Checked == true) ? "Y" : "N");
- }
- // 취소 버튼을 누르면, 그냥 화면을 닫는다.
- private void UiButton_cancel_Click(object sender, EventArgs e)
- {
- Close();
- }
- private void checkBox_All_1_CheckedChanged(object sender, EventArgs e)
- {
- bool check = this.checkBox_All_1.Checked;
- for (int i = 1; i <= 21; i++)
- {
- // 사용 여부
- Control[] ctrl1 = this.Controls.Find(string.Format("cb_COMM{0}_Use", i), true);
- ((CheckBox)ctrl1[0]).Checked = check;
- // 채널 체크여부
- Control[] ctrl2 = this.Controls.Find(string.Format("cb_COMM{0}_CH1Use", i), true);
- ((CheckBox)ctrl2[0]).Checked = check;
- Control[] ctrl3 = this.Controls.Find(string.Format("cb_COMM{0}_CH2Use", i), true);
- ((CheckBox)ctrl3[0]).Checked = check;
- Control[] ctrl4 = this.Controls.Find(string.Format("cb_COMM{0}_CH3Use", i), true);
- ((CheckBox)ctrl4[0]).Checked = check;
- Control[] ctrl5 = this.Controls.Find(string.Format("cb_COMM{0}_CH4Use", i), true);
- ((CheckBox)ctrl5[0]).Checked = check;
- }
- }
- private void checkBox_All_2_CheckedChanged(object sender, EventArgs e)
- {
- bool check = this.checkBox_All_2.Checked;
- for (int i = 22; i <= 43; i++)
- {
- // 사용 여부
- Control[] ctrl1 = this.Controls.Find(string.Format("cb_COMM{0}_Use", i), true);
- ((CheckBox)ctrl1[0]).Checked = check;
- // 채널 체크여부
- Control[] ctrl2 = this.Controls.Find(string.Format("cb_COMM{0}_CH1Use", i), true);
- ((CheckBox)ctrl2[0]).Checked = check;
- Control[] ctrl3 = this.Controls.Find(string.Format("cb_COMM{0}_CH2Use", i), true);
- ((CheckBox)ctrl3[0]).Checked = check;
- Control[] ctrl4 = this.Controls.Find(string.Format("cb_COMM{0}_CH3Use", i), true);
- ((CheckBox)ctrl4[0]).Checked = check;
- Control[] ctrl5 = this.Controls.Find(string.Format("cb_COMM{0}_CH4Use", i), true);
- ((CheckBox)ctrl5[0]).Checked = check;
- }
- }
- private void checkBox_All_3_CheckedChanged(object sender, EventArgs e)
- {
- bool check = this.checkBox_All_3.Checked;
- for (int i = 44; i <= 64; i++)
- {
- // 사용 여부
- Control[] ctrl1 = this.Controls.Find(string.Format("cb_COMM{0}_Use", i), true);
- ((CheckBox)ctrl1[0]).Checked = check;
- // 채널 체크여부
- Control[] ctrl2 = this.Controls.Find(string.Format("cb_COMM{0}_CH1Use", i), true);
- ((CheckBox)ctrl2[0]).Checked = check;
- Control[] ctrl3 = this.Controls.Find(string.Format("cb_COMM{0}_CH2Use", i), true);
- ((CheckBox)ctrl3[0]).Checked = check;
- Control[] ctrl4 = this.Controls.Find(string.Format("cb_COMM{0}_CH3Use", i), true);
- ((CheckBox)ctrl4[0]).Checked = check;
- Control[] ctrl5 = this.Controls.Find(string.Format("cb_COMM{0}_CH4Use", i), true);
- ((CheckBox)ctrl5[0]).Checked = check;
- }
- }
- //
- // IO보드
- //
- private void checkBox_All_5_CheckedChanged(object sender, EventArgs e)
- {
- bool check = this.checkBox_All_5.Checked;
- for (int i = 0; i <= 15; i++) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다
- {
- // 사용 여부
- Control[] ctrl1 = this.Controls.Find(string.Format("cb_IO{0}_Use", i), true);
- ((CheckBox)ctrl1[0]).Checked = check;
- }
- }
- }
- }
|