using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; // cyim 2015.7.13 설비연동 주석 정리 // 설비연동 소스가 너무 주석과 내용이 틀리고 엉망이다. 이전 작업자가 작업한 코드를 모두 정리하고 // 불필요한 코드는 다 제거한다 namespace FPER { public partial class frmControlWrite : Form { // 설비 연동 창 클래스 MDIParent mdi = null; controlWriteDevType[] devTypes = null; delegate void deleFormInit(); // cyim 2015.2.10 설비연동의 경우 실행이 완료되어야 다른 버튼이 눌려진다 public bool ProcessEnableStatus = false; // cyim 2015.8.18 주경종정지 기능 추가 public bool InitMainSoundStop = false; // cyim 2016.12.09 : IFC3300에서는 예비전원버튼 -> 설비전체연동조작버튼 public int InitEquipmentAllOperationStatus = 0; public System.Windows.Forms.Timer timer = new Timer(); // 생성자 public frmControlWrite(bool MainSoundStop, int EquipmentAllOperationStatus) { InitializeComponent(); // 초기화 ProcessEnableStatus = false; // cyim 2015.8.18 주경종정지 기능 추가 : 만약 수신반에서 주경종 정지 기능을 사용하려고 했다면 화면이 준비되는 순간 마지막에 주경종 정지 명령을 날린다 InitMainSoundStop = MainSoundStop; // cyim 2016.12.09 : IFC3300에서는 예비전원버튼 -> 설비전체연동조작버튼 InitEquipmentAllOperationStatus = EquipmentAllOperationStatus; timer.Interval = 3000; timer.Tick += new EventHandler(timer_Tick); } // 창 데이터 초기화 함수 public void Form_Init() { try { if (this.InvokeRequired) { deleFormInit d = new deleFormInit(Form_Init); this.Invoke(d, new object[] { }); } else { getData(); this.mdi.SetLikageBtnStatus(); } } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } // 버튼 이미지 로딩 함수 private Image ImgLoad(string path) { Image ret = null; try { ret = Image.FromFile(path); } catch (Exception e) { Util.UErrorMessage(e, 0, 0); } return ret; } private Image ImageLoadingPanelRed() { // cyim : 디자인개선 //return (Image)Properties.Resources.panel_430_52_R; return (Image)Properties.Resources.버튼_개별정지_420_77; } private Image ImageLoadingPanelBlue() { // cyim : 디자인 개선 //return (Image)Properties.Resources.panel_430_52_B; return (Image)Properties.Resources.버튼_개별연동_420_77; } private controlWriteDevType findControlDevType(string dev_type) { controlWriteDevType devType = null; try { foreach (controlWriteDevType devtp in devTypes) { if (devtp.Dev_type.Equals(dev_type)) { devType = devtp; break; } } } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } return devType; } private void frmControlWrite_Load(object sender, EventArgs e) { // cyim 2013.8.1 : 더블버퍼링 적용 SetStyle(ControlStyles.UserPaint, true); //this.UpdateStyles(); SetStyle(ControlStyles.AllPaintingInWmPaint, true); //this.UpdateStyles(); SetStyle(ControlStyles.OptimizedDoubleBuffer, true); this.UpdateStyles(); try { mdi = (MDIParent)this.MdiParent; txtThisReceiverID.Text = string.Format("{0:00}", mdi.myReceiverID); this.Cursor = Cursors.WaitCursor; init(); this.Cursor = Cursors.Default; // cyim 2015.8.18 주경종정지 기능 추가 if (InitMainSoundStop == true) MainSoundStop(); // cyim 2016.12.09 : IFC3300에서는 예비전원버튼 -> 설비전체연동조작버튼 if (InitEquipmentAllOperationStatus != 0) timer.Start(); } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } // cyim 2016.12.09 : IFC3300에서는 예비전원버튼 -> 설비전체연동조작버튼 public void timer_Tick(object sender, EventArgs e) { // 2초후에 루틴 if (InitEquipmentAllOperationStatus != 0) // 0 Default, 1 : 전체정지, 2 : 전체연동 { getData(); } timer.Stop(); } private void frmControlWrite_Activated(object sender, EventArgs e) { try { this.mdi.SelectMenuIndex = 1; } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } private void frmControlWrite_Disposed(object sender, EventArgs e) { try { // cyim 2016.12.09 : IFC3300에서는 예비전원버튼 -> 설비전체연동조작버튼 timer.Tick -= new EventHandler(timer_Tick); this.mdi.SelectMenuIndex = 0; } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } // 데이터 초기화 함수 private void init() { this.SetLDeviceTypeConfig(); } // 설정 데이터 갱신 함수 private void getData() { try { if (this.InvokeRequired) { deleFormInit d = new deleFormInit(getData); this.Invoke(d, new object[] { }); } else { this.UpdateLDeviceTypeConfig(); } } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } // 버튼 상태 변경 함수 private void DoChangeBTNSet(Button btnYes, Button btnNo, bool set) { try { if (set) // 사용 { btnYes.Enabled = false; btnNo.Enabled = true; btnYes.BackColor = Color.Blue; btnNo.BackColor = Color.Red; btnYes.ForeColor = Color.White; btnNo.ForeColor = Color.White; } else // 차단 { btnYes.Enabled = true; btnNo.Enabled = false; btnYes.BackColor = Color.Blue; btnNo.BackColor = Color.Red; btnYes.ForeColor = Color.White; btnNo.ForeColor = Color.White; } } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } // 종료하기 private void btnWinClose_Click(object sender, EventArgs e) { this.Close(); } //명령 쓰기 완료--종료. bool lock_cmd = false; // 설비 연동 상태 갱신 함수 private void DoChangeDeviceLinkage2(object sender, EventArgs e) { try { // cyim 2015.2.10 설비연동의 경우 실행이 완료되어야 다른 버튼이 눌려진다 if (ProcessEnableStatus == true || mdi.CommDaemon_ComStatus == false) return; if (sender is Control) { Control Ctl = (Control)sender; if (Ctl.Tag is CDeviceTypeConfig) { if (!lock_cmd) { lock_cmd = true; this.Cursor = Cursors.WaitCursor; timer_check.Enabled = true; progress_dot = -2; progress_end = false; timer_progress.Enabled = true; CDeviceTypeConfig dtc = (CDeviceTypeConfig)Ctl.Tag; string devTypeString = dtc.deviceType; int Use_flag = (dtc.use ? 1 : 0); CmdInfo cmd = new CmdInfo(prt_cmd_define.read_command_status, mdi.myReceiverID, 1, 0, 0, null); cmd.CommandType = "DC"; cmd.ApplyRange = "A"; //차단레벨(회로타입차단용) A-All,C-Comm,B-Board,L-Loop,R-중계기,D-회로,I-입력회로,O-출력회로 cmd.Status = (Use_flag == 0 ? 1 : 0); //사용여부 0-비사용,1-사용 cmd.SubType = devTypeString.Substring(1); cmd.CommId = 1; cmd.loopNo = 0; //명령 생성 dCommandResponse d = new dCommandResponse(command_complete); cmd.dEvent = d; // cyim 2015.2.10 설비연동 실행 mdi.CommandLog(MappingStatus.Log, string.Format("설비연동 실행 [{0},{1}]", dtc.deviceName, (cmd.Status == 0 ? "Disable" : "Enable"))); this.mdi.ui.runCommand(cmd); } } } } catch (Exception ex) { progress_end = true; lock_cmd = false; this.Cursor = Cursors.Default; Util.UErrorMessage(ex, 0, 0); } } // cyim 2015.8.18 주경종정지 기능 추가 public void MainSoundStop() { try { // cyim 2015.2.10 설비연동의 경우 실행이 완료되어야 다른 버튼이 눌려진다 if (ProcessEnableStatus == true || mdi.CommDaemon_ComStatus == false) return; //if (sender is Control) { //Control Ctl = (Control)sender; //if (Ctl.Tag is CDeviceTypeConfig) { if (!lock_cmd) { lock_cmd = true; this.Cursor = Cursors.WaitCursor; timer_check.Enabled = true; progress_dot = -2; progress_end = false; timer_progress.Enabled = true; //CDeviceTypeConfig dtc = (CDeviceTypeConfig)Ctl.Tag; //string devTypeString = dtc.deviceType; string devTypeString = "OA"; //int Use_flag = (dtc.use ? 1 : 0); int Use_flag = 1; // 무조건 정지 CmdInfo cmd = new CmdInfo(prt_cmd_define.read_command_status, mdi.myReceiverID, 1, 0, 0, null); cmd.CommandType = "DC"; cmd.ApplyRange = "A"; //차단레벨(회로타입차단용) A-All,C-Comm,B-Board,L-Loop,R-중계기,D-회로,I-입력회로,O-출력회로 cmd.Status = (Use_flag == 0 ? 1 : 0); //사용여부 0-비사용,1-사용 cmd.SubType = devTypeString.Substring(1); cmd.CommId = 1; cmd.loopNo = 0; //명령 생성 dCommandResponse d = new dCommandResponse(command_complete); cmd.dEvent = d; // cyim 2015.2.10 설비연동 실행 mdi.CommandLog(MappingStatus.Log, string.Format("설비연동 실행 [{0},{1}]", "주경종"/*dtc.deviceName*/, (cmd.Status == 0 ? "Disable" : "Enable"))); this.mdi.ui.runCommand(cmd); } } } } catch (Exception ex) { progress_end = true; lock_cmd = false; this.Cursor = Cursors.Default; Util.UErrorMessage(ex, 0, 0); } } // cmd 리턴 받으면 실행 함수 public void command_complete(CmdInfo resInfo) { try { this.Cursor = Cursors.Default; timer_check.Enabled = false; progress_end = true; getData(); //this.mdi.SetLikageBtnStatus(); // cyim 2015.7.7 속도개선작업 : 설비연동화면 종료할때만 최종 결과를 반영하자 (MDIParent 가 실행될때 이미 시작은 미리 되었음) 통신에서 이렇게 데이타베이스를 가져오지 않아도된다 if (resInfo != null) { if (resInfo.ErrResponse) { } else { } } } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } // 체크 타이머 함수 private void timer_check_Tick(object sender, EventArgs e) { this.command_complete(null); } int progress_dot = -2; bool progress_end = false; // 진행 창 설정 타이머 private void timer_progress_Tick(object sender, EventArgs e) { try { if (progress_dot == -100) { panel_LabelMessage.Visible = false; // cyim 2013.7.31 진행중 팝업창 디자인변경 lbl_message.Visible = false; timer_progress.Enabled = false; lock_cmd = false; } progress_dot++; if (progress_dot > 4) { progress_dot = 0; } if (progress_dot >= 0) { panel_LabelMessage.Visible = true; // cyim 2013.7.31 진행중 팝업창 디자인변경 lbl_message.Text = "진 행 중"; lbl_message.Visible = true; // cyim 2013.7.31 진행중 팝업창 디자인변경 //lbl_message.Width = 450; //lbl_message.Height = 250; lbl_message.Text = "진 행 중\n"; // cyim 2013.7.31 진행중 팝업창 디자인변경 : 텍스트 삭제 //if (progress_dot == 0) { // lbl_message.Text = lbl_message.Text + " "; //} //else if (progress_dot == 1) { // lbl_message.Text = lbl_message.Text + ". "; //} //else if (progress_dot == 2) { // lbl_message.Text = lbl_message.Text + ". . "; //} //else if (progress_dot == 3) { // lbl_message.Text = lbl_message.Text + ". . . "; //} //else if (progress_dot == 4) { // lbl_message.Text = lbl_message.Text + ". . . ."; //} } if (progress_end) { progress_dot = -100; } } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } private void frmControlWrite_FormClosing(object sender, FormClosingEventArgs e) { // 창 닫는 함수 this.mdi.SetLikageBtnStatus(); } List LDeviceTypeConfig = new List(); List LDeviceTypePanel = new List(); // 설비 연동 버튼 설정 함수 void SetDeviceTypePanel() { this.LDeviceTypePanel.Clear(); int iPanelGab = 650 / ((LDeviceTypeConfig.Count + 1) / 2); foreach (CDeviceTypeConfig dtc in this.LDeviceTypeConfig) { Panel panel = new Panel(); panel.Parent = this.groupBox1; panel.Size = new Size(420, 60); // cyim : 디자인개선 (430, 52) -> (420, 60) int positionX = 0; int positionY = 0; if ((this.LDeviceTypePanel.Count + 1) % 2 == 1) {// 버튼 줄 설정, 왼쪽 positionX = 80; // cyim : 디자인개선 40 -> 80 positionY = 50 + iPanelGab * ((this.LDeviceTypePanel.Count + 1) / 2); } else {// 오른쪽 positionX = 570; // cyim : 디자인개선 530 -> 500 positionY = 50 + iPanelGab * ((this.LDeviceTypePanel.Count) / 2); } panel.Location = new Point(positionX, positionY); panel.BackgroundImage = this.ImageLoadingPanelRed(); Label labelName = new Label(); labelName.Parent = panel; labelName.AutoSize = true; labelName.Location = new Point(37, 17); // cyim : 디자인개선 (37, 13) -> (37, 17) labelName.Font = new Font("굴림", 20F, System.Drawing.FontStyle.Bold); labelName.BackColor = Color.Transparent; labelName.ForeColor = Color.White; // cyim : 디자인개선 Label labelStatus = new Label(); labelStatus.Parent = panel; labelStatus.AutoSize = true; labelStatus.Location = new Point(304, 17); // cyim : 디자인개선 (311, 13) -> (304, 17) labelStatus.Font = new Font("굴림", 20F, System.Drawing.FontStyle.Bold); labelStatus.BackColor = Color.Transparent; labelStatus.ForeColor = Color.White; // cyim : 디자인개선 panel.MouseClick += new MouseEventHandler(DoChangeDeviceLinkage2); labelName.MouseClick += new MouseEventHandler(DoChangeDeviceLinkage2); labelStatus.MouseClick += new MouseEventHandler(DoChangeDeviceLinkage2); labelName.Text = dtc.deviceName; panel.BackgroundImage = (dtc.use ? this.ImageLoadingPanelBlue() : this.ImageLoadingPanelRed()); labelStatus.Text = (dtc.use ? "연 동" : "정 지"); panel.Tag = dtc; labelName.Tag = dtc; labelStatus.Tag = dtc; this.LDeviceTypePanel.Add(panel); } this.UpdateDeviceTypePanel(); } // 버튼 갱신 함수 void UpdateDeviceTypePanel() { foreach (Panel panel in this.LDeviceTypePanel) { CDeviceTypeConfig dtc = (CDeviceTypeConfig)panel.Tag; Label labelName = (Label)panel.Controls[0]; Label labelStatus = (Label)panel.Controls[1]; if ((labelStatus.Text == "연 동") != dtc.use) { panel.BackgroundImage = (dtc.use ? this.ImageLoadingPanelBlue() : this.ImageLoadingPanelRed()); labelStatus.Text = (dtc.use ? "연 동" : "정 지"); } } // cyim 2013.10.1 : 화면 갱신 this.Update(); } // 설비연동 데이터 재설정 함수 int SetLDeviceTypeConfig() { this.LDeviceTypeConfig.Clear(); DacDeviceConfig dacDeviceConfig = new DacDeviceConfig(mdi.myReceiverID); // cyim 2015.7.30 데이타베이스 접속 루틴 변경 DataTable dt = dacDeviceConfig.Device_type_Select(code_InOutType.Output, null); foreach (DataRow dr in dt.Rows) { // cyim 2014.11.25 주경종 허용 //if (dr["DEVICE_TYPE"].ToString() != "OA" && dr["SEQ_NO"].ToString() != "0") if (dr["SEQ_NO"].ToString() != "0") { this.LDeviceTypeConfig.Add(new CDeviceTypeConfig(dr["SYMBOL_TYPE"].ToString(), dr["DEVICE_TYPE"].ToString(), dr["DEVICE_TYPE_NAME"].ToString(), dr["USE_FLAG"].ToString())); } } this.SetDeviceTypePanel(); return this.LDeviceTypeConfig.Count; } // 설비 연동 데이터 갱신 함수 int UpdateLDeviceTypeConfig() { DacDeviceConfig dacDeviceConfig = new DacDeviceConfig(mdi.myReceiverID);// cyim 2015.7.30 데이타베이스 접속 루틴 변경 DataTable dt = dacDeviceConfig.Device_type_Select(code_InOutType.Output, null); foreach (DataRow dr in dt.Rows) { // cyim 2014.11.25 주경종 허용 //if (dr["DEVICE_TYPE"].ToString() != "OA" && dr["SEQ_NO"].ToString() != "0") if (dr["SEQ_NO"].ToString() != "0") { bool add = true; foreach (CDeviceTypeConfig cd in this.LDeviceTypeConfig) { if (cd.deviceType == dr["DEVICE_TYPE"].ToString()) { cd.UpdateData(dr["USE_FLAG"].ToString()); add = false; break; } } if (add) { this.LDeviceTypeConfig.Add(new CDeviceTypeConfig(dr["SYMBOL_TYPE"].ToString(), dr["DEVICE_TYPE"].ToString(), dr["DEVICE_TYPE_NAME"].ToString(), dr["USE_FLAG"].ToString())); } } } this.UpdateDeviceTypePanel(); return this.LDeviceTypeConfig.Count; } // 설비연동 데이터 클래스 class CDeviceTypeConfig { public string symbolType = ""; public string deviceType = ""; public string deviceName = ""; public bool use = false; public CDeviceTypeConfig(string symbolType, string deviceType, string deviceName, string useFlag) { this.symbolType = symbolType; this.deviceType = deviceType; this.deviceName = deviceName; this.use = (useFlag == "Y" ? true : false); } public void UpdateData(string useFlag) { this.use = (useFlag == "Y" ? true : false); } } private int indexDisableDeviceAll = 0; private int indexEnableDeviceAll = 0; // 모두 정지 버튼 private void btnDisableAll_Click(object sender, EventArgs e) { // cyim 2015.2.10 설비연동의 경우 실행이 완료되어야 다른 버튼이 눌려진다 if (ProcessEnableStatus == true || mdi.CommDaemon_ComStatus == false) return; ProcessEnableStatus = true; this.btnEnableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체연동_139_58_black; this.btnDisableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체정지_139_58_black; try { if (this.lock_cmd == false) { this.lock_cmd = true; this.Cursor = Cursors.WaitCursor; timer_check.Enabled = true; progress_dot = -2; progress_end = false; timer_progress.Enabled = true; // cyim 2016.12.09 : IFC3300에서는 예비전원버튼 -> 설비전체연동조작버튼 if (mdi.ReceiverModel == "IFC3300") { CmdInfo cmd = new CmdInfo(prt_cmd_define.read_command_status, mdi.myReceiverID, 1, 0, 0, null); cmd.CommandType = "ED"; cmd.ApplyRange = "A"; //차단레벨(회로타입차단용) A-All,C-Comm,B-Board,L-Loop,R-중계기,D-회로,I-입력회로,O-출력회로 cmd.Status = 0; //사용여부 0-비사용,1-사용 cmd.SubType = "B";// strDevice; cmd.CommId = 1; cmd.loopNo = 0; // cyim 2015.2.10 설비연동 모두정지 실행 mdi.CommandLog(MappingStatus.Log, string.Format("설비연동 실행 [모두정지]")); dCommandResponse d = new dCommandResponse(DisableDeviceAll);//명령 생성 cmd.dEvent = d; this.mdi.ui.runCommand(cmd); } else { this.DisableDeviceAll(null); } } else { // cyim 2015.2.10 설비연동의 경우 실행이 완료되어야 다른 버튼이 눌려진다 ProcessEnableStatus = false; this.btnEnableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체연동_139_58; this.btnDisableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체정지_139_58; } } catch (Exception ex) { this.Cursor = Cursors.Default; Util.UErrorMessage(ex, 0, 0); // cyim 2015.2.10 설비연동의 경우 실행이 완료되어야 다른 버튼이 눌려진다 this.progress_end = true; this.lock_cmd = false; ProcessEnableStatus = false; this.btnEnableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체연동_139_58; this.btnDisableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체정지_139_58; } } // 모드 정지 함수 public void DisableDeviceAll(CmdInfo resInfo) { try { this.getData(); // 갱신 마지막 if (this.indexDisableDeviceAll >= this.LDeviceTypeConfig.Count) { this.Cursor = Cursors.Default; this.timer_check.Enabled = false; this.progress_end = true; lock_cmd = false; //this.mdi.SetLikageBtnStatus(); // cyim 2015.7.7 속도개선작업 : 설비연동화면 종료할때만 최종 결과를 반영하자 (MDIParent 가 실행될때 이미 시작은 미리 되었음) this.indexDisableDeviceAll = 0; // cyim 2015.2.10 설비연동의 경우 실행이 완료되어야 다른 버튼이 눌려진다 ProcessEnableStatus = false; this.btnEnableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체연동_139_58; this.btnDisableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체정지_139_58; } else { //start if (resInfo == null) { this.indexDisableDeviceAll = 0; } // 갱신 중간 if (this.LDeviceTypeConfig.Count > this.indexDisableDeviceAll) { CDeviceTypeConfig devTypeConfig = this.LDeviceTypeConfig[this.indexDisableDeviceAll]; string strDevice = devTypeConfig.deviceType.Substring(1, 1); this.indexDisableDeviceAll++; this.DisableDevice(strDevice); } } } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } // 설비 연동 정지 함수 private void DisableDevice(string strDevice) { try { CmdInfo cmd = new CmdInfo(prt_cmd_define.read_command_status, mdi.myReceiverID, 1, 0, 0, null); cmd.CommandType = "DC"; cmd.ApplyRange = "A"; //차단레벨(회로타입차단용) A-All,C-Comm,B-Board,L-Loop,R-중계기,D-회로,I-입력회로,O-출력회로 cmd.Status = 0; //사용여부 0-비사용,1-사용 cmd.SubType = strDevice; cmd.CommId = 1; cmd.loopNo = 0; dCommandResponse d = new dCommandResponse(DisableDeviceAll);//명령 생성 cmd.dEvent = d; this.mdi.ui.runCommand(cmd); } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } // 모두 연동 버튼 private void btnEnableAll_Click(object sender, EventArgs e) { // cyim 2015.2.10 설비연동의 경우 실행이 완료되어야 다른 버튼이 눌려진다 if (ProcessEnableStatus == true || mdi.CommDaemon_ComStatus == false) return; ProcessEnableStatus = true; this.btnEnableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체연동_139_58_black; this.btnDisableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체정지_139_58_black; try { if (this.lock_cmd == false) { this.lock_cmd = true; this.Cursor = Cursors.WaitCursor; timer_check.Enabled = true; progress_dot = -2; progress_end = false; timer_progress.Enabled = true; // cyim 2016.12.09 : IFC3300에서는 예비전원버튼 -> 설비전체연동조작버튼 if (mdi.ReceiverModel == "IFC3300") { CmdInfo cmd = new CmdInfo(prt_cmd_define.read_command_status, mdi.myReceiverID, 1, 0, 0, null); cmd.CommandType = "ED"; cmd.ApplyRange = "A"; //차단레벨(회로타입차단용) A-All,C-Comm,B-Board,L-Loop,R-중계기,D-회로,I-입력회로,O-출력회로 cmd.Status = 1; //사용여부 0-비사용,1-사용 cmd.SubType = "B";//strDevice; cmd.CommId = 1; cmd.loopNo = 0; // cyim 2015.2.10 설비연동 모두연동 실행 mdi.CommandLog(MappingStatus.Log, string.Format("설비연동 실행 [모두연동]")); dCommandResponse d = new dCommandResponse(EnableDeviceAll);//명령 생성 EnableDeviceAll_BigReceiver cmd.dEvent = d; this.mdi.ui.runCommand(cmd); } else { this.EnableDeviceAll(null); } } else { // cyim 2015.2.10 설비연동의 경우 실행이 완료되어야 다른 버튼이 눌려진다 ProcessEnableStatus = false; this.btnEnableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체연동_139_58; this.btnDisableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체정지_139_58; } } catch (Exception ex) { this.Cursor = Cursors.Default; Util.UErrorMessage(ex, 0, 0); // cyim 2015.2.10 설비연동의 경우 실행이 완료되어야 다른 버튼이 눌려진다 this.progress_end = true; this.lock_cmd = false; ProcessEnableStatus = false; this.btnEnableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체연동_139_58; this.btnDisableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체정지_139_58; } //Util.UDebugMessage("-btnEnableAll_Click", 0, 0); } // 모두 설비 연동 함수 public void EnableDeviceAll(CmdInfo resInfo) { try { this.getData(); // 갱신 마지막 if (this.indexEnableDeviceAll >= this.LDeviceTypeConfig.Count) { this.Cursor = Cursors.Default; this.timer_check.Enabled = false; this.progress_end = true; this.lock_cmd = false; //this.mdi.SetLikageBtnStatus(); // cyim 2015.7.7 속도개선작업 : 설비연동화면 종료할때만 최종 결과를 반영하자 (MDIParent 가 실행될때 이미 시작은 미리 되었음) this.indexEnableDeviceAll = 0; // cyim 2015.2.10 설비연동의 경우 실행이 완료되어야 다른 버튼이 눌려진다 ProcessEnableStatus = false; this.btnEnableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체연동_139_58; this.btnDisableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체정지_139_58; } else { //start if (resInfo == null) { this.indexEnableDeviceAll = 0; } // 갱신 중간 if (this.LDeviceTypeConfig.Count > this.indexEnableDeviceAll) { CDeviceTypeConfig devTypeConfig = this.LDeviceTypeConfig[this.indexEnableDeviceAll]; string strDevice = devTypeConfig.deviceType.Substring(1, 1); this.indexEnableDeviceAll++; this.EnableDevice(strDevice); } } } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } // 설비 연동 설정 함수 private void EnableDevice(string strDevice) { try { CmdInfo cmd = new CmdInfo(prt_cmd_define.read_command_status, mdi.myReceiverID, 1, 0, 0, null); cmd.CommandType = "DC"; cmd.ApplyRange = "A"; //차단레벨(회로타입차단용) A-All,C-Comm,B-Board,L-Loop,R-중계기,D-회로,I-입력회로,O-출력회로 cmd.Status = 1; //사용여부 0-비사용,1-사용 cmd.SubType = strDevice; cmd.CommId = 1; cmd.loopNo = 0; dCommandResponse d = new dCommandResponse(EnableDeviceAll);//명령 생성 cmd.dEvent = d; this.mdi.ui.runCommand(cmd); } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } // cyim 2016.12.09 : IFC3300에서는 예비전원버튼 -> 설비전체연동조작버튼 public void DisableDeviceAll_BigReceiver(CmdInfo resInfo) { this.getData(); // 갱신 마지막 if (this.indexDisableDeviceAll >= this.LDeviceTypeConfig.Count) { this.Cursor = Cursors.Default; this.timer_check.Enabled = false; this.progress_end = true; lock_cmd = false; //this.mdi.SetLikageBtnStatus(); // cyim 2015.7.7 속도개선작업 : 설비연동화면 종료할때만 최종 결과를 반영하자 (MDIParent 가 실행될때 이미 시작은 미리 되었음) this.indexDisableDeviceAll = 0; // cyim 2015.2.10 설비연동 모두정지 실행 mdi.CommandLog(MappingStatus.Log, string.Format("설비연동 실행 [모두정지]")); // cyim 2015.2.10 설비연동의 경우 실행이 완료되어야 다른 버튼이 눌려진다 ProcessEnableStatus = false; this.btnEnableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체연동_139_58; this.btnDisableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체정지_139_58; } } // cyim 2016.12.09 : IFC3300에서는 예비전원버튼 -> 설비전체연동조작버튼 public void EnableDeviceAll_BigReceiver(CmdInfo resInfo) { this.getData(); this.Cursor = Cursors.Default; this.timer_check.Enabled = false; this.progress_end = true; this.lock_cmd = false; //this.mdi.SetLikageBtnStatus(); // cyim 2015.7.7 속도개선작업 : 설비연동화면 종료할때만 최종 결과를 반영하자 (MDIParent 가 실행될때 이미 시작은 미리 되었음) this.indexEnableDeviceAll = 0; // cyim 2015.2.10 설비연동 모두연동 실행 mdi.CommandLog(MappingStatus.Log, string.Format("설비연동 실행 [모두연동]")); // cyim 2015.2.10 설비연동의 경우 실행이 완료되어야 다른 버튼이 눌려진다 ProcessEnableStatus = false; this.btnEnableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체연동_139_58; this.btnDisableAll.BackgroundImage = (Image)Properties.Resources.버튼_전체정지_139_58; } } public class controlWriteDevType { private string dev_type; //연동타입 private bool use_flag; //사용여부 private bool change_flag; //변경여부 public controlWriteDevType(string dev_type) { try { this.dev_type = dev_type; this.use_flag = false; this.change_flag = false; } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } public string Dev_type { get { return this.dev_type; } } public bool Use_flag { get { return this.use_flag; } set { this.use_flag = value; } } public void ChangeFlagReset() { try { this.change_flag = false; } catch (Exception ex) { Util.UErrorMessage(ex, 0, 0); } } public Boolean ChangeFlag { get { return this.change_flag; } set { bool use_flag = value; //차단설정데이터 변경여부를 저장한다. if (this.use_flag != use_flag) this.change_flag = true; this.use_flag = value; } } } }