using SA_LTT;
|
using SA_LTT.Info.AttenuatorCalInfo;
|
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;
|
|
namespace SA_LTT_UI.Viewer
|
{
|
public partial class AttenuatorCalViewer : Form
|
{
|
MainFrame _mainFrame;
|
Thread t_UIUpdate;
|
|
bool updateCheck;
|
AttenuatorCalData[] currentAttenuatorCalData;
|
|
double _beamHeight;
|
double _beamWidth;
|
|
protected override CreateParams CreateParams
|
{
|
get
|
{
|
CreateParams MyCp = base.CreateParams;
|
MyCp.ExStyle |= 0x02000000;
|
|
return MyCp;
|
}
|
}
|
|
public AttenuatorCalViewer(MainFrame mainFrame)
|
{
|
InitializeComponent();
|
|
_mainFrame = mainFrame;
|
|
_beamHeight = _mainFrame.equipment.settingParameterManager.SettingParameter.BeamHeight;
|
_beamWidth = _mainFrame.equipment.settingParameterManager.SettingParameter.BeamWidth;
|
|
t_UIUpdate = new Thread(UIUpdateTh);
|
t_UIUpdate.Start();
|
}
|
|
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.AttenuatorCalDate.ToString("yyyy-MM-dd HH:mm:ss");
|
|
DateTime attenuaCalDateTime = _mainFrame.equipment.equipmentInfo.AttenuatorCalDate.AddHours(_mainFrame.equipment.settingParameterManager.SettingParameter.AttenuatorCalCycle);
|
TimeSpan calDTime = (attenuaCalDateTime - DateTime.Now);
|
|
if(calDTime.TotalHours < 0)
|
{
|
tb_CalDTime.Text = $"-{-calDTime.Days} {-calDTime.Hours}:{-calDTime.Minutes}:{-calDTime.Seconds}";
|
}
|
else
|
{
|
tb_CalDTime.Text = $"{calDTime.Days} {calDTime.Hours}:{calDTime.Minutes}:{calDTime.Seconds}";
|
}
|
|
tb_StartAngle.Text = $"{_mainFrame.equipment.settingParameterManager.SettingParameter.AttenuatorCalStartAngle}";
|
tb_EndAngle.Text = $"{_mainFrame.equipment.settingParameterManager.SettingParameter.AttenuatorCalEndAngle}";
|
tb_AngleStep.Text = $"{_mainFrame.equipment.settingParameterManager.SettingParameter.AttenuatorCalAngleStep}";
|
|
tb_OriginalEnergy.Text = $"{_mainFrame.equipment.powerMeter.Energy:F4}";
|
tb_Energy.Text = $"{_mainFrame.equipment.powerMeter.EnergyPerUnitArea:F4}";
|
tb_CurrentAngle.Text = $"{_mainFrame.equipment.attenuator.Degree:F3}";
|
|
UpdateSteps();
|
UpdateAttenuatorCalData();
|
}
|
catch (Exception e)
|
{
|
EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
|
}
|
finally
|
{
|
updateCheck = false;
|
}
|
}
|
}
|
|
private void UpdateSteps()
|
{
|
if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AttenuatorCalStart)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Green;
|
lb_CenterPositionMove.BackColor = Color.Green;
|
lb_PowerMeterPositionMove.BackColor = Color.Green;
|
lb_AttenuatorSet.BackColor = Color.Green;
|
lb_CoolingWait.BackColor = Color.Green;
|
lb_LaserOn.BackColor = Color.Green;
|
lb_PowerMeasure.BackColor = Color.Green;
|
lb_LaserOff.BackColor = Color.Green;
|
lb_DataSet.BackColor = Color.Green;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcPowerMeterInitialize)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Green;
|
lb_PowerMeterPositionMove.BackColor = Color.Green;
|
lb_AttenuatorSet.BackColor = Color.Green;
|
lb_CoolingWait.BackColor = Color.Green;
|
lb_LaserOn.BackColor = Color.Green;
|
lb_PowerMeasure.BackColor = Color.Green;
|
lb_LaserOff.BackColor = Color.Green;
|
lb_DataSet.BackColor = Color.Green;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcMovePowerMeterPosition)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Lime;
|
lb_PowerMeterPositionMove.BackColor = Color.Green;
|
lb_AttenuatorSet.BackColor = Color.Green;
|
lb_CoolingWait.BackColor = Color.Green;
|
lb_LaserOn.BackColor = Color.Green;
|
lb_PowerMeasure.BackColor = Color.Green;
|
lb_LaserOff.BackColor = Color.Green;
|
lb_DataSet.BackColor = Color.Green;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcAttenuatorSet)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Lime;
|
lb_PowerMeterPositionMove.BackColor = Color.Lime;
|
lb_AttenuatorSet.BackColor = Color.Lime;
|
lb_CoolingWait.BackColor = Color.Green;
|
lb_LaserOn.BackColor = Color.Green;
|
lb_PowerMeasure.BackColor = Color.Green;
|
lb_LaserOff.BackColor = Color.Green;
|
lb_DataSet.BackColor = Color.Green;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcCoolingTimeWait)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Lime;
|
lb_PowerMeterPositionMove.BackColor = Color.Lime;
|
lb_AttenuatorSet.BackColor = Color.Lime;
|
lb_CoolingWait.BackColor = Color.Lime;
|
lb_LaserOn.BackColor = Color.Green;
|
lb_PowerMeasure.BackColor = Color.Green;
|
lb_LaserOff.BackColor = Color.Green;
|
lb_DataSet.BackColor = Color.Green;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcLaserOn)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Lime;
|
lb_PowerMeterPositionMove.BackColor = Color.Lime;
|
lb_AttenuatorSet.BackColor = Color.Lime;
|
lb_CoolingWait.BackColor = Color.Lime;
|
lb_LaserOn.BackColor = Color.Green;
|
lb_PowerMeasure.BackColor = Color.Green;
|
lb_LaserOff.BackColor = Color.Green;
|
lb_DataSet.BackColor = Color.Green;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcMeasurementEnd)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Lime;
|
lb_PowerMeterPositionMove.BackColor = Color.Lime;
|
lb_AttenuatorSet.BackColor = Color.Lime;
|
lb_CoolingWait.BackColor = Color.Lime;
|
lb_LaserOn.BackColor = Color.Lime;
|
lb_PowerMeasure.BackColor = Color.Lime;
|
lb_LaserOff.BackColor = Color.Green;
|
lb_DataSet.BackColor = Color.Green;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcLaserOff)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Lime;
|
lb_PowerMeterPositionMove.BackColor = Color.Lime;
|
lb_AttenuatorSet.BackColor = Color.Lime;
|
lb_CoolingWait.BackColor = Color.Lime;
|
lb_LaserOn.BackColor = Color.Lime;
|
lb_PowerMeasure.BackColor = Color.Lime;
|
lb_LaserOff.BackColor = Color.Lime;
|
lb_DataSet.BackColor = Color.Green;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcMeasurementDataCheck)
|
{
|
lb_PowerMeterInitialize.BackColor = Color.Lime;
|
lb_CenterPositionMove.BackColor = Color.Lime;
|
lb_PowerMeterPositionMove.BackColor = Color.Lime;
|
lb_AttenuatorSet.BackColor = Color.Lime;
|
lb_CoolingWait.BackColor = Color.Lime;
|
lb_LaserOn.BackColor = Color.Lime;
|
lb_PowerMeasure.BackColor = Color.Lime;
|
lb_LaserOff.BackColor = Color.Lime;
|
lb_DataSet.BackColor = Color.Lime;
|
lb_Complete.BackColor = Color.Green;
|
}
|
else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AttenuatorCalEnd)
|
{
|
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 UpdateAttenuatorCalData()
|
{
|
if (currentAttenuatorCalData == null)
|
{
|
currentAttenuatorCalData = _mainFrame.equipment.attenuatorCalInfo.GetAttenuatorCalData();
|
|
lv_AttenuatorCalData.Items.Clear();
|
|
foreach (AttenuatorCalData data in currentAttenuatorCalData)
|
{
|
ListViewItem lvi = new ListViewItem($"{data.AttenuatorAngle}");
|
lvi.SubItems.Add($"{data.Energy}");
|
lvi.SubItems.Add($"{(data.Energy / (_beamHeight * _beamWidth)) * 100:F3}");
|
|
lv_AttenuatorCalData.Items.Add(lvi);
|
}
|
}
|
else
|
{
|
AttenuatorCalData[] datas = _mainFrame.equipment.attenuatorCalInfo.GetAttenuatorCalData();
|
|
bool equalCheck = true;
|
|
if(currentAttenuatorCalData.Length == datas.Length)
|
{
|
for (int i = 0; i < datas.Length; i++)
|
{
|
if(currentAttenuatorCalData[i].IsEqual(datas[i]) == false)
|
{
|
equalCheck = false;
|
break;
|
}
|
}
|
}
|
else
|
{
|
equalCheck = false;
|
}
|
|
if(equalCheck == false || _beamHeight != _mainFrame.equipment.settingParameterManager.SettingParameter.BeamHeight || _beamWidth != _mainFrame.equipment.settingParameterManager.SettingParameter.BeamWidth)
|
{
|
_beamHeight = _mainFrame.equipment.settingParameterManager.SettingParameter.BeamHeight;
|
_beamWidth = _mainFrame.equipment.settingParameterManager.SettingParameter.BeamWidth;
|
currentAttenuatorCalData = _mainFrame.equipment.attenuatorCalInfo.GetAttenuatorCalData();
|
lv_AttenuatorCalData.Items.Clear();
|
|
foreach (AttenuatorCalData data in currentAttenuatorCalData)
|
{
|
ListViewItem lvi = new ListViewItem($"{data.AttenuatorAngle}");
|
lvi.SubItems.Add($"{data.Energy}");
|
lvi.SubItems.Add($"{(data.Energy / (_beamHeight * _beamWidth)) * 100:F3}");
|
|
lv_AttenuatorCalData.Items.Add(lvi);
|
}
|
}
|
}
|
}
|
private void btn_Close_Click(object sender, EventArgs e)
|
{
|
EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}");
|
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.ManualAttenuatorCalStart();
|
}
|
else
|
{
|
MessageBox.Show("Sequence 대기 중이 아닙니다.");
|
}
|
}
|
|
private void btn_Stop_Click(object sender, EventArgs e)
|
{
|
if (SA_LTT.Sequence.PmcSteps.AttenuatorCalStart <= _mainFrame.equipment.PmcStep && _mainFrame.equipment.PmcStep <= SA_LTT.Sequence.PmcSteps.AttenuatorCalEnd)
|
{
|
EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}");
|
|
_mainFrame.equipment.AttenuatorCalStop();
|
}
|
else
|
{
|
MessageBox.Show("Attenuator Cal 중이 아닙니다.");
|
}
|
}
|
|
private void AttenuatorCalViewer_FormClosing(object sender, FormClosingEventArgs e)
|
{
|
e.Cancel = true;
|
this.Hide();
|
}
|
}
|
}
|