using Rs.Motion.GugaoEcat; using Rs.Motion; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Rs.Controls; using Rs.MotionPlat.Flow; using Rs.Framework; using Rs.Camera; using System.Threading; using Rs.MotionPlat.Commom; using static System.Runtime.CompilerServices.RuntimeHelpers; using Rs.Motion.GugaoPulse; using Rs.MotionPlat.SysConfig; using System.Runtime.InteropServices; using System.Diagnostics; namespace Rs.MotionPlat { public partial class Home : BaseFormHeader { public Home() { this.StartPosition = FormStartPosition.Manual; InitializeComponent(); this.FormBorderStyle = FormBorderStyle.None; this.MaximizedBounds = Screen.PrimaryScreen.WorkingArea; this.WindowState = System.Windows.Forms.FormWindowState.Maximized; } void CloseSubWindow() { foreach(Control f in panel_main.Controls) { if(f is Form && ((Form)f).Name!= "FormMain") { ((Form)f).Close(); } } panel_main.Controls.Clear(); } protected void Menu_Clicked(object sender, EventArgs e) { ButtonEx button = (ButtonEx)sender; if (button == btnSystem) { ClearSelectBtn(); button.Selected = true; CloseSubWindow(); BaseForm from = new SubMenuForm("SysConfig"); from.TopLevel = false; from.Dock = DockStyle.Fill; panel_main.Controls.Add(from); from.Visible = true; } if (button == btnData) { ClearSelectBtn(); button.Selected = true; CloseSubWindow(); BaseForm from = new SubMenuForm("Data"); from.TopLevel = false; from.Dock = DockStyle.Fill; panel_main.Controls.Add(from); from.Visible = true; } else if (button == btnMain) { ClearSelectBtn(); button.Selected = true; CloseSubWindow(); BaseForm form = ActiveForms.Get("FormMain"); if(form!=null) { panel_main.Controls.Add(form); form.TopLevel = false; form.Dock = DockStyle.Fill; form.Visible = true; } else { form = new FormMain(); form.Name = "FormMain"; form.TopLevel = false; form.Dock = DockStyle.Fill; panel_main.Controls.Add(form); form.Visible = true; ActiveForms.Add(form); } } else if (button == btnQuit) { button.Selected = false; if(WindowsClose()) { System.Environment.Exit(-1); } } else if (button == btnRecipe) { ClearSelectBtn(); button.Selected = true; CloseSubWindow(); BaseForm from = new SubMenuForm("Recipe"); from.TopLevel = false; from.Dock = DockStyle.Fill; panel_main.Controls.Add(from); from.Visible = true; } else if (button == btnAbout) { btnAbout.Enabled = false; BaseFormHeader form; form = new DebugMove(ShowBtn); //form = DebugMove.Instance; form.HeaderBackgroundColor = Color.Gray; form.TopMost = true; form.ShowMax = false; form.ShowMin = false; form.ShowInTaskbar = false; form.Location = new Point(this.Width - form.Width, this.Height - form.Height); form.Show(this); } else if (button == btnPermission) { BaseFormHeader form; form = new UserForm(); form.StartPosition = FormStartPosition.CenterScreen; form.Opacity = 1; form.TopMost = true; form.ShowDialog(this); } else if (button == btnLanguage) { ClearSelectBtn(); button.Selected = true; CloseSubWindow(); BaseForm from = new SubMenuForm("Calib"); from.TopLevel = false; from.Dock = DockStyle.Fill; panel_main.Controls.Add(from); from.Visible = true; // btnLanguage.Enabled = false; //VarConfig vc = new VarConfig(ShowBtn); // vc.StartPosition = FormStartPosition.CenterScreen; // vc.Show(); } } private void ShowBtn(string btnname) { if(btnname== "DebugMove") { btnAbout.Enabled = true; } else if(btnname== "VarConfig") { btnLanguage.Enabled = true ; } } private void ClearSelectBtn() { btnMain.Selected = false; btnData.Selected = false; btnRecipe.Selected = false; btnSystem.Selected = false; btnAbout.Selected = false; btnPermission.Selected = false; btnLanguage.Selected = false; btnQuit.Selected = false; } private void Home2_Load(object sender, EventArgs e) { timer1.Enabled = false; Ops.Init(); //SetFormStyle(); panel_main.Controls.Clear(); BaseForm form = ActiveForms.Get("FormMain"); if (form != null) { panel_main.Controls.Add(form); form.TopLevel = false; form.Dock = DockStyle.Fill; form.Visible = true; } else { form = new FormMain(); form.Name = "FormMain"; form.TopLevel = false; form.Dock = DockStyle.Fill; panel_main.Controls.Add(form); form.Visible = true; ActiveForms.Add(form); btnMain.Selected = true; } timer1.Enabled = true; lblVersion.Text ="Version:"+System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); new HotKeyManager(Keys.P, 1, (o,arg) => { LookCamera lookCamera = new LookCamera(); lookCamera.HeaderBackgroundColor = Color.Gray; lookCamera.TopMost = true; lookCamera.ShowMax = false; lookCamera.ShowMin = false; lookCamera.ShowInTaskbar = false; lookCamera.Show(); }); new HotKeyManager(Keys.T, 1, (o, arg) => { MonitorTray monitorTray = new MonitorTray(); //monitorTray.TopMost = true; //monitorTray.ShowMax = false; //monitorTray.ShowMin = false; //monitorTray.ShowInTaskbar = false; monitorTray.Show(); }); new HotKeyManager(Keys.F, 1, (o, arg) => { MonitorFlow mf = new MonitorFlow(); mf.StartPosition= FormStartPosition.CenterParent; mf.HeaderBackgroundColor = Color.Gray; mf.Show(); }); new Thread(() => { while (true) { if (DeviceTemprature.Instance.CurTemprature == DeviceTemprature.Instance.TargetTemprature) { } else if (Math.Abs(DeviceTemprature.Instance.TargetTemprature - DeviceTemprature.Instance.CurTemprature) < 0.5) { DeviceTemprature.Instance.CurTemprature = DeviceTemprature.Instance.TargetTemprature; } else if (DeviceTemprature.Instance.TargetTemprature < 25) { DeviceTemprature.Instance.CurTemprature += DeviceTemprature.Instance.CurTemprature < DeviceTemprature.Instance.TargetTemprature ? 0.37 : -0.0666666666667; } else { DeviceTemprature.Instance.CurTemprature += DeviceTemprature.Instance.CurTemprature < DeviceTemprature.Instance.TargetTemprature ? 0.37 : -0.175; } Thread.Sleep(100); } }) { IsBackground = true }.Start(); } private void SetFormStyle() { this.StartPosition = FormStartPosition.Manual; this.FormBorderStyle = FormBorderStyle.None;//设置无边框 this.WindowState = FormWindowState.Maximized;//设置窗体最大化显示 this.MaximizedBounds = Screen.PrimaryScreen.WorkingArea;//设置窗体在无边框和最大化时不遮挡任务栏 } private void timer1_Tick(object sender, EventArgs e) { GC.Collect(); if(MachineManage.Instance.MachineStatus.ToString()!=lblMachineState.Text) { if(MachineManage.Instance.MachineStatus== EMachineStatus.NotInit) { this.panel1.BackColor = Color.Red; } else if(MachineManage.Instance.MachineStatus== EMachineStatus.Homing || MachineManage.Instance.MachineStatus == EMachineStatus.Stop) { this.panel1.BackColor = Color.FromArgb(192, 192, 0); } else { this.panel1.BackColor = Color.FromArgb(46, 46, 46); } lblMachineState.Text=MachineManage.Instance.MachineStatus.ToString(); } if(MachineManage.Instance.GetLoadUnloadStatus().ToString() != lblRunState.Text.Replace("RunState:","")) { lblRunState.Text = "RunState:" + MachineManage.Instance.GetLoadUnloadStatus().ToString(); } if(DischargeFlow.Instance.GetCurStep().ToString()!=lblDischargeFlow.Text.Replace("Discharge:","")) { lblDischargeFlow.Text = "Discharge:"+DischargeFlow.Instance.GetCurStep().ToString(); } if (TurnoverFlow.Instance.GetStep().ToString() != lblTurnoverFlow.Text.Replace("Turnover:", "")) { if (TurnoverFlow.Instance.GetStep().ToString() != lblTurnoverFlow.Text.Replace("Turnover:", "")) lblTurnoverFlow.Text = "Turnover:" + TurnoverFlow.Instance.GetStep().ToString(); } if(MachineManage.Instance.InitializeState.ToString()!= lblInitializeState.Text.Replace("InitializeState:", "")) { lblInitializeState.Text = $"InitializeState:{MachineManage.Instance.InitializeState.ToString()}"; } Process proc = Process.GetCurrentProcess(); if (proc != null) { long userdMem = proc.WorkingSet64; lblMemory.Text = $"Mem:{(userdMem/1024)/1024} MB"; } } public override bool WindowsClose() { DialogResult dr = MessageBox.Show("确定要退出吗?", "提示", MessageBoxButtons.OKCancel); if (dr == DialogResult.OK) { LogHelper.Debug("手动退出软件"); Ops.Quit(); return true; } else { return false; } } #region 内存回收 [DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")] public static extern int SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize); /// /// 释放内存 /// public static void ClearMemory() { GC.Collect(); GC.WaitForPendingFinalizers(); if (Environment.OSVersion.Platform == PlatformID.Win32NT) { SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1); } } #endregion private void timer2_Tick(object sender, EventArgs e) { //ClearMemory(); } protected override CreateParams CreateParams { get { const int WS_MINIMIZEBOX = 0x00020000; // Winuser.h中定义 CreateParams cp = base.CreateParams; cp.Style = cp.Style | WS_MINIMIZEBOX; // 允许最小化操作 return cp; } } } }