/// <summary> /// 继电器设备状态写入下位机事件处理函数 - 发生错误则弹出对话框 /// </summary> /// <param name="err"></param> void RyDev_StatusUpdateEvent(Device.RelayProtocol.Err_r err) { // 继电器状态设置完成,刷新界面 // 不论是否发生错误,RelayDevice.ryStatus[] 中始终存放继电器的正确状态,故全部更新 this.BeginInvoke(new EventHandler(delegate { #if false for (int i = 0; i < this.checkBox_ryDevices.Length; i++) { this.checkBox_ryDevices[i].Checked = this.deviceAll.ryDevice.ryStatus[i]; } #endif // 从下位机更新继电器状态 foreach (Device.RelayProtocol.Cmd_r cmd in Enum.GetValues(typeof(Device.RelayProtocol.Cmd_r))) { this.checkBox_ryDevice[cmd].Checked = this.deviceAll.ryDevice.ryStatus[(int)cmd]; } })); // 继电器状态设置成功 if (err == Device.RelayProtocol.Err_r.NoError) { Debug.WriteLine("继电器状态写入成功!"); //Utils.Logger.Sys("成功向下位机写入了继电器状态!"); } // 继电器状态设置失败 else { Debug.WriteLine("继电器状态写入失败! " + err.ToString()); Utils.Logger.Sys("向下位机写入了继电器状态失败! ErrorCode: " + err.ToString()); this.BeginInvoke(new EventHandler(delegate { MessageBox.Show("继电器状态写入失败!\rerr: " + err.ToString()); })); } }
private void BackgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { // 0 - 首先打开总电源 Device.RelayProtocol.Err_r err0 = deviceAll.ryDevice.SelfCheckOneByOne(Device.RelayProtocol.Cmd_r.Elect, true); if (err0 == Device.RelayProtocol.Err_r.NoError) { // 自检成功 this.BeginInvoke(new EventHandler(delegate { Graphics mGhp = Graphics.FromImage(mBmpGreen); mGhp.Clear(Color.Green); this.picBox[(int)Device.RelayProtocol.Cmd_r.Elect].Image = mBmpGreen; })); } else { // 继电器设备自检失败 MessageBox.Show("继电器设备自检失败!"); goto ExitErr; } //Thread.Sleep(1500); // 1 - 主槽控温自检 this.BeginInvoke(new EventHandler(delegate { label2.Text = "控温设备自检中..."; })); if (deviceAll.tpDeviceM.SelfCheck() != Device.TempProtocol.Err_t.NoError) { // 主槽控温设备自检失败 MessageBox.Show("主槽控温设备自检失败!"); goto ExitErr; } if (deviceAll.tpDeviceS.SelfCheck() != Device.TempProtocol.Err_t.NoError) { // 辅槽控温设备自检失败 MessageBox.Show("辅槽控温设备自检失败!"); goto ExitErr; } this.BeginInvoke(new EventHandler(delegate { label2.Text = "温控设备自检成功!"; })); Thread.Sleep(2000); // 3 - 继电器自检 this.BeginInvoke(new EventHandler(delegate { label2.Text = "继电器设备自检中..."; })); for (int cmd = 1; cmd < 9; cmd++) { Device.RelayProtocol.Err_r err = deviceAll.ryDevice.SelfCheckOneByOne((Device.RelayProtocol.Cmd_r)cmd, true); if (err == Device.RelayProtocol.Err_r.NoError) { // 自检成功 this.BeginInvoke(new EventHandler(delegate { Graphics mGhp = Graphics.FromImage(mBmpGreen); mGhp.Clear(Color.Green); this.picBox[(int)cmd].Image = mBmpGreen; })); } else { // 继电器设备自检失败 MessageBox.Show("继电器设备自检失败!"); goto ExitErr; } Thread.Sleep(1500); } for (int cmd = 8; cmd > 0; cmd--) { Device.RelayProtocol.Err_r err = deviceAll.ryDevice.SelfCheckOneByOne((Device.RelayProtocol.Cmd_r)cmd, false); if (err == Device.RelayProtocol.Err_r.NoError) { // 自检成功 this.BeginInvoke(new EventHandler(delegate { Graphics mGhp = Graphics.FromImage(mBmpRed); mGhp.Clear(Color.Red); this.picBox[(int)cmd].Image = mBmpRed; })); } else { // 继电器设备自检失败 MessageBox.Show("继电器设备自检失败!"); goto ExitErr; } Thread.Sleep(1500); } this.BeginInvoke(new EventHandler(delegate { label2.Text = "继电器设备自检成功!"; })); Thread.Sleep(1500); // 4 - 传感器设备自检 this.BeginInvoke(new EventHandler(delegate { label2.Text = "传感器设备自检中..."; })); if (deviceAll.srDevice.SelfCheck() != true) { // 传感器设备自检失败 MessageBox.Show("传感器设备自检失败!"); goto ExitErr; } Thread.Sleep(1500); this.BeginInvoke(new EventHandler(delegate { label2.Text = "传感器设备自检成功!"; })); Thread.Sleep(1500); // 5 - 关闭总电源 err0 = deviceAll.ryDevice.SelfCheckOneByOne(Device.RelayProtocol.Cmd_r.Elect, false); if (err0 == Device.RelayProtocol.Err_r.NoError) { // 自检成功 this.BeginInvoke(new EventHandler(delegate { Graphics mGhp = Graphics.FromImage(mBmpRed); mGhp.Clear(Color.Red); this.picBox[(int)Device.RelayProtocol.Cmd_r.Elect].Image = mBmpRed; })); } else { // 继电器设备自检失败 MessageBox.Show("继电器设备自检失败!"); goto ExitErr; } this.BeginInvoke(new EventHandler(delegate { label2.Text = "设备自检成功!"; })); Thread.Sleep(3500); // 6 - 自检成功,返回 this.BeginInvoke(new EventHandler(delegate { this.DialogResult = DialogResult.OK; })); return; // 7 - 自检失败,返回 ExitErr: this.BeginInvoke(new EventHandler(delegate { this.Close(); })); return; }
private void BackgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { // 0 - 禁用控件 // 禁用一些控件 SelfChkDisableControl(false); // 1 - 打开总电源 Device.RelayProtocol.Err_r err1 = deviceAll.ryDevice.SelfCheckOneByOne(Device.RelayProtocol.Cmd_r.Elect, true); if (err1 == Device.RelayProtocol.Err_r.NoError) { // 自检成功 this.BeginInvoke(new EventHandler(delegate { this.checkBox_ryDevice[Device.RelayProtocol.Cmd_r.Elect].Checked = true; })); } else { Utils.Logger.Sys("继电器设备自检失败 - 总电源打开失败"); MessageBox.Show("总电源开关打开失败!"); this.BeginInvoke(new EventHandler(delegate { this.Close(); })); return; } this.BeginInvoke(new EventHandler(delegate { this.label_controlState.Text = "设备自检中..."; this.label_fluc.Text = "主槽温控设备自检中..."; })); System.Threading.Thread.Sleep(1500); // 2 - 主槽控温设备自检 if (this.deviceAll.tpDeviceM.SelfCheck() != Device.TempProtocol.Err_t.NoError) { // 主槽控温设备自检失败 Utils.Logger.Sys("主槽控温设备自检失败"); MessageBox.Show("主槽温控设备自检失败!"); this.BeginInvoke(new EventHandler(delegate { this.Close(); })); return; } this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "主槽温控设备自检成功!"; })); Debug.WriteLine("tpDeviceM.SelfCheck OK"); System.Threading.Thread.Sleep(2000); // 3 - 辅槽控温设备自检 this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "辅槽温控设备自检中..."; })); if (this.deviceAll.tpDeviceS.SelfCheck() != Device.TempProtocol.Err_t.NoError) { Utils.Logger.Sys("辅槽温控设备自检失败"); MessageBox.Show("辅槽温控设备自检失败!"); this.BeginInvoke(new EventHandler(delegate { this.Close(); })); return; } this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "辅槽温控设备自检成功!"; })); Debug.WriteLine("tpDeviceS.SelfCheck OK"); System.Threading.Thread.Sleep(2000); // 4.1 - 继电器设备自检 - 打开继电器 this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "继电器设备自检中..."; })); for (int cmd = 1; cmd < 9; cmd++) { Device.RelayProtocol.Err_r err = deviceAll.ryDevice.SelfCheckOneByOne((Device.RelayProtocol.Cmd_r)cmd, true); if (err == Device.RelayProtocol.Err_r.NoError) { // 自检成功 this.BeginInvoke(new EventHandler(delegate { this.checkBox_ryDevice[(Device.RelayProtocol.Cmd_r)cmd].Checked = true; })); } else { // 继电器设备自检失败 Utils.Logger.Sys("继电器设备自检失败 - 打开失败"); MessageBox.Show("继电器设备自检失败 - 打开失败!"); this.BeginInvoke(new EventHandler(delegate { this.Close(); })); return; } System.Threading.Thread.Sleep(1500); } Debug.WriteLine("ryDevice.SelfCheckOneByOne true OK"); // 4.2 - 继电器设备自检 - 关闭继电器 for (int cmd = 8; cmd >= 1; cmd--) { Device.RelayProtocol.Err_r err = deviceAll.ryDevice.SelfCheckOneByOne((Device.RelayProtocol.Cmd_r)cmd, false); if (err == Device.RelayProtocol.Err_r.NoError) { // 自检成功 this.BeginInvoke(new EventHandler(delegate { this.checkBox_ryDevice[(Device.RelayProtocol.Cmd_r)cmd].Checked = false; })); } else { // 继电器设备自检失败 Utils.Logger.Sys("继电器设备自检失败! - 关闭失败"); MessageBox.Show("继电器设备自检失败! - 关闭失败"); this.BeginInvoke(new EventHandler(delegate { this.Close(); })); return; } System.Threading.Thread.Sleep(1500); } this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "继电器设备自检成功!"; })); Debug.WriteLine("ryDevice.SelfCheckOneByOne false OK"); System.Threading.Thread.Sleep(1000); #if true // 5 - 测温电桥自检 this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "测温电桥自检中..."; })); if (deviceAll.tpBridge.SelfCheck() != true) { // 传感器设备自检失败 Utils.Logger.Sys("测温电桥自检失败"); DialogResult dt = MessageBox.Show("测温电桥自检失败!是否跳过该错误,点击 ‘是’ 跳过该错误,点击 ‘否’ 关闭程序", "错误提示对话框", MessageBoxButtons.YesNo); if (dt == DialogResult.No) { this.BeginInvoke(new EventHandler(delegate { // 关闭继电器 foreach (var cmd in Enum.GetValues(typeof(Device.RelayProtocol.Cmd_r))) { this.deviceAll.ryDevice.ryStatusToSet[(int)cmd] = false; } Utils.Logger.Sys("关闭所有继电器!"); try { deviceAll.ryDevice.StatusUpdateToDeviceEvent -= RyDev_StatusUpdateEvent; this.deviceAll.ryDevice.UpdateStatusToDevice(); } catch (Exception ex) {} // 关闭系统 Utils.Logger.Sys("测温电桥自检错误,关闭系统软件!"); this.Close(); })); return; } else { this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "测温电桥自检失败,跳过该错误!"; })); } } else { this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "测温电桥自检成功!"; })); } Debug.WriteLine("tpBridge.SelfCheck ok"); System.Threading.Thread.Sleep(2000); #endif // 6 - 传感器设备自检 this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "传感器设备自检中..."; })); if (deviceAll.srDevice.SelfCheck() != true) { // 传感器设备自检失败 Utils.Logger.Sys("传感器设备自检失败"); MessageBox.Show("传感器设备自检失败!"); this.BeginInvoke(new EventHandler(delegate { this.Close(); })); return; } this.BeginInvoke(new EventHandler(delegate { this.label_controlState.Text = "设备自检成功!"; this.label_fluc.Text = "传感器设备自检成功!"; })); Debug.WriteLine("srDevice.SelfCheck ok"); System.Threading.Thread.Sleep(2000); // 自检成功 Utils.Logger.Sys("设备自检成功,系统开始运行..."); Utils.Logger.Op("设备自检成功,系统开始运行..."); //Utils.Logger.TempData("系统开始运行..."); System.Threading.Thread.Sleep(2000); // 初始化主界面中的显示相 InitMainFormShow(); Debug.WriteLine("InitMainFormShow() ok"); // 注册事件处理函数 RegisterEventHandler(); Debug.WriteLine("RegisterEventHandler() ok"); // 主槽控温表 / 辅槽控温表 开始读取参数 // wghou 20180105 // 暂时先不开始读取温度,等待自检 deviceAll.tpTemperatureUpdateTimer.Start(); Debug.WriteLine("deviceAll.tpTemperatureUpdateTimer.Start() ok"); // 启用主界面所有按键 SelfChkDisableControl(true); this.BeginInvoke(new EventHandler(delegate { foreach (Device.RelayProtocol.Cmd_r cmd in Enum.GetValues(typeof(Device.RelayProtocol.Cmd_r))) { checkBox_ryDevice[cmd].Enabled = false; } // 设置主电源的禁用状态 this.checkBox_elect.Enabled = this.deviceAll.ryElecEnable; })); return; }
private void BackgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { Debug.WriteLine("BackgroundWorker1_DoWork is running..."); // 禁用一些控件 SelfChkDisableControl(false); Device.RelayProtocol.Err_r err1 = deviceAll.ryDevice.SelfCheckOneByOne(Device.RelayProtocol.Cmd_r.Elect, true); if (err1 == Device.RelayProtocol.Err_r.NoError) { // 自检成功 this.BeginInvoke(new EventHandler(delegate { this.checkBox_ryDevice[Device.RelayProtocol.Cmd_r.Elect].Checked = true; })); } else { MessageBox.Show("总电源开关打开失败!"); this.BeginInvoke(new EventHandler(delegate { this.Close(); })); return; } this.BeginInvoke(new EventHandler(delegate { this.label_controlState.Text = "设备自检中..."; this.label_fluc.Text = "主槽温控设备自检中..."; })); // 开始自检 Debug.WriteLine("Start self check."); // 主槽控温设备自检 if (this.deviceAll.tpDeviceM.SelfCheck() != Device.TempProtocol.Err_t.NoError) { MessageBox.Show("主槽温控设备自检失败!"); this.BeginInvoke(new EventHandler(delegate { this.Close(); })); return; } this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "主槽温控设备自检成功!"; })); Debug.WriteLine("tpDeviceM.SelfCheck OK"); System.Threading.Thread.Sleep(2000); // 辅槽控温设备自检 this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "辅槽温控设备自检中..."; })); if (this.deviceAll.tpDeviceS.SelfCheck() != Device.TempProtocol.Err_t.NoError) { MessageBox.Show("辅槽温控设备自检失败!"); this.BeginInvoke(new EventHandler(delegate { this.Close(); })); return; } this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "辅槽温控设备自检成功!"; })); Debug.WriteLine("tpDeviceS.SelfCheck OK"); System.Threading.Thread.Sleep(2000); // 继电器设备自检 - 打开继电器 this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "继电器设备自检中..."; })); for (int cmd = 1; cmd < 9; cmd++) { Device.RelayProtocol.Err_r err = deviceAll.ryDevice.SelfCheckOneByOne((Device.RelayProtocol.Cmd_r)cmd, true); if (err == Device.RelayProtocol.Err_r.NoError) { // 自检成功 this.BeginInvoke(new EventHandler(delegate { this.checkBox_ryDevice[(Device.RelayProtocol.Cmd_r)cmd].Checked = true; })); } else { // 继电器设备自检失败 MessageBox.Show("继电器设备自检失败!"); this.BeginInvoke(new EventHandler(delegate { this.Close(); })); return; } System.Threading.Thread.Sleep(1000); } Debug.WriteLine("ryDevice.SelfCheckOneByOne true OK"); // 继电器设备自检 - 关闭继电器 for (int cmd = 8; cmd >= 1; cmd--) { Device.RelayProtocol.Err_r err = deviceAll.ryDevice.SelfCheckOneByOne((Device.RelayProtocol.Cmd_r)cmd, false); if (err == Device.RelayProtocol.Err_r.NoError) { // 自检成功 this.BeginInvoke(new EventHandler(delegate { this.checkBox_ryDevice[(Device.RelayProtocol.Cmd_r)cmd].Checked = false; })); } else { // 继电器设备自检失败 MessageBox.Show("继电器设备自检失败!"); this.BeginInvoke(new EventHandler(delegate { this.Close(); })); return; } System.Threading.Thread.Sleep(1000); } this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "继电器设备自检成功!"; })); Debug.WriteLine("ryDevice.SelfCheckOneByOne false OK"); System.Threading.Thread.Sleep(2000); // 传感器设备自检 this.BeginInvoke(new EventHandler(delegate { this.label_fluc.Text = "传感器设备自检中..."; })); if (deviceAll.srDevice.SelfCheck() != true) { // 传感器设备自检失败 MessageBox.Show("传感器设备自检失败!"); this.BeginInvoke(new EventHandler(delegate { this.Close(); })); return; } this.BeginInvoke(new EventHandler(delegate { this.label_controlState.Text = "设备自检成功!"; this.label_fluc.Text = "传感器设备自检成功!"; })); Debug.WriteLine("srDevice.SelfCheck ok"); System.Threading.Thread.Sleep(2000); err1 = deviceAll.ryDevice.SelfCheckOneByOne(Device.RelayProtocol.Cmd_r.Elect, false); if (err1 == Device.RelayProtocol.Err_r.NoError) { // 自检成功 this.BeginInvoke(new EventHandler(delegate { this.checkBox_ryDevice[Device.RelayProtocol.Cmd_r.Elect].Checked = false; })); } else { MessageBox.Show("总电源开关关闭失败!"); this.BeginInvoke(new EventHandler(delegate { this.Close(); })); return; } // 自检成功 Utils.Logger.Sys("设备自检成功,系统开始运行..."); Utils.Logger.Op("设备自检成功,系统开始运行..."); //Utils.Logger.TempData("系统开始运行..."); System.Threading.Thread.Sleep(2000); // 初始化主界面中的显示相 InitMainFormShow(); Debug.WriteLine("InitMainFormShow() ok"); // 注册事件处理函数 RegisterEventHandler(); Debug.WriteLine("RegisterEventHandler() ok"); // 主槽控温表 / 辅槽控温表 开始读取参数 // wghou 20180105 // 暂时先不开始读取温度,等待自检 deviceAll.tpTemperatureUpdateTimer.Start(); Debug.WriteLine("deviceAll.tpTemperatureUpdateTimer.Start() ok"); // 启用主界面所有按键 SelfChkDisableControl(true); this.BeginInvoke(new EventHandler(delegate { foreach (Device.RelayProtocol.Cmd_r cmd in Enum.GetValues(typeof(Device.RelayProtocol.Cmd_r))) { checkBox_ryDevice[cmd].Enabled = false; } // 设置主电源的禁用状态 this.checkBox_elect.Enabled = this.deviceAll.ryElecEnable; })); return; }