You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

365 lines
13 KiB
C#

11 months ago
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);
/// <summary>
/// 释放内存
/// </summary>
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;
}
}
}
}