using Keyence.AutoID.SDK;
|
using Navigation;
|
using System;
|
using System.Threading;
|
using System.Windows.Forms;
|
|
namespace SHARP_CLAS_UI.Screen
|
{
|
public partial class Form_Maintenance_Control : Form
|
{
|
#region Field
|
delegate void UI_Update_Delegate();
|
|
Form_Frame _Parent;
|
Thread UI_Update_Th;
|
|
Axis Selected_Axis;
|
|
LiveviewForm Load_BCR_View;
|
bool update_check;
|
#endregion
|
|
#region Construct
|
public Form_Maintenance_Control(Form_Frame _Parent)
|
{
|
InitializeComponent();
|
this._Parent = _Parent;
|
|
Init_Axis_Name();
|
Init_Thread();
|
}
|
#endregion
|
|
#region Form Function
|
private void cbb_Axis_SelectedIndexChanged(object sender, EventArgs e)
|
{
|
MotorAxis axis;
|
if (Enum.TryParse((string)cbb_Axis.SelectedItem, true, out axis))
|
{
|
Selected_Axis = _Parent._equip.Board_Control.Motors[axis];
|
}
|
}
|
|
private void btn_Amp_On_Click(object sender, EventArgs e)
|
{
|
Selected_Axis.Amp_On();
|
}
|
|
private void btn_Amp_Off_Click(object sender, EventArgs e)
|
{
|
Selected_Axis.Amp_Off();
|
}
|
|
private void btn_Reset_Click(object sender, EventArgs e)
|
{
|
Selected_Axis.MC_Error_Reset();
|
}
|
|
private void btn_Stop_Click(object sender, EventArgs e)
|
{
|
double velocity;
|
|
velocity = double.Parse(nud_Velocity.Value.ToString("F3"));
|
Selected_Axis.Move_Stop(velocity);
|
}
|
|
private void btn_Home_Click(object sender, EventArgs e)
|
{
|
Selected_Axis.Home();
|
}
|
|
private void btn_Move_Abs_Click(object sender, EventArgs e)
|
{
|
double position;
|
double velocity;
|
|
velocity = double.Parse(nud_Velocity.Value.ToString("F3"));
|
|
if (double.TryParse(tb_Position.Text, out position))
|
{
|
Selected_Axis.Move_Absolute_Pos(position, velocity);
|
}
|
}
|
|
private void btn_Move_Rel_Click(object sender, EventArgs e)
|
{
|
|
double position;
|
double velocity;
|
|
velocity = double.Parse(nud_Velocity.Value.ToString("F3"));
|
|
if (double.TryParse(tb_Position.Text, out position))
|
{
|
Selected_Axis.Move_Relative_Pos(position, velocity);
|
}
|
}
|
|
private void btn_Negative_Jog_MouseDown(object sender, MouseEventArgs e)
|
{
|
double velocity;
|
|
velocity = double.Parse(nud_Velocity.Value.ToString("F3"));
|
Selected_Axis.Negative_Zog(velocity);
|
}
|
|
private void btn_Negative_Jog_MouseUp(object sender, MouseEventArgs e)
|
{
|
double velocity;
|
|
velocity = double.Parse(nud_Velocity.Value.ToString("F3"));
|
Selected_Axis.Move_Stop(velocity);
|
}
|
|
private void btn_Positive_Jog_MouseDown(object sender, MouseEventArgs e)
|
{
|
double velocity;
|
|
velocity = double.Parse(nud_Velocity.Value.ToString("F3"));
|
Selected_Axis.Positive_Zog(velocity);
|
}
|
|
private void btn_Positive_Jog_MouseUp(object sender, MouseEventArgs e)
|
{
|
double velocity;
|
|
velocity = double.Parse(nud_Velocity.Value.ToString("F3"));
|
Selected_Axis.Move_Stop(velocity);
|
}
|
|
private void btn_Show_Vision_Test_Click(object sender, EventArgs e)
|
{
|
_Parent.Screen_Vision_Test.Show();
|
|
_Parent.Screen_Vision_Test.TopMost = true;
|
_Parent.Screen_Vision_Test.TopMost = false;
|
}
|
|
private void btn_Sequence_View_Shot_Click(object sender, EventArgs e)
|
{
|
_Parent.Screen_Sequence_Viewer.Show();
|
|
_Parent.Screen_Sequence_Viewer.TopMost = true;
|
_Parent.Screen_Sequence_Viewer.TopMost = false;
|
}
|
|
private void btn_Scanner_Run_Click(object sender, EventArgs e)
|
{
|
if (_Parent._equip.Cur_Main_Recipe.process_info == null)
|
return;
|
|
Scanner scanner = _Parent._equip.scanner;
|
|
scanner.Initialize(_Parent._equip.Cur_Main_Recipe.process_info.CTB_File_Path);
|
|
double jump_speed = 0, mark_speed = 0;
|
short laseron_delay = 0, laseroff_delay = 0;
|
ushort jump_delay = 0, mark_delay = 0, polygon_delay = 0;
|
|
jump_speed = _Parent._equip.Cur_Main_Recipe.process_info.Jump_Speed;
|
mark_speed = _Parent._equip.Cur_Main_Recipe.process_info.Mark_Speed;
|
laseron_delay = _Parent._equip.Cur_Main_Recipe.process_info.Laser_On_Delay;
|
laseroff_delay = _Parent._equip.Cur_Main_Recipe.process_info.Laser_Off_Delay;
|
jump_delay = _Parent._equip.Cur_Main_Recipe.process_info.Jump_Delay;
|
mark_delay = _Parent._equip.Cur_Main_Recipe.process_info.Mark_Delay;
|
polygon_delay = 0;
|
|
if (!scanner.Set_Process_Datas(jump_speed, mark_speed, laseron_delay, laseroff_delay, jump_delay, mark_delay, polygon_delay))
|
return;
|
|
int frequency = _Parent._equip.Cur_Main_Recipe.process_info.Frequency;
|
double power = _Parent._equip.Cur_Main_Recipe.process_info.Power;
|
|
if (!scanner.Set_Power(frequency, power))
|
return;
|
|
float process_area_x, process_area_y, work_area_x, work_area_y, distance;
|
int repeat, range, waveform;
|
process_area_x = 0;
|
process_area_y = 0;
|
work_area_x = _Parent._equip.Cur_Main_Recipe.process_info.Work_Area_X;
|
work_area_y = _Parent._equip.Cur_Main_Recipe.process_info.Work_Area_Y;
|
distance = _Parent._equip.Cur_Main_Recipe.process_info.Hatch_Distance;
|
repeat = _Parent._equip.Cur_Main_Recipe.process_info.Jump_Repeat;
|
range = _Parent._equip.Cur_Main_Recipe.process_info.Jump_Range;
|
waveform = _Parent._equip.Cur_Main_Recipe.process_info.Waveform;
|
|
bool moving;
|
|
do
|
{
|
scanner.Get_Busy(out moving);
|
} while (moving);
|
|
Scanner_Recipe rec = new Scanner_Recipe(work_area_x, work_area_y, process_area_x, process_area_y, distance, repeat, range, (Scanner_Recipe.Ablation_Style)waveform);
|
scanner.Set_Start_List(1);
|
|
foreach (Scanner_Position_Info info in /*Recipe_info*/rec.Recipe_Pos_Info)
|
{
|
if (info.mark)
|
{
|
System.Diagnostics.Debug.WriteLine($"MARK : {info.x}, {info.y}");
|
scanner.Set_Mark_Abs(info.x, info.y);
|
}
|
else
|
{
|
System.Diagnostics.Debug.WriteLine($"JUMP : {info.x}, {info.y}");
|
scanner.Set_Jump_Abs(info.x, info.y);
|
}
|
}
|
|
scanner.Set_End_Of_List();
|
scanner.Set_Excute_List(1);
|
|
do
|
{
|
scanner.Get_Busy(out moving);
|
} while (moving);
|
|
}
|
|
private void btn_Scanner_test_Click(object sender, EventArgs e)
|
{
|
if (_Parent._equip.Cur_Main_Recipe.process_info == null)
|
return;
|
|
Scanner scanner = _Parent._equip.scanner;
|
scanner.Initialize(_Parent._equip.Cur_Main_Recipe.process_info.CTB_File_Path);
|
|
double jump_speed = 0, mark_speed = 0;
|
short laseron_delay = 0, laseroff_delay = 0;
|
ushort jump_delay = 0, mark_delay = 0, polygon_delay = 0;
|
|
jump_speed = _Parent._equip.Cur_Main_Recipe.process_info.Jump_Speed;
|
mark_speed = 300;
|
laseron_delay = _Parent._equip.Cur_Main_Recipe.process_info.Laser_On_Delay;
|
laseroff_delay = _Parent._equip.Cur_Main_Recipe.process_info.Laser_Off_Delay;
|
jump_delay = _Parent._equip.Cur_Main_Recipe.process_info.Jump_Delay;
|
mark_delay = _Parent._equip.Cur_Main_Recipe.process_info.Mark_Delay;
|
polygon_delay = 0;
|
|
if (!scanner.Set_Process_Datas(jump_speed, mark_speed, laseron_delay, laseroff_delay, jump_delay, mark_delay, polygon_delay))
|
return;
|
|
int frequency = _Parent._equip.Cur_Main_Recipe.process_info.Frequency;
|
double power = _Parent._equip.Cur_Main_Recipe.process_info.Power;
|
|
if (!scanner.Set_Power(frequency, power))
|
return;
|
|
scanner.Squire_Marking();
|
|
bool moving;
|
do
|
{
|
scanner.Get_Busy(out moving);
|
} while (moving);
|
}
|
|
private void btn_Scanner_View_Click(object sender, EventArgs e)
|
{
|
_Parent.Screen_Scanner_View.Show();
|
_Parent.Screen_Scanner_View.TopMost = true;
|
_Parent.Screen_Scanner_View.TopMost = false;
|
}
|
|
private void btn_All_Error_Reset_Click(object sender, EventArgs e)
|
{
|
foreach (Axis axis in _Parent._equip.Board_Control.Motors.Values)
|
{
|
axis.MC_Error_Reset();
|
}
|
}
|
|
private void btn_All_Amp_On_Click(object sender, EventArgs e)
|
{
|
foreach (Axis axis in _Parent._equip.Board_Control.Motors.Values)
|
{
|
axis.Amp_On();
|
}
|
}
|
#endregion
|
|
#region Function
|
public void Set_Language()
|
{
|
try
|
{
|
lb_Motor_Control.Text = resLanguage.Motor_Control;
|
|
gb_Board_Status.Text = resLanguage.BOARD_STATUS;
|
lb_Board_Init.Text = resLanguage.Board_init;
|
lb_Board_Id.Text = resLanguage.Board_ID;
|
lb_Board_Status.Text = resLanguage.Board_Status1;
|
|
gb_Motor_Select.Text = resLanguage.Motor_Select;
|
|
gb_Axis_Control.Text = resLanguage.Axis_Control;
|
btn_Amp_On.Text = resLanguage.AMP_On;
|
btn_Reset.Text = resLanguage.RESET;
|
btn_Amp_Off.Text = resLanguage.AMP_Off;
|
btn_Home.Text = resLanguage.Home;
|
btn_Move_Abs.Text = resLanguage.ABS;
|
btn_Move_Rel.Text = resLanguage.REL;
|
btn_Stop.Text = resLanguage.Stop;
|
lb_Position_1.Text = resLanguage.POSITION;
|
lb_Velocity_1.Text = resLanguage.Velocity;
|
|
gb_Motor_Status.Text = resLanguage.MOTOR_STATUS;
|
lb_Name.Text = resLanguage.Name;
|
lb_Axis.Text = resLanguage.AXIS;
|
lb_Position.Text = resLanguage.POSITION;
|
lb_Velocity.Text = resLanguage.Velocity;
|
lb_Error_ID.Text = resLanguage.Error_ID;
|
lb_Error_Info_0.Text = resLanguage.Error_info_0;
|
lb_Error_Info_1.Text = resLanguage.Error_info_1;
|
|
btn_Show_Vision_Test.Text = resLanguage.VISION_TEST;
|
btn_Sequence_View_Shot.Text = resLanguage.SEQUENCE_VIEW;
|
btn_Scanner_View.Text = resLanguage.SCANNER_VIEW;
|
|
btn_All_Error_Reset.Text = resLanguage.All_Error_Reset;
|
btn_All_Amp_On.Text = resLanguage.All_Amp_On;
|
}
|
catch(Exception ex)
|
{
|
|
}
|
}
|
|
private void Init_Axis_Name()
|
{
|
cbb_Axis.Items.Clear();
|
|
foreach (string motor_name in Enum.GetNames(typeof(MotorAxis)))
|
{
|
cbb_Axis.Items.Add(motor_name);
|
}
|
|
cbb_Axis.SelectedIndex = 0;
|
}
|
|
private void Init_Live_View_Form()
|
{
|
Load_BCR_View = new LiveviewForm();
|
|
this.Load_BCR_View.BackColor = System.Drawing.Color.Black;
|
this.Load_BCR_View.BinningType = LiveviewForm.ImageBinningType.OneQuarter;
|
this.Load_BCR_View.Dock = DockStyle.Fill;
|
this.Load_BCR_View.ImageFormat = LiveviewForm.ImageFormatType.Jpeg;
|
this.Load_BCR_View.ImageQuality = 5;
|
this.Load_BCR_View.IpAddress = "192.168.100.100";
|
this.Load_BCR_View.Location = new System.Drawing.Point(4, 35);
|
this.Load_BCR_View.Name = "Load_BCR_View";
|
this.Load_BCR_View.PullTimeSpan = 100;
|
this.Load_BCR_View.Size = new System.Drawing.Size(325, 236);
|
this.Load_BCR_View.TabIndex = 4;
|
this.Load_BCR_View.TimeoutMs = 2000;
|
|
panel5.Controls.Add(Load_BCR_View);
|
_Parent._equip.LD_Tray_BCR.Add_Liveview_Form(Load_BCR_View);
|
Load_BCR_View.EndReceive();
|
Load_BCR_View.IpAddress = _Parent._equip.LD_Tray_BCR.Ip;
|
Load_BCR_View.BeginReceive();
|
}
|
|
private void Init_Thread()
|
{
|
UI_Update_Th = new Thread(UI_Update_Th_Set);
|
UI_Update_Th.Start();
|
}
|
|
private void UI_Update_Th_Set()
|
{
|
while (!this.IsDisposed)
|
{
|
Thread.Sleep(100);
|
|
if (!update_check)
|
{
|
update_check = true;
|
UI_Update();
|
}
|
}
|
}
|
|
private void UI_Update()
|
{
|
if (InvokeRequired)
|
{
|
BeginInvoke(new UI_Update_Delegate(UI_Update));
|
return;
|
}
|
else
|
{
|
try
|
{
|
|
if (_Parent._equip.Board_Control.BoardInit)
|
{
|
tb_Board_Init.Text = "Success";
|
tb_Board_Init.BackColor = System.Drawing.Color.Lime;
|
}
|
else
|
{
|
tb_Board_Init.Text = "Fail";
|
tb_Board_Init.BackColor = System.Drawing.Color.Green;
|
}
|
|
tb_Board_ID.Text = $"{_Parent._equip.Board_Control.BoardID}";
|
tb_Board_Status.Text = $"{_Parent._equip.Board_Control.BoardMode}";
|
|
tb_Error_ID.Text = $"{ Selected_Axis.ErrorID}";
|
tb_Error_Info_0.Text = $"{ Selected_Axis.ErrorInfo0}";
|
tb_Error_Info_1.Text = $"{ Selected_Axis.ErrorInfo1}";
|
|
tb_Real_Position.Text = $"{ Selected_Axis.Position}";
|
tb_Real_Velocity.Text = $"{ Selected_Axis.Velocity}";
|
|
lb_Limit_Switch_Pos.BackColor = Selected_Axis.LimitSwitchPos ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Home_Abs_Switch.BackColor = Selected_Axis.HomeAbsSwitch ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Limit_Switch_Pos_Event.BackColor = Selected_Axis.LimitSwitchPosEvent ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Limit_Switch_Neg_Event.BackColor = Selected_Axis.LimitSwitchNegEvent ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Drive_Fault.BackColor = Selected_Axis.DriveFault ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Sensor_Stop.BackColor = Selected_Axis.SensorStop ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Ready_For_Power_On.BackColor = Selected_Axis.ReadyForPowerOn ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Power_On.BackColor = Selected_Axis.PowerOn ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Is_Homed.BackColor = Selected_Axis.IsHomed ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Axis_Waring.BackColor = Selected_Axis.AxisWarning ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Motion_Complete.BackColor = Selected_Axis.MotionComplete ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Gearing.BackColor = Selected_Axis.Gearing ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Group_Motion.BackColor = Selected_Axis.GroupMotion ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Buffer_Full.BackColor = Selected_Axis.BufferFull ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Reserved_30.BackColor = Selected_Axis.Reserved_as_30 ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Reserved_31.BackColor = Selected_Axis.Reserved_as_31 ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Limit_Switch_Neg.BackColor = Selected_Axis.LimitSwitchNeg ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Direction_Negative.BackColor = Selected_Axis.DirectionNegative ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Direction_Positive.BackColor = Selected_Axis.DirectionPositive ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Descelerating.BackColor = Selected_Axis.Decelerating ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Accelerating.BackColor = Selected_Axis.Accelerating ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Contstant_Velocity.BackColor = Selected_Axis.ConstantVelocity ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Reserved_9.BackColor = Selected_Axis.Reserved_as_9 ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Reserved_8.BackColor = Selected_Axis.Reserved_as_8 ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Homing.BackColor = Selected_Axis.Homing ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Synchro_Motion.BackColor = Selected_Axis.SynchroMotion ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Continuous_Motion.BackColor = Selected_Axis.ContinuousMotion ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Discreate_Motion.BackColor = Selected_Axis.DiscreteMotion ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Stand_Still.BackColor = Selected_Axis.StandStill ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Stopping.BackColor = Selected_Axis.Stopping ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Disabled.BackColor = Selected_Axis.Disabled ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
lb_Error_Stop.BackColor = Selected_Axis.ErrorStop ? System.Drawing.Color.Lime : System.Drawing.Color.Green;
|
}
|
catch (Exception)
|
{
|
|
}
|
finally
|
{
|
update_check = false;
|
}
|
}
|
}
|
|
public void Set_User_Level(Navigator.User_Level level)
|
{
|
if (_Parent._equip.User.Level <= En_User_Level.Operator)
|
{
|
btn_Move_Abs.Enabled = false;
|
btn_Move_Rel.Enabled = false;
|
|
btn_Negative_Jog.Enabled = false;
|
btn_Positive_Jog.Enabled = false;
|
|
btn_Show_Vision_Test.Enabled = false;
|
btn_Scanner_View.Enabled = false;
|
|
btn_Show_Vision_Test.Enabled = false;
|
btn_Scanner_View.Enabled = false;
|
|
btn_Scanner_Run.Enabled = false;
|
btn_Scanner_test.Enabled = false;
|
|
panel2.Enabled = false;
|
panel3.Enabled = false;
|
panel5.Enabled = false;
|
panel6.Enabled = false;
|
}
|
else
|
{
|
btn_Move_Abs.Enabled = true;
|
btn_Move_Rel.Enabled = true;
|
|
btn_Negative_Jog.Enabled = true;
|
btn_Positive_Jog.Enabled = true;
|
|
btn_Show_Vision_Test.Enabled = true;
|
btn_Scanner_View.Enabled = true;
|
|
btn_Show_Vision_Test.Enabled = true;
|
btn_Scanner_View.Enabled = true;
|
|
btn_Scanner_Run.Enabled = true;
|
btn_Scanner_test.Enabled = true;
|
|
panel2.Enabled = true;
|
panel3.Enabled = true;
|
panel5.Enabled = true;
|
panel6.Enabled = true;
|
}
|
}
|
#endregion
|
}
|
}
|