using SA_LTT;
|
using SA_LTT.Module;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.Linq;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
using System.Windows.Forms;
|
using System.Windows.Forms.DataVisualization.Charting;
|
|
namespace SA_LTT_UI.Viewer
|
{
|
public partial class EnergyDropCheckViewer : Form
|
{
|
MainFrame _mainFrame;
|
Thread t_UIUpdate;
|
|
bool updateCheck;
|
|
protected override CreateParams CreateParams
|
{
|
get
|
{
|
CreateParams MyCp = base.CreateParams;
|
MyCp.ExStyle |= 0x02000000;
|
|
return MyCp;
|
}
|
}
|
|
public EnergyDropCheckViewer(MainFrame mainFrame)
|
{
|
InitializeComponent();
|
|
_mainFrame = mainFrame;
|
InitializeChart();
|
|
_mainFrame.equipment.powerMeter.EnergyMeasured += PowerMeter_EnergyMeasured;
|
|
t_UIUpdate = new Thread(UIUpdateTh);
|
t_UIUpdate.Start();
|
}
|
|
private void PowerMeter_EnergyMeasured(double energy)
|
{
|
if (_mainFrame.equipment.IsEnergyDropCheckRun == false) return;
|
|
if (_mainFrame.equipment.PmcStep != Sequence.PmcSteps.EdcMeasurement) return;
|
|
if (InvokeRequired)
|
{
|
BeginInvoke(new EnergyMeasuredEvent(PowerMeter_EnergyMeasured), energy);
|
}
|
else
|
{
|
Series Se_MeasurementPower = chart_EnergyMeasure.Series.FindByName("MeasurementPower");
|
|
int i = Se_MeasurementPower.Points.Count;
|
double[] points = _mainFrame.equipment.powerMeter.MeasurementsEnergyPerUnitArea.ToArray();
|
|
for (; i < points.Length; i++)
|
{
|
double point = points[i];
|
|
if (point > chart_EnergyMeasure.ChartAreas[0].AxisY.Maximum)
|
chart_EnergyMeasure.ChartAreas[0].AxisY.Maximum = point + (point * 0.1);
|
|
if (point < chart_EnergyMeasure.ChartAreas[0].AxisY.Minimum)
|
chart_EnergyMeasure.ChartAreas[0].AxisY.Minimum = point - (point * 0.1);
|
|
Se_MeasurementPower.Points.AddXY(i, point);
|
}
|
|
tb_Count.Text = $"{Se_MeasurementPower.Points.Count}";
|
tb_Power.Text = $"{energy:F4}";
|
tb_Average.Text = $"{_mainFrame.equipment.powerMeter.MeasurementAverageEnergyPerUnitArea:F4}";
|
tb_Max.Text = $"{_mainFrame.equipment.powerMeter.MeasurementMaxEnergyPerUnitArea:F4}";
|
tb_Min.Text = $"{_mainFrame.equipment.powerMeter.MeasurementMinEnergyPerUnitArea:F4}";
|
}
|
}
|
|
private void InitializeChart()
|
{
|
chart_EnergyMeasure.Series.Clear();
|
|
chart_EnergyMeasure.ChartAreas[0].AxisX.IntervalAutoMode = IntervalAutoMode.VariableCount;
|
chart_EnergyMeasure.ChartAreas[0].AxisY.MajorGrid.Enabled = false;
|
|
chart_EnergyMeasure.ChartAreas[0].AxisY.Maximum = -1;
|
chart_EnergyMeasure.ChartAreas[0].AxisY.Minimum = 99;
|
|
Series Se_LeakBeamPower = chart_EnergyMeasure.Series.Add("MeasurementPower");
|
Se_LeakBeamPower.ChartType = SeriesChartType.Line;
|
Se_LeakBeamPower.Color = Color.LightGreen;
|
Se_LeakBeamPower.MarkerSize = 1;
|
}
|
|
|
private void UIUpdateTh()
|
{
|
while (_mainFrame.equipment.IsDisposed == false)
|
{
|
Thread.Sleep(10);
|
|
if (updateCheck == false)
|
{
|
updateCheck = true;
|
UIUpdate();
|
}
|
}
|
}
|
|
private void UIUpdate()
|
{
|
if (InvokeRequired)
|
{
|
BeginInvoke(new UIUpdateDelegate(UIUpdate));
|
return;
|
}
|
else
|
{
|
try
|
{
|
tb_LastCalTime.Text = _mainFrame.equipment.equipmentInfo.EnergyDropCheckDate.ToString("yyyy-MM-dd HH:mm:ss");
|
|
DateTime energyDropCheckDateTime = _mainFrame.equipment.equipmentInfo.EnergyDropCheckDate.AddHours(_mainFrame.equipment.settingParameterManager.SettingParameter.EnergyDropCheckCycle);
|
TimeSpan energyDropCheckDTime = (energyDropCheckDateTime - DateTime.Now);
|
|
if (energyDropCheckDTime.TotalHours < 0)
|
{
|
tb_CalDTime.Text = $"-{-energyDropCheckDTime.Days} {-energyDropCheckDTime.Hours}:{-energyDropCheckDTime.Minutes}:{-energyDropCheckDTime.Seconds}";
|
}
|
else
|
{
|
tb_CalDTime.Text = $"{energyDropCheckDTime.Days} {energyDropCheckDTime.Hours}:{energyDropCheckDTime.Minutes}:{energyDropCheckDTime.Seconds}";
|
}
|
|
double rangeValue = _mainFrame.equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetEnergy * _mainFrame.equipment.settingParameterManager.SettingParameter.EnergyDropCheckErrorOccuredRange / 100;
|
tb_TargetEnergyMax.Text = (_mainFrame.equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetEnergy + rangeValue).ToString("F4");
|
tb_TargetEnergyMin.Text = (_mainFrame.equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetEnergy - rangeValue).ToString("F4");
|
tb_TargetAngle.Text = _mainFrame.equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetAngle.ToString("F3");
|
|
UpdateSteps();
|
}
|
catch (Exception e)
|
{
|
EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
|
}
|
finally
|
{
|
updateCheck = false;
|
}
|
}
|
}
|
|
private void UpdateSteps()
|
{
|
if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EnergyDropCheckStart)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Green;
|
lb_CenterPositionMove.BackColor = Color.Green;
|
lb_PowerMeterPositionMove.BackColor = Color.Green;
|
lb_AttenuatorSet.BackColor = Color.Green;
|
lb_LaserOn.BackColor = Color.Green;
|
lb_PowerMeasure.BackColor = Color.Green;
|
lb_LaserOff.BackColor = Color.Green;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EdcPowerMeterInitialize)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Green;
|
lb_PowerMeterPositionMove.BackColor = Color.Green;
|
lb_AttenuatorSet.BackColor = Color.Green;
|
lb_LaserOn.BackColor = Color.Green;
|
lb_PowerMeasure.BackColor = Color.Green;
|
lb_LaserOff.BackColor = Color.Green;
|
lb_Complete.BackColor = Color.Green;
|
InitializeChart();
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EdcMovePowerMeterPosition)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Lime;
|
lb_PowerMeterPositionMove.BackColor = Color.Green;
|
lb_AttenuatorSet.BackColor = Color.Green;
|
lb_LaserOn.BackColor = Color.Green;
|
lb_PowerMeasure.BackColor = Color.Green;
|
lb_LaserOff.BackColor = Color.Green;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EdcAttenuatorSet)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Lime;
|
lb_PowerMeterPositionMove.BackColor = Color.Lime;
|
lb_AttenuatorSet.BackColor = Color.Green;
|
lb_LaserOn.BackColor = Color.Green;
|
lb_PowerMeasure.BackColor = Color.Green;
|
lb_LaserOff.BackColor = Color.Green;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EdcLaserOn)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Lime;
|
lb_PowerMeterPositionMove.BackColor = Color.Lime;
|
lb_AttenuatorSet.BackColor = Color.Lime;
|
lb_LaserOn.BackColor = Color.Green;
|
lb_PowerMeasure.BackColor = Color.Green;
|
lb_LaserOff.BackColor = Color.Green;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EdcMeasurementStart)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Lime;
|
lb_PowerMeterPositionMove.BackColor = Color.Lime;
|
lb_AttenuatorSet.BackColor = Color.Lime;
|
lb_LaserOn.BackColor = Color.Lime;
|
lb_PowerMeasure.BackColor = Color.Lime;
|
lb_LaserOff.BackColor = Color.Green;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EdcLaserOff)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Lime;
|
lb_PowerMeterPositionMove.BackColor = Color.Lime;
|
lb_AttenuatorSet.BackColor = Color.Lime;
|
lb_LaserOn.BackColor = Color.Lime;
|
lb_PowerMeasure.BackColor = Color.Lime;
|
lb_LaserOff.BackColor = Color.Lime;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EnergyDropCheckEnd)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Lime;
|
lb_PowerMeterPositionMove.BackColor = Color.Lime;
|
lb_AttenuatorSet.BackColor = Color.Lime;
|
lb_LaserOn.BackColor = Color.Lime;
|
lb_PowerMeasure.BackColor = Color.Lime;
|
lb_LaserOff.BackColor = Color.Lime;
|
lb_Complete.BackColor = Color.Lime;
|
}
|
}
|
|
private void btn_Close_Click(object sender, EventArgs e)
|
{
|
this.Hide();
|
}
|
|
private void btn_Start_Click(object sender, EventArgs e)
|
{
|
if (_mainFrame.equipment.ProcessStatus == SA_LTT.ProcessStatus.Idle)
|
{
|
if (_mainFrame.equipment.alarmManager.OccurredAlarms.Exists(x => x.Level == AlarmLevel.Heavy))
|
{
|
MessageBox.Show("Alarm이 발생중입니다.", "확인", MessageBoxButtons.OK);
|
return;
|
}
|
|
if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableLdd == false || _mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableShutter == false || _mainFrame.equipment.piLaser.CurrentPiLaserStatus.SetCurrent != _mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent)
|
{
|
string message = string.Empty;
|
|
if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableLdd == false)
|
{
|
message += "LDD가 닫혀있습니다. \r\n";
|
}
|
if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableShutter == false)
|
{
|
message += "Shutter가 닫혀있습니다. \r\n";
|
}
|
if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.SetCurrent != _mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent)
|
{
|
message += $"Set current가 {_mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent}이 아닙니다. \r\n \r\n";
|
}
|
|
if (MessageBox.Show(message + "진행 하시겠습니까?", "확인", MessageBoxButtons.YesNo) != DialogResult.Yes)
|
{
|
return;
|
}
|
}
|
|
EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}");
|
|
_mainFrame.equipment.ManualEnergyDropCheckStart();
|
}
|
else
|
{
|
MessageBox.Show("Sequence 대기 중이 아닙니다.");
|
}
|
}
|
|
private void btn_Stop_Click(object sender, EventArgs e)
|
{
|
if (SA_LTT.Sequence.PmcSteps.EnergyDropCheckStart <= _mainFrame.equipment.PmcStep && _mainFrame.equipment.PmcStep <= SA_LTT.Sequence.PmcSteps.EnergyDropCheckEnd)
|
{
|
EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}");
|
|
_mainFrame.equipment.EnergyDropCheckStop();
|
}
|
else
|
{
|
MessageBox.Show("Energy drop check 중이 아닙니다.");
|
}
|
}
|
|
private void EnergyDropCheckViewer_FormClosing(object sender, FormClosingEventArgs e)
|
{
|
e.Cancel = true;
|
this.Hide();
|
}
|
}
|
}
|