using BaseLibRWFile; using HRT_Measure.Windows; using Sunny.UI; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace HRT_Measure { public partial class FrmMain :Sunny.UI.UIForm { public FrmMain() { InitializeComponent(); } public static FrmLogin frmLogin = new FrmLogin(); PLCResultHelp resultHelp = new PLCResultHelp(); public FrmPLC_M01M02 frmPLC_M01M02;//= new FrmPLC_M01M02(); public FrmPLC_M03 frmPLC_M03;//= new FrmPLC_M03(); public FrmPLC_M04M05 frmPLC_M04M05;//= new FrmPLC_M04M05(); public FrmPressure frmPressure;//= new FrmPressure(); public FrmParaWrite frmParaWrite;//= new FrmParaWrite(); public FrmFirstWindow frmFirstWindow;//= new FrmFirstWindow(); public FrmWeight frmWeight; private FrmProjectConfig frmProjectConfig;//= null; private FrmCommunication frmCommunication;//= null; private void FrmMain_Load(object sender, EventArgs e) { ProgramHelp.Instance.LoadProjectFiles(); //ToolStripMenuItem_PartNo_Name.Text = "";// ProgramHelp.Instance.ProConfig.当前料号; //启动ToolStripMenuItem_Click(null, null); timer1.Enabled = true; //DateTime dateTime = DateTime.Now; //DateTime dateFinal = new DateTime(2025, 2, 28); //int resultTime = DateTime.Compare(dateTime, dateFinal); //if(resultTime > 0) //{ // FrmMain_FormClosing(null,null); //} PLCCylinder.GetInitIO();//初始化界面IO PLCCylinder.GetAlm(); PLCCylinder.GetM01M02Add(); PLCCylinder.GetM03Add(); PLCCylinder.GetM04M05Add(); PLCAxisPos.GetM01M02PosAdd(); //PLCAxisPos.GetM03PosAdd(); PLCAxisPos.GetM04M05PosAdd(); PLCAxis.GetM01M02AxisAdd(); PLCAxis.GetM03AxisAdd(); PLCAxis.GetM04M05AxisAdd(); ClsWeightHelp.GetWeightAdd(); ReadPLCHelp.LoadPLCAdd(); frmPLC_M01M02 = new FrmPLC_M01M02(); frmPLC_M03 = new FrmPLC_M03(); frmPLC_M04M05 = new FrmPLC_M04M05(); frmPressure = new FrmPressure(); frmFirstWindow = new FrmFirstWindow(); frmParaWrite = new FrmParaWrite(); frmProjectConfig = new FrmProjectConfig(); frmCommunication = new FrmCommunication(); frmWeight = new FrmWeight(); ControlLayout(); ClsResultData.LoadResultTitle(); ProgramHelp.Instance.frmMain = this; //uchmiM01M02.timer1.Enabled = true; //uchmiM03.timer1.Enabled = true; //uchmiM04M05.timer1.Enabled = true; //uchmiM01M02.thMonitor.Start(); uchmiM03.thMonitor.Start(); uchmiM04M05.thMonitor.Start(); } private void ControlLayout() { this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width , Screen.PrimaryScreen.WorkingArea.Height);//* 95 / 100 this.Size = this.MaximumSize; this.WindowState = FormWindowState.Maximized; panelMain.Controls.Clear(); frmPLC_M01M02.TopLevel = false; frmPLC_M01M02.Dock = DockStyle.Fill; panelMain.Controls.Add(frmPLC_M01M02); frmPLC_M01M02.Show(); //Refresh(); panelMain.Controls.Clear(); frmPLC_M03.TopLevel = false; frmPLC_M03.Dock = DockStyle.Fill; panelMain.Controls.Add(frmPLC_M03); frmPLC_M03.Show(); //Refresh(); panelMain.Controls.Clear(); frmPLC_M04M05.TopLevel = false; frmPLC_M04M05.Dock = DockStyle.Fill; panelMain.Controls.Add(frmPLC_M04M05); frmPLC_M04M05.Show(); //Refresh(); panelMain.Controls.Clear(); frmPressure.TopLevel = false; frmPressure.Dock = DockStyle.Fill; panelMain.Controls.Add(frmPressure); frmPressure.Show(); //Refresh(); panelMain.Controls.Clear(); frmWeight.TopLevel = false; frmWeight.Dock = DockStyle.Fill; panelMain.Controls.Add(frmWeight); frmWeight.Show(); //Refresh(); panelMain.Controls.Clear(); frmParaWrite.TopLevel = false; frmParaWrite.Dock = DockStyle.Fill; panelMain.Controls.Add(frmParaWrite); frmParaWrite.Show(); //Refresh(); panelMain.Controls.Clear(); frmCommunication.TopLevel = false; frmCommunication.Dock = DockStyle.Fill; panelMain.Controls.Add(frmCommunication); frmCommunication.Show(); //Refresh(); panelMain.Controls.Clear(); frmProjectConfig.TopLevel = false; frmProjectConfig.Dock = DockStyle.Fill; panelMain.Controls.Add(frmProjectConfig); frmProjectConfig.Show(); //Refresh(); panelMain.Controls.Clear(); frmFirstWindow.TopLevel = false; frmFirstWindow.Dock = DockStyle.Fill; panelMain.Controls.Add(frmFirstWindow); frmFirstWindow.Show(); ReadPLCHelp.EnumWindowDisplay = WindowDisplay.主界面; btnHome.FillColor = Color.Green; //Refresh(); //splitContainerMain.SplitterDistance = 367; //splitContainerMain.SplitterDistance = this.Size.Width * 4/ 5; //splitContainerResult.SplitterDistance = splitContainerMain.Height / 2; } #region Button private void 登录ToolStripMenuItem_Click(object sender, EventArgs e) { frmLogin.ShowDialog(); } private void 登出ToolStripMenuItem_Click(object sender, EventArgs e) { GlobalPara.isOperatorSelect = false; } private void 启动ToolStripMenuItem_Click(object sender, EventArgs e) { //if (GlobalPara.CurrentMachineState != MachineState.AutoRunning) //{ // 启动ToolStripMenuItem.Image = HRT_Measure.Properties.Resources.Stop_active_main; // GlobalPara.CurrentMachineState = MachineState.AutoRunning; // ProgramHelp.Instance.SaveMsg("System", $"运行中", true); //} //else //{ // 启动ToolStripMenuItem.Image = HRT_Measure.Properties.Resources.Start_active_main; // GlobalPara.CurrentMachineState = MachineState.Pause; ; // ProgramHelp.Instance.SaveMsg("System", $"暂停中", true); //} } #endregion private void FrmMain_FormClosing(object sender, FormClosingEventArgs e) { try { timer1.Enabled = false; try { ReadPLCHelp.thReadPLCM01M02.Abort(); } catch { } try { ReadPLCHelp.thReadPLCM03.Abort(); } catch { } try { ReadPLCHelp.thReadPLCM04M05.Abort(); } catch { } ProgramHelp.Instance.commPLC_M01M02.Close(); ProgramHelp.Instance.commPLC_M03.Close(); ProgramHelp.Instance.commPLC_M04M05.Close(); ProgramHelp.Instance.comm压机.Close(); //frmPLC_M01M02.Dispose(); //frmPLC_M03.Dispose(); //frmPLC_M04M05.Dispose(); Environment.Exit(0); Application.Exit(); this.Close(); } catch (Exception ) { //MessageBox.Show(ex.ToString()); } } private void timer1_Tick(object sender, EventArgs e) { lblCurrentNo.Text = $"当前配方号:{ClsWeightHelp.s当前配方号}"; //try //{ // //M01 // txt药A暂存当前盒数.Text = resultHelp.M01_药A暂存当前盒数.ToString(); // txt药B暂存当前盒数.Text = resultHelp.M01_药B暂存当前盒数.ToString(); // txt抛盖暂存槽当前数量.Text = resultHelp.M01_抛盖暂存槽当前数量.ToString(); // txt空桶暂存槽当前数量.Text = resultHelp.M01_空桶暂存槽当前数量.ToString(); // btn清料.BackColor = PLCResultHelp.isM01_清料 ? Color.Green : Color.Gray; // btn称重开始.BackColor = PLCResultHelp.isM01_称重开始 ? Color.Green : Color.Gray; // //M02 // txt药A称重配比重量.Text = resultHelp.M02_药A称重配比重量.ToString(); // txtA料仓1当前重量.Text = resultHelp.M02_A料仓1当前重量.ToString(); // txtA料仓2当前重量.Text = resultHelp.M02_A料仓2当前重量.ToString(); // txtA料仓3当前重量.Text = resultHelp.M02_A料仓3当前重量.ToString(); // txtA料仓4当前重量.Text = resultHelp.M02_A料仓4当前重量.ToString(); // txtA料仓5当前重量.Text = resultHelp.M02_A料仓5当前重量.ToString(); // txt药B称重配比重量.Text = resultHelp.M02_药B称重配比重量.ToString(); // txtB料仓1当前重量.Text = resultHelp.M02_B料仓1当前重量.ToString(); // txtB料仓2当前重量.Text = resultHelp.M02_B料仓2当前重量.ToString(); // txtB料仓3当前重量.Text = resultHelp.M02_B料仓3当前重量.ToString(); // txtB料仓4当前重量.Text = resultHelp.M02_B料仓4当前重量.ToString(); // txtB料仓5当前重量.Text = resultHelp.M02_B料仓5当前重量.ToString(); // //M04 // btnAllowLayOff.BackColor = PLCResultHelp.isM04_允许下料 ? Color.Green : Color.Gray; // txtCurrentHeight.Text = PLCResultHelp.fM04_当前检测高度.ToString("f3"); // txtCurrentWeight.Text = PLCResultHelp.iM04_当前重量.ToString("f2"); // //M05 // txt箱数.Text = resultHelp.M05_箱数.ToString(); // //压机 // foreach (var item in grbPressure.Controls) // { // if (item is UITextBox) // { // string name = ((UITextBox)item).Name; // name = name.Remove(0, 3); // ((UITextBox)item).Text = ReadPLCHelp.dictPressure[name].value; // } // } //} //catch (Exception) //{ //} } #region 料号切换 public void ChangePartNumber(string PartNoName) { this.Invoke(new Action(() => { try { //ToolStripMenuItem_PartNo_Name.Text = PartNoName; ProgramHelp.Instance.SavePorjectConfig(); try { //开启新的实例 System.Diagnostics.Process.Start(Application.ExecutablePath); //关闭当前实例 Process.GetCurrentProcess().Kill(); } catch (Exception) { } ProgramHelp.Instance.SaveMsg("System", $"料号切换成功!", true); MessageBox.Show("料号切换成功!"); } catch (Exception ex) { ProgramHelp.Instance.SaveMsg("System", $"料号切换失败:{ex.Message}", true); MessageBox.Show("料号切换失败!"); } })); } #region Msg显示 public delegate void ListBoxAddInfo(string info); //private void AddRunMsg(string info) //{ // if (listbMsg.InvokeRequired) // { // ListBoxAddInfo lb = new ListBoxAddInfo(AddRunMsg); // listbMsg.Invoke(lb, new string[] { info }); // } // else // { // listbMsg.Items.Add(info); // listbMsg.SelectedIndex = listbMsg.Items.Count - 1; // if (listbMsg.Items.Count > 1000) // { // listbMsg.Items.Clear(); // } // } //} //private void btnClearMsg_Click(object sender, EventArgs e) //{ // listbMsg.Items.Clear(); //} //private void btnExtend_Click(object sender, EventArgs e) //{ // if (btnExtend.Text == "<<") // { // splitContainerMain.SplitterDistance = this.Size.Width / 2; // btnExtend.Text = ">>"; // } // else // { // splitContainerMain.SplitterDistance = this.Size.Width * 4 / 5; // btnExtend.Text = "<<"; // } //} #endregion #endregion private void btnWinFrmOpen(object sender, EventArgs e) { var btn = (UISymbolButton)sender; foreach (var item in splitContainerMain.Panel2.Controls) { if(item is UISymbolButton) { ((UISymbolButton)item).FillColor = Color.Gray; } } btn.FillColor = Color.Green; switch (btn.Text) { case "主画面": panelMain.Controls.Clear(); frmFirstWindow.TopLevel = false; frmFirstWindow.Dock = DockStyle.Fill; panelMain.Controls.Add(frmFirstWindow); frmFirstWindow.Show(); ReadPLCHelp.EnumWindowDisplay = WindowDisplay.主界面; Refresh(); break; case "上料称重房": panelMain.Controls.Clear(); frmPLC_M01M02.TopLevel = false; frmPLC_M01M02.Dock = DockStyle.Fill; panelMain.Controls.Add(frmPLC_M01M02); frmPLC_M01M02.Show(); ReadPLCHelp.EnumWindowDisplay = WindowDisplay.上料称重房; Refresh(); break; case "压机房": panelMain.Controls.Clear(); frmPLC_M03.TopLevel = false; frmPLC_M03.Dock = DockStyle.Fill; panelMain.Controls.Add(frmPLC_M03); frmPLC_M03.Show(); ReadPLCHelp.EnumWindowDisplay = WindowDisplay.压机房; Refresh(); break; case "检测装箱房": panelMain.Controls.Clear(); frmPLC_M04M05.TopLevel = false; frmPLC_M04M05.Dock = DockStyle.Fill; panelMain.Controls.Add(frmPLC_M04M05); frmPLC_M04M05.Show(); ReadPLCHelp.EnumWindowDisplay = WindowDisplay.检测装箱房; Refresh(); break; case "压力机": panelMain.Controls.Clear(); frmPressure.TopLevel = false; frmPressure.Dock = DockStyle.Fill; panelMain.Controls.Add(frmPressure); frmPressure.Show(); ReadPLCHelp.EnumWindowDisplay = WindowDisplay.压力机; Refresh(); break; case "称重": panelMain.Controls.Clear(); frmWeight.TopLevel = false; frmWeight.Dock = DockStyle.Fill; panelMain.Controls.Add(frmWeight); frmWeight.Show(); ReadPLCHelp.EnumWindowDisplay = WindowDisplay.称重; Refresh(); break; case "数据监控": panelMain.Controls.Clear(); frmParaWrite.TopLevel = false; frmParaWrite.Dock = DockStyle.Fill; panelMain.Controls.Add(frmParaWrite); frmParaWrite.Show(); ReadPLCHelp.EnumWindowDisplay = WindowDisplay.数据监控; Refresh(); break; case "通讯": panelMain.Controls.Clear(); frmCommunication.TopLevel = false; frmCommunication.Dock = DockStyle.Fill; panelMain.Controls.Add(frmCommunication); frmCommunication.Show(); ReadPLCHelp.EnumWindowDisplay = WindowDisplay.通讯; Refresh(); break; case "项目配置": panelMain.Controls.Clear(); frmProjectConfig.TopLevel = false; frmProjectConfig.Dock = DockStyle.Fill; panelMain.Controls.Add(frmProjectConfig); frmProjectConfig.Show(); ReadPLCHelp.EnumWindowDisplay = WindowDisplay.项目配置; Refresh(); break; } } } }