From afb91739ea7e47c20a0e1f526a841e5089e7e716 Mon Sep 17 00:00:00 2001
From: 천호석 <hosuk1418@naver.com>
Date: 수, 02 11월 2022 16:40:20 +0900
Subject: [PATCH] Width Measurement 4Point 2번 측정할 수 있도록 변경.

---
 SHARP_CLAS_UI/500.Equipment/500.Recipe/200.Vision_Info/Vision_Info_Recipe.cs |   27 +
 SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Define.cs           |    6 
 SHARP_CLAS_UI/300.Etc_Screen/Form_User_Command_Set.cs                        |    5 
 SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.Designer.cs                        |  570 ++++++++++++++--------
 SHARP_CLAS_UI/300.Etc_Screen/Form_User_Command_Set.Designer.cs               |    4 
 SHARP_CLAS_UI/500.Equipment/700.Unit/400.Unloader/ULD_Handler_1.cs           |  704 ++++++++++++++++++++++++++-
 SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.cs                                 |   72 ++
 SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Client_AOI.cs              |    8 
 SHARP_CLAS_UI/500.Equipment/600.Info/000.Panel_Info/Panel_Info.cs            |    8 
 SHARP_CLAS_UI/500.Equipment/700.Unit/Base/Handler.cs                         |   41 +
 SHARP_CLAS_UI/500.Equipment/400.Module/300.CIM/CIM_Client.cs                 |   10 
 11 files changed, 1,213 insertions(+), 242 deletions(-)

diff --git a/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.Designer.cs b/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.Designer.cs
index 7d3979d..aac9550 100644
--- a/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.Designer.cs
+++ b/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.Designer.cs
@@ -190,6 +190,35 @@
             this.label8 = new System.Windows.Forms.Label();
             this.lb_uld_handler_1_y = new System.Windows.Forms.Label();
             this.lb_uld_handler_1_x = new System.Windows.Forms.Label();
+            this.tabPage6 = new System.Windows.Forms.TabPage();
+            this.cb_Width_AOI_8Use = new System.Windows.Forms.CheckBox();
+            this.label11 = new System.Windows.Forms.Label();
+            this.tb_Width_AOI_Mark7_X = new System.Windows.Forms.TextBox();
+            this.tb_Width_AOI_Mark3_X = new System.Windows.Forms.TextBox();
+            this.tb_Width_AOI_Mark5_X = new System.Windows.Forms.TextBox();
+            this.tb_Width_AOI_Mark1_X = new System.Windows.Forms.TextBox();
+            this.tb_Width_AOI_Mark7_Y = new System.Windows.Forms.TextBox();
+            this.tb_Width_AOI_Mark3_Y = new System.Windows.Forms.TextBox();
+            this.tb_Width_AOI_Mark5_Y = new System.Windows.Forms.TextBox();
+            this.tb_Width_AOI_Mark1_Y = new System.Windows.Forms.TextBox();
+            this.label24 = new System.Windows.Forms.Label();
+            this.label12 = new System.Windows.Forms.Label();
+            this.label23 = new System.Windows.Forms.Label();
+            this.label13 = new System.Windows.Forms.Label();
+            this.tb_Width_AOI_Mark8_X = new System.Windows.Forms.TextBox();
+            this.tb_Width_AOI_Mark4_X = new System.Windows.Forms.TextBox();
+            this.tb_Width_AOI_Mark8_Y = new System.Windows.Forms.TextBox();
+            this.tb_Width_AOI_Mark4_Y = new System.Windows.Forms.TextBox();
+            this.tb_Width_AOI_Mark6_X = new System.Windows.Forms.TextBox();
+            this.tb_Width_AOI_Mark2_X = new System.Windows.Forms.TextBox();
+            this.label21 = new System.Windows.Forms.Label();
+            this.tb_Width_AOI_Mark6_Y = new System.Windows.Forms.TextBox();
+            this.label14 = new System.Windows.Forms.Label();
+            this.label18 = new System.Windows.Forms.Label();
+            this.tb_Width_AOI_Mark2_Y = new System.Windows.Forms.TextBox();
+            this.label15 = new System.Windows.Forms.Label();
+            this.label16 = new System.Windows.Forms.Label();
+            this.label17 = new System.Windows.Forms.Label();
             this.tabPage4 = new System.Windows.Forms.TabPage();
             this.lb_Aoi_pick_offset = new System.Windows.Forms.Label();
             this.tb_AOI_After_Left_T = new System.Windows.Forms.TextBox();
@@ -279,22 +308,6 @@
             this.lv_Vision_Info_Recipes = new System.Windows.Forms.ListView();
             this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
             this.btn_Vision_Info_Refresh = new System.Windows.Forms.Button();
-            this.tabPage6 = new System.Windows.Forms.TabPage();
-            this.label11 = new System.Windows.Forms.Label();
-            this.tb_Width_AOI_Mark3_X = new System.Windows.Forms.TextBox();
-            this.tb_Width_AOI_Mark1_X = new System.Windows.Forms.TextBox();
-            this.tb_Width_AOI_Mark3_Y = new System.Windows.Forms.TextBox();
-            this.tb_Width_AOI_Mark1_Y = new System.Windows.Forms.TextBox();
-            this.label12 = new System.Windows.Forms.Label();
-            this.label13 = new System.Windows.Forms.Label();
-            this.tb_Width_AOI_Mark4_X = new System.Windows.Forms.TextBox();
-            this.tb_Width_AOI_Mark4_Y = new System.Windows.Forms.TextBox();
-            this.tb_Width_AOI_Mark2_X = new System.Windows.Forms.TextBox();
-            this.label14 = new System.Windows.Forms.Label();
-            this.tb_Width_AOI_Mark2_Y = new System.Windows.Forms.TextBox();
-            this.label15 = new System.Windows.Forms.Label();
-            this.label16 = new System.Windows.Forms.Label();
-            this.label17 = new System.Windows.Forms.Label();
             this.pnl_Tray_Info_Recipe.SuspendLayout();
             this.panel5.SuspendLayout();
             this.panel4.SuspendLayout();
@@ -310,6 +323,7 @@
             this.pnl_Vision_Info_Recipe.SuspendLayout();
             this.tabControl3.SuspendLayout();
             this.tabPage3.SuspendLayout();
+            this.tabPage6.SuspendLayout();
             this.tabPage4.SuspendLayout();
             this.tabControl2.SuspendLayout();
             this.tabPage1.SuspendLayout();
@@ -318,7 +332,6 @@
             this.tabControl1.SuspendLayout();
             this.tab_PreAlignOffset.SuspendLayout();
             this.tab_LoaderHandler1Position.SuspendLayout();
-            this.tabPage6.SuspendLayout();
             this.SuspendLayout();
             // 
             // pnl_Tray_Info_Recipe
@@ -2036,7 +2049,7 @@
             this.tabControl3.Location = new System.Drawing.Point(3, 435);
             this.tabControl3.Name = "tabControl3";
             this.tabControl3.SelectedIndex = 0;
-            this.tabControl3.Size = new System.Drawing.Size(450, 192);
+            this.tabControl3.Size = new System.Drawing.Size(450, 309);
             this.tabControl3.TabIndex = 216;
             // 
             // tabPage3
@@ -2060,7 +2073,7 @@
             this.tabPage3.Location = new System.Drawing.Point(4, 22);
             this.tabPage3.Name = "tabPage3";
             this.tabPage3.Padding = new System.Windows.Forms.Padding(3);
-            this.tabPage3.Size = new System.Drawing.Size(442, 166);
+            this.tabPage3.Size = new System.Drawing.Size(442, 283);
             this.tabPage3.TabIndex = 0;
             this.tabPage3.Text = "AOI Position";
             this.tabPage3.UseVisualStyleBackColor = true;
@@ -2169,6 +2182,328 @@
             this.lb_uld_handler_1_x.Text = "ULD HANDLER 1 X";
             this.lb_uld_handler_1_x.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
             // 
+            // tabPage6
+            // 
+            this.tabPage6.Controls.Add(this.cb_Width_AOI_8Use);
+            this.tabPage6.Controls.Add(this.label11);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark7_X);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark3_X);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark5_X);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark1_X);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark7_Y);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark3_Y);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark5_Y);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark1_Y);
+            this.tabPage6.Controls.Add(this.label24);
+            this.tabPage6.Controls.Add(this.label12);
+            this.tabPage6.Controls.Add(this.label23);
+            this.tabPage6.Controls.Add(this.label13);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark8_X);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark4_X);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark8_Y);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark4_Y);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark6_X);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark2_X);
+            this.tabPage6.Controls.Add(this.label21);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark6_Y);
+            this.tabPage6.Controls.Add(this.label14);
+            this.tabPage6.Controls.Add(this.label18);
+            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark2_Y);
+            this.tabPage6.Controls.Add(this.label15);
+            this.tabPage6.Controls.Add(this.label16);
+            this.tabPage6.Controls.Add(this.label17);
+            this.tabPage6.Location = new System.Drawing.Point(4, 22);
+            this.tabPage6.Name = "tabPage6";
+            this.tabPage6.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPage6.Size = new System.Drawing.Size(442, 283);
+            this.tabPage6.TabIndex = 2;
+            this.tabPage6.Text = "Width AOI Position";
+            this.tabPage6.UseVisualStyleBackColor = true;
+            // 
+            // cb_Width_AOI_8Use
+            // 
+            this.cb_Width_AOI_8Use.AutoSize = true;
+            this.cb_Width_AOI_8Use.Location = new System.Drawing.Point(314, 262);
+            this.cb_Width_AOI_8Use.Name = "cb_Width_AOI_8Use";
+            this.cb_Width_AOI_8Use.Size = new System.Drawing.Size(114, 16);
+            this.cb_Width_AOI_8Use.TabIndex = 215;
+            this.cb_Width_AOI_8Use.Text = "Width AOI 8 Use";
+            this.cb_Width_AOI_8Use.UseVisualStyleBackColor = true;
+            this.cb_Width_AOI_8Use.CheckedChanged += new System.EventHandler(this.cb_Width_AOI_8Use_CheckedChanged);
+            // 
+            // label11
+            // 
+            this.label11.BackColor = System.Drawing.Color.LightCoral;
+            this.label11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.label11.Location = new System.Drawing.Point(3, 5);
+            this.label11.Name = "label11";
+            this.label11.Size = new System.Drawing.Size(167, 21);
+            this.label11.TabIndex = 214;
+            this.label11.Text = "AOI MEASUREMENT";
+            this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // tb_Width_AOI_Mark7_X
+            // 
+            this.tb_Width_AOI_Mark7_X.Location = new System.Drawing.Point(176, 205);
+            this.tb_Width_AOI_Mark7_X.Name = "tb_Width_AOI_Mark7_X";
+            this.tb_Width_AOI_Mark7_X.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark7_X.TabIndex = 200;
+            this.tb_Width_AOI_Mark7_X.Text = "0";
+            this.tb_Width_AOI_Mark7_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark7_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // tb_Width_AOI_Mark3_X
+            // 
+            this.tb_Width_AOI_Mark3_X.Location = new System.Drawing.Point(177, 84);
+            this.tb_Width_AOI_Mark3_X.Name = "tb_Width_AOI_Mark3_X";
+            this.tb_Width_AOI_Mark3_X.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark3_X.TabIndex = 200;
+            this.tb_Width_AOI_Mark3_X.Text = "0";
+            this.tb_Width_AOI_Mark3_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark3_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // tb_Width_AOI_Mark5_X
+            // 
+            this.tb_Width_AOI_Mark5_X.Location = new System.Drawing.Point(176, 150);
+            this.tb_Width_AOI_Mark5_X.Name = "tb_Width_AOI_Mark5_X";
+            this.tb_Width_AOI_Mark5_X.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark5_X.TabIndex = 201;
+            this.tb_Width_AOI_Mark5_X.Text = "0";
+            this.tb_Width_AOI_Mark5_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark5_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // tb_Width_AOI_Mark1_X
+            // 
+            this.tb_Width_AOI_Mark1_X.Location = new System.Drawing.Point(177, 29);
+            this.tb_Width_AOI_Mark1_X.Name = "tb_Width_AOI_Mark1_X";
+            this.tb_Width_AOI_Mark1_X.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark1_X.TabIndex = 201;
+            this.tb_Width_AOI_Mark1_X.Text = "0";
+            this.tb_Width_AOI_Mark1_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark1_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // tb_Width_AOI_Mark7_Y
+            // 
+            this.tb_Width_AOI_Mark7_Y.Location = new System.Drawing.Point(305, 205);
+            this.tb_Width_AOI_Mark7_Y.Name = "tb_Width_AOI_Mark7_Y";
+            this.tb_Width_AOI_Mark7_Y.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark7_Y.TabIndex = 202;
+            this.tb_Width_AOI_Mark7_Y.Text = "0";
+            this.tb_Width_AOI_Mark7_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark7_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // tb_Width_AOI_Mark3_Y
+            // 
+            this.tb_Width_AOI_Mark3_Y.Location = new System.Drawing.Point(306, 84);
+            this.tb_Width_AOI_Mark3_Y.Name = "tb_Width_AOI_Mark3_Y";
+            this.tb_Width_AOI_Mark3_Y.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark3_Y.TabIndex = 202;
+            this.tb_Width_AOI_Mark3_Y.Text = "0";
+            this.tb_Width_AOI_Mark3_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark3_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // tb_Width_AOI_Mark5_Y
+            // 
+            this.tb_Width_AOI_Mark5_Y.Location = new System.Drawing.Point(305, 150);
+            this.tb_Width_AOI_Mark5_Y.Name = "tb_Width_AOI_Mark5_Y";
+            this.tb_Width_AOI_Mark5_Y.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark5_Y.TabIndex = 203;
+            this.tb_Width_AOI_Mark5_Y.Text = "0";
+            this.tb_Width_AOI_Mark5_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark5_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // tb_Width_AOI_Mark1_Y
+            // 
+            this.tb_Width_AOI_Mark1_Y.Location = new System.Drawing.Point(306, 29);
+            this.tb_Width_AOI_Mark1_Y.Name = "tb_Width_AOI_Mark1_Y";
+            this.tb_Width_AOI_Mark1_Y.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark1_Y.TabIndex = 203;
+            this.tb_Width_AOI_Mark1_Y.Text = "0";
+            this.tb_Width_AOI_Mark1_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark1_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // label24
+            // 
+            this.label24.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.label24.Location = new System.Drawing.Point(2, 205);
+            this.label24.Name = "label24";
+            this.label24.Size = new System.Drawing.Size(167, 21);
+            this.label24.TabIndex = 204;
+            this.label24.Text = "AOI MARK7 [mm]";
+            this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // label12
+            // 
+            this.label12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.label12.Location = new System.Drawing.Point(3, 84);
+            this.label12.Name = "label12";
+            this.label12.Size = new System.Drawing.Size(167, 21);
+            this.label12.TabIndex = 204;
+            this.label12.Text = "AOI MARK3 [mm]";
+            this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // label23
+            // 
+            this.label23.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.label23.Location = new System.Drawing.Point(2, 150);
+            this.label23.Name = "label23";
+            this.label23.Size = new System.Drawing.Size(167, 21);
+            this.label23.TabIndex = 205;
+            this.label23.Text = "AOI MARK5[mm]";
+            this.label23.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // label13
+            // 
+            this.label13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.label13.Location = new System.Drawing.Point(3, 29);
+            this.label13.Name = "label13";
+            this.label13.Size = new System.Drawing.Size(167, 21);
+            this.label13.TabIndex = 205;
+            this.label13.Text = "AOI MARK1 [mm]";
+            this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // tb_Width_AOI_Mark8_X
+            // 
+            this.tb_Width_AOI_Mark8_X.Location = new System.Drawing.Point(176, 232);
+            this.tb_Width_AOI_Mark8_X.Name = "tb_Width_AOI_Mark8_X";
+            this.tb_Width_AOI_Mark8_X.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark8_X.TabIndex = 206;
+            this.tb_Width_AOI_Mark8_X.Text = "0";
+            this.tb_Width_AOI_Mark8_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark8_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // tb_Width_AOI_Mark4_X
+            // 
+            this.tb_Width_AOI_Mark4_X.Location = new System.Drawing.Point(177, 111);
+            this.tb_Width_AOI_Mark4_X.Name = "tb_Width_AOI_Mark4_X";
+            this.tb_Width_AOI_Mark4_X.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark4_X.TabIndex = 206;
+            this.tb_Width_AOI_Mark4_X.Text = "0";
+            this.tb_Width_AOI_Mark4_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark4_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // tb_Width_AOI_Mark8_Y
+            // 
+            this.tb_Width_AOI_Mark8_Y.Location = new System.Drawing.Point(305, 232);
+            this.tb_Width_AOI_Mark8_Y.Name = "tb_Width_AOI_Mark8_Y";
+            this.tb_Width_AOI_Mark8_Y.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark8_Y.TabIndex = 208;
+            this.tb_Width_AOI_Mark8_Y.Text = "0";
+            this.tb_Width_AOI_Mark8_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark8_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // tb_Width_AOI_Mark4_Y
+            // 
+            this.tb_Width_AOI_Mark4_Y.Location = new System.Drawing.Point(306, 111);
+            this.tb_Width_AOI_Mark4_Y.Name = "tb_Width_AOI_Mark4_Y";
+            this.tb_Width_AOI_Mark4_Y.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark4_Y.TabIndex = 208;
+            this.tb_Width_AOI_Mark4_Y.Text = "0";
+            this.tb_Width_AOI_Mark4_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark4_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // tb_Width_AOI_Mark6_X
+            // 
+            this.tb_Width_AOI_Mark6_X.Location = new System.Drawing.Point(176, 177);
+            this.tb_Width_AOI_Mark6_X.Name = "tb_Width_AOI_Mark6_X";
+            this.tb_Width_AOI_Mark6_X.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark6_X.TabIndex = 207;
+            this.tb_Width_AOI_Mark6_X.Text = "0";
+            this.tb_Width_AOI_Mark6_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark6_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // tb_Width_AOI_Mark2_X
+            // 
+            this.tb_Width_AOI_Mark2_X.Location = new System.Drawing.Point(177, 56);
+            this.tb_Width_AOI_Mark2_X.Name = "tb_Width_AOI_Mark2_X";
+            this.tb_Width_AOI_Mark2_X.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark2_X.TabIndex = 207;
+            this.tb_Width_AOI_Mark2_X.Text = "0";
+            this.tb_Width_AOI_Mark2_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark2_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // label21
+            // 
+            this.label21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.label21.Location = new System.Drawing.Point(2, 232);
+            this.label21.Name = "label21";
+            this.label21.Size = new System.Drawing.Size(167, 21);
+            this.label21.TabIndex = 210;
+            this.label21.Text = "AOI MARK8 [mm]";
+            this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // tb_Width_AOI_Mark6_Y
+            // 
+            this.tb_Width_AOI_Mark6_Y.Location = new System.Drawing.Point(305, 177);
+            this.tb_Width_AOI_Mark6_Y.Name = "tb_Width_AOI_Mark6_Y";
+            this.tb_Width_AOI_Mark6_Y.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark6_Y.TabIndex = 209;
+            this.tb_Width_AOI_Mark6_Y.Text = "0";
+            this.tb_Width_AOI_Mark6_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark6_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // label14
+            // 
+            this.label14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.label14.Location = new System.Drawing.Point(3, 111);
+            this.label14.Name = "label14";
+            this.label14.Size = new System.Drawing.Size(167, 21);
+            this.label14.TabIndex = 210;
+            this.label14.Text = "AOI MARK4 [mm]";
+            this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // label18
+            // 
+            this.label18.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.label18.Location = new System.Drawing.Point(2, 177);
+            this.label18.Name = "label18";
+            this.label18.Size = new System.Drawing.Size(167, 21);
+            this.label18.TabIndex = 211;
+            this.label18.Text = "AOI MARK6 [mm]";
+            this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // tb_Width_AOI_Mark2_Y
+            // 
+            this.tb_Width_AOI_Mark2_Y.Location = new System.Drawing.Point(306, 56);
+            this.tb_Width_AOI_Mark2_Y.Name = "tb_Width_AOI_Mark2_Y";
+            this.tb_Width_AOI_Mark2_Y.Size = new System.Drawing.Size(123, 21);
+            this.tb_Width_AOI_Mark2_Y.TabIndex = 209;
+            this.tb_Width_AOI_Mark2_Y.Text = "0";
+            this.tb_Width_AOI_Mark2_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.tb_Width_AOI_Mark2_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
+            // 
+            // label15
+            // 
+            this.label15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.label15.Location = new System.Drawing.Point(3, 56);
+            this.label15.Name = "label15";
+            this.label15.Size = new System.Drawing.Size(167, 21);
+            this.label15.TabIndex = 211;
+            this.label15.Text = "AOI MARK2 [mm]";
+            this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // label16
+            // 
+            this.label16.BackColor = System.Drawing.Color.LightCoral;
+            this.label16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.label16.Location = new System.Drawing.Point(306, 5);
+            this.label16.Name = "label16";
+            this.label16.Size = new System.Drawing.Size(123, 21);
+            this.label16.TabIndex = 213;
+            this.label16.Text = "ULD HANDLER 1 Y";
+            this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // label17
+            // 
+            this.label17.BackColor = System.Drawing.Color.LightCoral;
+            this.label17.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.label17.Location = new System.Drawing.Point(177, 5);
+            this.label17.Name = "label17";
+            this.label17.Size = new System.Drawing.Size(123, 21);
+            this.label17.TabIndex = 212;
+            this.label17.Text = "ULD HANDLER 1 X";
+            this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
             // tabPage4
             // 
             this.tabPage4.Controls.Add(this.lb_Aoi_pick_offset);
@@ -2183,7 +2518,7 @@
             this.tabPage4.Location = new System.Drawing.Point(4, 22);
             this.tabPage4.Name = "tabPage4";
             this.tabPage4.Padding = new System.Windows.Forms.Padding(3);
-            this.tabPage4.Size = new System.Drawing.Size(442, 166);
+            this.tabPage4.Size = new System.Drawing.Size(442, 283);
             this.tabPage4.TabIndex = 1;
             this.tabPage4.Text = "AOI Offset";
             this.tabPage4.UseVisualStyleBackColor = true;
@@ -3183,184 +3518,6 @@
             this.btn_Vision_Info_Refresh.UseVisualStyleBackColor = true;
             this.btn_Vision_Info_Refresh.Click += new System.EventHandler(this.btn_Vision_Info_Refresh_Click);
             // 
-            // tabPage6
-            // 
-            this.tabPage6.Controls.Add(this.label11);
-            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark3_X);
-            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark1_X);
-            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark3_Y);
-            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark1_Y);
-            this.tabPage6.Controls.Add(this.label12);
-            this.tabPage6.Controls.Add(this.label13);
-            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark4_X);
-            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark4_Y);
-            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark2_X);
-            this.tabPage6.Controls.Add(this.label14);
-            this.tabPage6.Controls.Add(this.tb_Width_AOI_Mark2_Y);
-            this.tabPage6.Controls.Add(this.label15);
-            this.tabPage6.Controls.Add(this.label16);
-            this.tabPage6.Controls.Add(this.label17);
-            this.tabPage6.Location = new System.Drawing.Point(4, 22);
-            this.tabPage6.Name = "tabPage6";
-            this.tabPage6.Padding = new System.Windows.Forms.Padding(3);
-            this.tabPage6.Size = new System.Drawing.Size(442, 166);
-            this.tabPage6.TabIndex = 2;
-            this.tabPage6.Text = "Width AOI Position";
-            this.tabPage6.UseVisualStyleBackColor = true;
-            // 
-            // label11
-            // 
-            this.label11.BackColor = System.Drawing.Color.LightCoral;
-            this.label11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-            this.label11.Location = new System.Drawing.Point(3, 5);
-            this.label11.Name = "label11";
-            this.label11.Size = new System.Drawing.Size(167, 21);
-            this.label11.TabIndex = 214;
-            this.label11.Text = "AOI MEASUREMENT";
-            this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-            // 
-            // tb_Width_AOI_Mark3_X
-            // 
-            this.tb_Width_AOI_Mark3_X.Location = new System.Drawing.Point(177, 84);
-            this.tb_Width_AOI_Mark3_X.Name = "tb_Width_AOI_Mark3_X";
-            this.tb_Width_AOI_Mark3_X.Size = new System.Drawing.Size(123, 21);
-            this.tb_Width_AOI_Mark3_X.TabIndex = 200;
-            this.tb_Width_AOI_Mark3_X.Text = "0";
-            this.tb_Width_AOI_Mark3_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
-            this.tb_Width_AOI_Mark3_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
-            // 
-            // tb_Width_AOI_Mark1_X
-            // 
-            this.tb_Width_AOI_Mark1_X.Location = new System.Drawing.Point(177, 29);
-            this.tb_Width_AOI_Mark1_X.Name = "tb_Width_AOI_Mark1_X";
-            this.tb_Width_AOI_Mark1_X.Size = new System.Drawing.Size(123, 21);
-            this.tb_Width_AOI_Mark1_X.TabIndex = 201;
-            this.tb_Width_AOI_Mark1_X.Text = "0";
-            this.tb_Width_AOI_Mark1_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
-            this.tb_Width_AOI_Mark1_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
-            // 
-            // tb_Width_AOI_Mark3_Y
-            // 
-            this.tb_Width_AOI_Mark3_Y.Location = new System.Drawing.Point(306, 84);
-            this.tb_Width_AOI_Mark3_Y.Name = "tb_Width_AOI_Mark3_Y";
-            this.tb_Width_AOI_Mark3_Y.Size = new System.Drawing.Size(123, 21);
-            this.tb_Width_AOI_Mark3_Y.TabIndex = 202;
-            this.tb_Width_AOI_Mark3_Y.Text = "0";
-            this.tb_Width_AOI_Mark3_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
-            this.tb_Width_AOI_Mark3_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
-            // 
-            // tb_Width_AOI_Mark1_Y
-            // 
-            this.tb_Width_AOI_Mark1_Y.Location = new System.Drawing.Point(306, 29);
-            this.tb_Width_AOI_Mark1_Y.Name = "tb_Width_AOI_Mark1_Y";
-            this.tb_Width_AOI_Mark1_Y.Size = new System.Drawing.Size(123, 21);
-            this.tb_Width_AOI_Mark1_Y.TabIndex = 203;
-            this.tb_Width_AOI_Mark1_Y.Text = "0";
-            this.tb_Width_AOI_Mark1_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
-            this.tb_Width_AOI_Mark1_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
-            // 
-            // label12
-            // 
-            this.label12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-            this.label12.Location = new System.Drawing.Point(3, 84);
-            this.label12.Name = "label12";
-            this.label12.Size = new System.Drawing.Size(167, 21);
-            this.label12.TabIndex = 204;
-            this.label12.Text = "AOI MARK3 [mm]";
-            this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-            // 
-            // label13
-            // 
-            this.label13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-            this.label13.Location = new System.Drawing.Point(3, 29);
-            this.label13.Name = "label13";
-            this.label13.Size = new System.Drawing.Size(167, 21);
-            this.label13.TabIndex = 205;
-            this.label13.Text = "AOI MARK 1 [mm]";
-            this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-            // 
-            // tb_Width_AOI_Mark4_X
-            // 
-            this.tb_Width_AOI_Mark4_X.Location = new System.Drawing.Point(177, 111);
-            this.tb_Width_AOI_Mark4_X.Name = "tb_Width_AOI_Mark4_X";
-            this.tb_Width_AOI_Mark4_X.Size = new System.Drawing.Size(123, 21);
-            this.tb_Width_AOI_Mark4_X.TabIndex = 206;
-            this.tb_Width_AOI_Mark4_X.Text = "0";
-            this.tb_Width_AOI_Mark4_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
-            this.tb_Width_AOI_Mark4_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
-            // 
-            // tb_Width_AOI_Mark4_Y
-            // 
-            this.tb_Width_AOI_Mark4_Y.Location = new System.Drawing.Point(306, 111);
-            this.tb_Width_AOI_Mark4_Y.Name = "tb_Width_AOI_Mark4_Y";
-            this.tb_Width_AOI_Mark4_Y.Size = new System.Drawing.Size(123, 21);
-            this.tb_Width_AOI_Mark4_Y.TabIndex = 208;
-            this.tb_Width_AOI_Mark4_Y.Text = "0";
-            this.tb_Width_AOI_Mark4_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
-            this.tb_Width_AOI_Mark4_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
-            // 
-            // tb_Width_AOI_Mark2_X
-            // 
-            this.tb_Width_AOI_Mark2_X.Location = new System.Drawing.Point(177, 56);
-            this.tb_Width_AOI_Mark2_X.Name = "tb_Width_AOI_Mark2_X";
-            this.tb_Width_AOI_Mark2_X.Size = new System.Drawing.Size(123, 21);
-            this.tb_Width_AOI_Mark2_X.TabIndex = 207;
-            this.tb_Width_AOI_Mark2_X.Text = "0";
-            this.tb_Width_AOI_Mark2_X.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
-            this.tb_Width_AOI_Mark2_X.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
-            // 
-            // label14
-            // 
-            this.label14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-            this.label14.Location = new System.Drawing.Point(3, 111);
-            this.label14.Name = "label14";
-            this.label14.Size = new System.Drawing.Size(167, 21);
-            this.label14.TabIndex = 210;
-            this.label14.Text = "AOI MARK4 [mm]";
-            this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-            // 
-            // tb_Width_AOI_Mark2_Y
-            // 
-            this.tb_Width_AOI_Mark2_Y.Location = new System.Drawing.Point(306, 56);
-            this.tb_Width_AOI_Mark2_Y.Name = "tb_Width_AOI_Mark2_Y";
-            this.tb_Width_AOI_Mark2_Y.Size = new System.Drawing.Size(123, 21);
-            this.tb_Width_AOI_Mark2_Y.TabIndex = 209;
-            this.tb_Width_AOI_Mark2_Y.Text = "0";
-            this.tb_Width_AOI_Mark2_Y.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
-            this.tb_Width_AOI_Mark2_Y.TextChanged += new System.EventHandler(this.tb_Vision_Info_Recipe_TextChanged);
-            // 
-            // label15
-            // 
-            this.label15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-            this.label15.Location = new System.Drawing.Point(3, 56);
-            this.label15.Name = "label15";
-            this.label15.Size = new System.Drawing.Size(167, 21);
-            this.label15.TabIndex = 211;
-            this.label15.Text = "AOI MARK2 [mm]";
-            this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-            // 
-            // label16
-            // 
-            this.label16.BackColor = System.Drawing.Color.LightCoral;
-            this.label16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-            this.label16.Location = new System.Drawing.Point(306, 5);
-            this.label16.Name = "label16";
-            this.label16.Size = new System.Drawing.Size(123, 21);
-            this.label16.TabIndex = 213;
-            this.label16.Text = "ULD HANDLER 1 Y";
-            this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-            // 
-            // label17
-            // 
-            this.label17.BackColor = System.Drawing.Color.LightCoral;
-            this.label17.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-            this.label17.Location = new System.Drawing.Point(177, 5);
-            this.label17.Name = "label17";
-            this.label17.Size = new System.Drawing.Size(123, 21);
-            this.label17.TabIndex = 212;
-            this.label17.Text = "ULD HANDLER 1 X";
-            this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-            // 
             // Form_Recipe_Type
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
@@ -3413,6 +3570,8 @@
             this.tabControl3.ResumeLayout(false);
             this.tabPage3.ResumeLayout(false);
             this.tabPage3.PerformLayout();
+            this.tabPage6.ResumeLayout(false);
+            this.tabPage6.PerformLayout();
             this.tabPage4.ResumeLayout(false);
             this.tabPage4.PerformLayout();
             this.tabControl2.ResumeLayout(false);
@@ -3427,8 +3586,6 @@
             this.tab_PreAlignOffset.PerformLayout();
             this.tab_LoaderHandler1Position.ResumeLayout(false);
             this.tab_LoaderHandler1Position.PerformLayout();
-            this.tabPage6.ResumeLayout(false);
-            this.tabPage6.PerformLayout();
             this.ResumeLayout(false);
 
         }
@@ -3702,5 +3859,18 @@
         private System.Windows.Forms.Label label15;
         private System.Windows.Forms.Label label16;
         private System.Windows.Forms.Label label17;
+        private System.Windows.Forms.CheckBox cb_Width_AOI_8Use;
+        private System.Windows.Forms.TextBox tb_Width_AOI_Mark7_X;
+        private System.Windows.Forms.TextBox tb_Width_AOI_Mark5_X;
+        private System.Windows.Forms.TextBox tb_Width_AOI_Mark7_Y;
+        private System.Windows.Forms.TextBox tb_Width_AOI_Mark5_Y;
+        private System.Windows.Forms.Label label24;
+        private System.Windows.Forms.Label label23;
+        private System.Windows.Forms.TextBox tb_Width_AOI_Mark8_X;
+        private System.Windows.Forms.TextBox tb_Width_AOI_Mark8_Y;
+        private System.Windows.Forms.TextBox tb_Width_AOI_Mark6_X;
+        private System.Windows.Forms.Label label21;
+        private System.Windows.Forms.TextBox tb_Width_AOI_Mark6_Y;
+        private System.Windows.Forms.Label label18;
     }
 }
\ No newline at end of file
diff --git a/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.cs b/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.cs
index 6b39340..8cb7768 100644
--- a/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.cs
+++ b/SHARP_CLAS_UI/100.Screen/Form_Recipe_Type.cs
@@ -747,6 +747,46 @@
                             cur_vision_info_recipe.Width_AOI_Mark4_Y = value_double;
                             break;
                         }
+                    case "tb_Width_AOI_Mark5_X":
+                        {
+                            cur_vision_info_recipe.Width_AOI_Mark5_X = value_double;
+                            break;
+                        }
+                    case "tb_Width_AOI_Mark5_Y":
+                        {
+                            cur_vision_info_recipe.Width_AOI_Mark5_Y = value_double;
+                            break;
+                        }
+                    case "tb_Width_AOI_Mark6_X":
+                        {
+                            cur_vision_info_recipe.Width_AOI_Mark6_X = value_double;
+                            break;
+                        }
+                    case "tb_Width_AOI_Mark6_Y":
+                        {
+                            cur_vision_info_recipe.Width_AOI_Mark6_Y = value_double;
+                            break;
+                        }
+                    case "tb_Width_AOI_Mark7_X":
+                        {
+                            cur_vision_info_recipe.Width_AOI_Mark7_X = value_double;
+                            break;
+                        }
+                    case "tb_Width_AOI_Mark7_Y":
+                        {
+                            cur_vision_info_recipe.Width_AOI_Mark7_Y = value_double;
+                            break;
+                        }
+                    case "tb_Width_AOI_Mark8_X":
+                        {
+                            cur_vision_info_recipe.Width_AOI_Mark8_X = value_double;
+                            break;
+                        }
+                    case "tb_Width_AOI_Mark8_Y":
+                        {
+                            cur_vision_info_recipe.Width_AOI_Mark8_Y = value_double;
+                            break;
+                        }
                     case "tb_AOI_Before_Left_T":
                         {
                             cur_vision_info_recipe.AOI_Before_Left_T = value_double;
@@ -1921,6 +1961,17 @@
             tb_Width_AOI_Mark4_X.Text = cur_vision_info_recipe.Width_AOI_Mark4_X.ToString();
             tb_Width_AOI_Mark4_Y.Text = cur_vision_info_recipe.Width_AOI_Mark4_Y.ToString();
 
+            tb_Width_AOI_Mark5_X.Text = cur_vision_info_recipe.Width_AOI_Mark5_X.ToString();
+            tb_Width_AOI_Mark5_Y.Text = cur_vision_info_recipe.Width_AOI_Mark5_Y.ToString();
+            tb_Width_AOI_Mark6_X.Text = cur_vision_info_recipe.Width_AOI_Mark6_X.ToString();
+            tb_Width_AOI_Mark6_Y.Text = cur_vision_info_recipe.Width_AOI_Mark6_Y.ToString();
+            tb_Width_AOI_Mark7_X.Text = cur_vision_info_recipe.Width_AOI_Mark7_X.ToString();
+            tb_Width_AOI_Mark7_Y.Text = cur_vision_info_recipe.Width_AOI_Mark7_Y.ToString();
+            tb_Width_AOI_Mark8_X.Text = cur_vision_info_recipe.Width_AOI_Mark8_X.ToString();
+            tb_Width_AOI_Mark8_Y.Text = cur_vision_info_recipe.Width_AOI_Mark8_Y.ToString();
+
+            cb_Width_AOI_8Use.Checked = cur_vision_info_recipe.Width_AOI_8Use;
+
             tb_AOI_Before_Left_T.Text = cur_vision_info_recipe.AOI_Before_Left_T.ToString();
             tb_AOI_Before_Right_T.Text = cur_vision_info_recipe.AOI_Before_Right_T.ToString();
             tb_AOI_After_Left_T.Text = cur_vision_info_recipe.AOI_After_Left_T.ToString();
@@ -2001,6 +2052,8 @@
             
             cb_AoiMark34Use.BackColor = recipe.AoiMark34Use == cur_vision_info_recipe.AoiMark34Use ? Color.White : Color.Red;
 
+            cb_Width_AOI_8Use.BackColor = recipe.Width_AOI_8Use == cur_vision_info_recipe.Width_AOI_8Use ? Color.White : Color.Red;
+
             tb_Pre_Align_Offset_Left_X.BackColor = cur_vision_info_recipe.Pre_Align_Offset_Left_X == recipe.Pre_Align_Offset_Left_X? Color.White : Color.Red;
             tb_Pre_Align_Offset_Left_Y.BackColor = cur_vision_info_recipe.Pre_Align_Offset_Left_Y == recipe.Pre_Align_Offset_Left_Y? Color.White : Color.Red;
             tb_Pre_Align_Offset_Left_T.BackColor = cur_vision_info_recipe.Pre_Align_Offset_Left_T == recipe.Pre_Align_Offset_Left_T? Color.White : Color.Red;
@@ -2043,7 +2096,7 @@
             tb_AOI_Mark3_Y.BackColor = cur_vision_info_recipe.AOI_Mark3_Y == recipe.AOI_Mark3_Y ? Color.White : Color.Red;
             tb_AOI_Mark4_X.BackColor = cur_vision_info_recipe.AOI_Mark4_X == recipe.AOI_Mark4_X ? Color.White : Color.Red;
             tb_AOI_Mark4_Y.BackColor = cur_vision_info_recipe.AOI_Mark4_Y == recipe.AOI_Mark4_Y ? Color.White : Color.Red;
-
+            
             tb_Width_AOI_Mark1_X.BackColor = cur_vision_info_recipe.Width_AOI_Mark1_X == recipe.Width_AOI_Mark1_X ? Color.White : Color.Red;
             tb_Width_AOI_Mark1_Y.BackColor = cur_vision_info_recipe.Width_AOI_Mark1_Y == recipe.Width_AOI_Mark1_Y ? Color.White : Color.Red;
             tb_Width_AOI_Mark2_X.BackColor = cur_vision_info_recipe.Width_AOI_Mark2_X == recipe.Width_AOI_Mark2_X ? Color.White : Color.Red;
@@ -2052,6 +2105,15 @@
             tb_Width_AOI_Mark3_Y.BackColor = cur_vision_info_recipe.Width_AOI_Mark3_Y == recipe.Width_AOI_Mark3_Y ? Color.White : Color.Red;
             tb_Width_AOI_Mark4_X.BackColor = cur_vision_info_recipe.Width_AOI_Mark4_X == recipe.Width_AOI_Mark4_X ? Color.White : Color.Red;
             tb_Width_AOI_Mark4_Y.BackColor = cur_vision_info_recipe.Width_AOI_Mark4_Y == recipe.Width_AOI_Mark4_Y ? Color.White : Color.Red;
+
+            tb_Width_AOI_Mark5_X.BackColor = cur_vision_info_recipe.Width_AOI_Mark5_X == recipe.Width_AOI_Mark5_X ? Color.White : Color.Red;
+            tb_Width_AOI_Mark5_Y.BackColor = cur_vision_info_recipe.Width_AOI_Mark5_Y == recipe.Width_AOI_Mark5_Y ? Color.White : Color.Red;
+            tb_Width_AOI_Mark6_X.BackColor = cur_vision_info_recipe.Width_AOI_Mark6_X == recipe.Width_AOI_Mark6_X ? Color.White : Color.Red;
+            tb_Width_AOI_Mark6_Y.BackColor = cur_vision_info_recipe.Width_AOI_Mark6_Y == recipe.Width_AOI_Mark6_Y ? Color.White : Color.Red;
+            tb_Width_AOI_Mark7_X.BackColor = cur_vision_info_recipe.Width_AOI_Mark7_X == recipe.Width_AOI_Mark7_X ? Color.White : Color.Red;
+            tb_Width_AOI_Mark7_Y.BackColor = cur_vision_info_recipe.Width_AOI_Mark7_Y == recipe.Width_AOI_Mark7_Y ? Color.White : Color.Red;
+            tb_Width_AOI_Mark8_X.BackColor = cur_vision_info_recipe.Width_AOI_Mark8_X == recipe.Width_AOI_Mark8_X ? Color.White : Color.Red;
+            tb_Width_AOI_Mark8_Y.BackColor = cur_vision_info_recipe.Width_AOI_Mark8_Y == recipe.Width_AOI_Mark8_Y ? Color.White : Color.Red;
 
             tb_AOI_Before_Left_T.BackColor = cur_vision_info_recipe.AOI_Before_Left_T == recipe.AOI_Before_Left_T ? Color.White : Color.Red;
             tb_AOI_Before_Right_T.BackColor = cur_vision_info_recipe.AOI_Before_Right_T == recipe.AOI_Before_Right_T ? Color.White : Color.Red;
@@ -2118,6 +2180,14 @@
             cur_vision_info_recipe.AoiMark34Use = cb_AoiMark34Use.Checked;
             On_Vision_Info_Receipe_Event(Recipe_Event_Status.Update);
         }
+
+        private void cb_Width_AOI_8Use_CheckedChanged(object sender, EventArgs e)
+        {
+            if (cur_vision_info_recipe == null) return;
+
+            cur_vision_info_recipe.Width_AOI_8Use = cb_Width_AOI_8Use.Checked;
+            On_Vision_Info_Receipe_Event(Recipe_Event_Status.Update);
+        }
     }
 
     public partial class RecipeEventArgs:EventArgs
diff --git a/SHARP_CLAS_UI/300.Etc_Screen/Form_User_Command_Set.Designer.cs b/SHARP_CLAS_UI/300.Etc_Screen/Form_User_Command_Set.Designer.cs
index 47583f5..18ebfba 100644
--- a/SHARP_CLAS_UI/300.Etc_Screen/Form_User_Command_Set.Designer.cs
+++ b/SHARP_CLAS_UI/300.Etc_Screen/Form_User_Command_Set.Designer.cs
@@ -51,11 +51,13 @@
             // rb_Retry
             // 
             this.rb_Retry.AutoSize = true;
+            this.rb_Retry.Checked = true;
             this.rb_Retry.Font = new System.Drawing.Font("Gulim", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
             this.rb_Retry.Location = new System.Drawing.Point(82, 12);
             this.rb_Retry.Name = "rb_Retry";
             this.rb_Retry.Size = new System.Drawing.Size(59, 19);
             this.rb_Retry.TabIndex = 1;
+            this.rb_Retry.TabStop = true;
             this.rb_Retry.Text = "Retry";
             this.rb_Retry.UseVisualStyleBackColor = true;
             // 
@@ -86,13 +88,11 @@
             // rb_User
             // 
             this.rb_User.AutoSize = true;
-            this.rb_User.Checked = true;
             this.rb_User.Font = new System.Drawing.Font("Gulim", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
             this.rb_User.Location = new System.Drawing.Point(147, 12);
             this.rb_User.Name = "rb_User";
             this.rb_User.Size = new System.Drawing.Size(114, 19);
             this.rb_User.TabIndex = 4;
-            this.rb_User.TabStop = true;
             this.rb_User.Text = "User(Manual)";
             this.rb_User.UseVisualStyleBackColor = true;
             // 
diff --git a/SHARP_CLAS_UI/300.Etc_Screen/Form_User_Command_Set.cs b/SHARP_CLAS_UI/300.Etc_Screen/Form_User_Command_Set.cs
index 33da835..4361e3d 100644
--- a/SHARP_CLAS_UI/300.Etc_Screen/Form_User_Command_Set.cs
+++ b/SHARP_CLAS_UI/300.Etc_Screen/Form_User_Command_Set.cs
@@ -15,6 +15,11 @@
             Command_Type = En_User_Command.None;
         }
 
+        public void UserManualEnable(bool enable)
+        {
+            rb_User.Enabled = enable;
+        }
+
         private void btn_OK_Click(object sender, EventArgs e)
         {
             if (rb_Scrap.Checked == true)
diff --git a/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Client_AOI.cs b/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Client_AOI.cs
index f628700..7ad69bc 100644
--- a/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Client_AOI.cs
+++ b/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Client_AOI.cs
@@ -641,10 +641,12 @@
 
                                     if (measurement_result_Ack.moduleIdx == (int)En_Module_Idx.Left)
                                     {
-                                        WriteClientLog($"[Recv]Width Measurement Left Result, Result : {measurement_result_Ack.measurement_result}, Mark1Width : {measurement_result_Ack.Mark1Width}, Mark2Width : {measurement_result_Ack.Mark2Width}");
+                                        WriteClientLog($"[Recv]Width Measurement Left Result, Result : {measurement_result_Ack.measurement_result}, Mark1Width : {measurement_result_Ack.Mark1Width}, Mark2Width : {measurement_result_Ack.Mark2Width}, Mark3Width : {measurement_result_Ack.Mark3Width}, Mark4Width : {measurement_result_Ack.Mark4Width}");
                                         sm.Set_Value(Vision_Address.Measurement_Left_Result, measurement_result_Ack.measurement_result);
                                         sm.Set_Value(Vision_Address.Measurement_Left_Mark_1_Point_1, measurement_result_Ack.Mark1Width);
                                         sm.Set_Value(Vision_Address.Measurement_Left_Mark_2_Point_1, measurement_result_Ack.Mark2Width);
+                                        sm.Set_Value(Vision_Address.Measurement_Left_Mark_3_Point_1, measurement_result_Ack.Mark3Width);
+                                        sm.Set_Value(Vision_Address.Measurement_Left_Mark_4_Point_1, measurement_result_Ack.Mark4Width);
                                         sm.Set_Bit(Vision_Address.Measurement_Left_Ack, true);
                                     }
                                     break;
@@ -655,10 +657,12 @@
                                     vision_control.Recv_WidthMeasurement_Result(Recvdata, out measurement_result_Ack);
                                     if (measurement_result_Ack.moduleIdx == (int)En_Module_Idx.Right)
                                     {
-                                        WriteClientLog($"[Recv]Width Measurement Right Result, Result : {measurement_result_Ack.measurement_result}, Mark1Width : {measurement_result_Ack.Mark1Width}, Mark2Width : {measurement_result_Ack.Mark2Width}");
+                                        WriteClientLog($"[Recv]Width Measurement Right Result, Result : {measurement_result_Ack.measurement_result}, Mark1Width : {measurement_result_Ack.Mark1Width}, Mark2Width : {measurement_result_Ack.Mark2Width}, Mark3Width : {measurement_result_Ack.Mark3Width}, Mark4Width : {measurement_result_Ack.Mark4Width}");
                                         sm.Set_Value(Vision_Address.Measurement_Right_Result, measurement_result_Ack.measurement_result);
                                         sm.Set_Value(Vision_Address.Measurement_Right_Mark_1_Point_1, measurement_result_Ack.Mark1Width);
                                         sm.Set_Value(Vision_Address.Measurement_Right_Mark_2_Point_1, measurement_result_Ack.Mark2Width);
+                                        sm.Set_Value(Vision_Address.Measurement_Right_Mark_3_Point_1, measurement_result_Ack.Mark3Width);
+                                        sm.Set_Value(Vision_Address.Measurement_Right_Mark_4_Point_1, measurement_result_Ack.Mark4Width);
                                         sm.Set_Bit(Vision_Address.Measurement_Right_Ack, true);
                                     }
                                     break;
diff --git a/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Define.cs b/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Define.cs
index 479cbf2..71617cf 100644
--- a/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Define.cs
+++ b/SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Vision_Define.cs
@@ -171,14 +171,18 @@
         public int measurement_result { get; private set; }
         public double Mark1Width { get; private set; }
         public double Mark2Width { get; private set; }
+        public double Mark3Width { get; private set; }
+        public double Mark4Width { get; private set; }
 
-        public WidthMeasurementResultAck(int msg_Index = 0, int moduleIdx = 0, int measurement_result = 0, double mark1Width = 0, double mark2Width = 0)
+        public WidthMeasurementResultAck(int msg_Index = 0, int moduleIdx = 0, int measurement_result = 0, double mark1Width = 0, double mark2Width = 0, double mark3Width = 0, double mark4Width = 0)
         {
             this.msg_Index = msg_Index;
             this.moduleIdx = moduleIdx;
             this.measurement_result = measurement_result;
             this.Mark1Width = mark1Width;
             this.Mark2Width = mark2Width;
+            this.Mark3Width = mark3Width;
+            this.Mark4Width = mark4Width;
         }
     }
 
diff --git a/SHARP_CLAS_UI/500.Equipment/400.Module/300.CIM/CIM_Client.cs b/SHARP_CLAS_UI/500.Equipment/400.Module/300.CIM/CIM_Client.cs
index 8609d98..0fffe55 100644
--- a/SHARP_CLAS_UI/500.Equipment/400.Module/300.CIM/CIM_Client.cs
+++ b/SHARP_CLAS_UI/500.Equipment/400.Module/300.CIM/CIM_Client.cs
@@ -597,8 +597,16 @@
             data_etc += $"{info.AblationTargetPower:f3}" + ",";
             data_etc += $"{info.Film_Judge_Result:f3}" + ",";
             data_etc += $"{info.Fine_Align_Distatnce:f3}" + ",";
+            data_etc += $"{info.Mark1Width:f3}" + ",";
+            data_etc += $"{info.Mark2Width:f3}" + ",";
+            data_etc += $"{info.Mark3Width:f3}" + ",";
+            data_etc += $"{info.Mark4Width:f3}" + ",";
+            data_etc += $"{info.Mark5Width:f3}" + ",";
+            data_etc += $"{info.Mark6Width:f3}" + ",";
+            data_etc += $"{info.Mark7Width:f3}" + ",";
+            data_etc += $"{info.Mark8Width:f3}" + ",";
 
-            for (int i = 94; i < 380; i++)
+            for (int i = 86; i < 380; i++)
             {
                 data_etc += $",";
             }
diff --git a/SHARP_CLAS_UI/500.Equipment/500.Recipe/200.Vision_Info/Vision_Info_Recipe.cs b/SHARP_CLAS_UI/500.Equipment/500.Recipe/200.Vision_Info/Vision_Info_Recipe.cs
index ba4a06d..1bc598f 100644
--- a/SHARP_CLAS_UI/500.Equipment/500.Recipe/200.Vision_Info/Vision_Info_Recipe.cs
+++ b/SHARP_CLAS_UI/500.Equipment/500.Recipe/200.Vision_Info/Vision_Info_Recipe.cs
@@ -64,6 +64,15 @@
         public double Width_AOI_Mark3_Y { get; set; }
         public double Width_AOI_Mark4_X { get; set; }
         public double Width_AOI_Mark4_Y { get; set; }
+        public double Width_AOI_Mark5_X { get; set; }
+        public double Width_AOI_Mark5_Y { get; set; }
+        public double Width_AOI_Mark6_X { get; set; }
+        public double Width_AOI_Mark6_Y { get; set; }
+        public double Width_AOI_Mark7_X { get; set; }
+        public double Width_AOI_Mark7_Y { get; set; }
+        public double Width_AOI_Mark8_X { get; set; }
+        public double Width_AOI_Mark8_Y { get; set; }
+        public bool Width_AOI_8Use { get; set; }
 
         public double AOI_Before_Left_T { get; set; }
         public double AOI_Before_Right_T { get; set; }
@@ -131,6 +140,15 @@
             Width_AOI_Mark3_Y = 0;
             Width_AOI_Mark4_X = 0;
             Width_AOI_Mark4_Y = 0;
+            Width_AOI_Mark5_X = 0;
+            Width_AOI_Mark5_Y = 0;
+            Width_AOI_Mark6_X = 0;
+            Width_AOI_Mark6_Y = 0;
+            Width_AOI_Mark7_X = 0;
+            Width_AOI_Mark7_Y = 0;
+            Width_AOI_Mark8_X = 0;
+            Width_AOI_Mark8_Y = 0;
+            Width_AOI_8Use = false;
 
             AOI_Before_Left_T = 0;
             AOI_Before_Right_T = 0;
@@ -196,6 +214,15 @@
             info.Width_AOI_Mark3_Y = this.Width_AOI_Mark3_Y;
             info.Width_AOI_Mark4_X = this.Width_AOI_Mark4_X;
             info.Width_AOI_Mark4_Y = this.Width_AOI_Mark4_Y;
+            info.Width_AOI_Mark5_X = this.Width_AOI_Mark5_X;
+            info.Width_AOI_Mark5_Y = this.Width_AOI_Mark5_Y;
+            info.Width_AOI_Mark6_X = this.Width_AOI_Mark6_X;
+            info.Width_AOI_Mark6_Y = this.Width_AOI_Mark6_Y;
+            info.Width_AOI_Mark7_X = this.Width_AOI_Mark7_X;
+            info.Width_AOI_Mark7_Y = this.Width_AOI_Mark7_Y;
+            info.Width_AOI_Mark8_X = this.Width_AOI_Mark8_X;
+            info.Width_AOI_Mark8_Y = this.Width_AOI_Mark8_Y;
+            info.Width_AOI_8Use = this.Width_AOI_8Use;
             info.AOI_Before_Left_T = this.AOI_Before_Left_T;
             info.AOI_Before_Right_T = this.AOI_Before_Right_T;
             info.AOI_After_Left_T = this.AOI_After_Left_T;
diff --git a/SHARP_CLAS_UI/500.Equipment/600.Info/000.Panel_Info/Panel_Info.cs b/SHARP_CLAS_UI/500.Equipment/600.Info/000.Panel_Info/Panel_Info.cs
index 50b7fa6..50b09db 100644
--- a/SHARP_CLAS_UI/500.Equipment/600.Info/000.Panel_Info/Panel_Info.cs
+++ b/SHARP_CLAS_UI/500.Equipment/600.Info/000.Panel_Info/Panel_Info.cs
@@ -66,6 +66,10 @@
         public double Mark2Width { get; set; }
         public double Mark3Width { get; set; }
         public double Mark4Width { get; set; }
+        public double Mark5Width { get; set; }
+        public double Mark6Width { get; set; }
+        public double Mark7Width { get; set; }
+        public double Mark8Width { get; set; }
 
         public int Stage_Num { get; set; }
 
@@ -136,6 +140,10 @@
             info.Mark2Width = this.Mark2Width;
             info.Mark3Width = this.Mark3Width;
             info.Mark4Width = this.Mark4Width;
+            info.Mark5Width = this.Mark5Width;
+            info.Mark6Width = this.Mark6Width;
+            info.Mark7Width = this.Mark7Width;
+            info.Mark8Width = this.Mark8Width;
             info.Stage_Num = this.Stage_Num;
             info.Start_Time = this.Start_Time;
             info.End_Time = this.End_Time;
diff --git a/SHARP_CLAS_UI/500.Equipment/700.Unit/400.Unloader/ULD_Handler_1.cs b/SHARP_CLAS_UI/500.Equipment/700.Unit/400.Unloader/ULD_Handler_1.cs
index 3ccf432..ffc0a8f 100644
--- a/SHARP_CLAS_UI/500.Equipment/700.Unit/400.Unloader/ULD_Handler_1.cs
+++ b/SHARP_CLAS_UI/500.Equipment/700.Unit/400.Unloader/ULD_Handler_1.cs
@@ -1694,6 +1694,7 @@
                                 }
                                 else
                                 {
+                                    equipment.WidthMeasurementCount = 0;
                                     measurement_retry_cnt = 0;
                                     Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY;
                                 }
@@ -2091,7 +2092,7 @@
                         {
                             sequenceChangedTime.Start();
 
-                            Step = UnloaderHandler1Steps.S4650_MEASUREMENT_CHECK;
+                            Step = UnloaderHandler1Steps.S4630_MOVE_MEASUREMENT_MARK3_POSITION;
                             return;
                         }
 
@@ -2104,7 +2105,7 @@
                     {
                         if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Right_Ack))
                         {
-                            Step = UnloaderHandler1Steps.S4650_MEASUREMENT_CHECK;
+                            Step = UnloaderHandler1Steps.S4630_MOVE_MEASUREMENT_MARK3_POSITION;
                         }
                         else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout)
                         {
@@ -2285,17 +2286,15 @@
                         var info2 = aoistage.Panel2;
 
                         object value;
-                        bool result;
                         if ((isAoiPanel1WidthMeasurementAck || equipment.sm.Get_Bit(Vision_Address.Measurement_Left_Ack))
                             && (isAoiPanel2WidthMeasurementAck || equipment.sm.Get_Bit(Vision_Address.Measurement_Right_Ack)))
                         {
                             if (aoistage.Stage1.IsExist && info1.WidthMeasurement_Ack == false)
                             {
-                                info1.WidthMeasurement_Ack = true;
-
-                                if (equipment.sm.Get_Bit(Vision_Address.Measurement_Left_Result, out result))
+                                if (equipment.sm.Get_Bit(Vision_Address.Measurement_Left_Result))
                                 {
-                                    info1.WidthMeasurement_Result = result;
+                                    info1.WidthMeasurement_Ack = true;
+                                    info1.WidthMeasurement_Result = true;
 
                                     info1.End_Time = DateTime.Now;
 
@@ -2303,14 +2302,649 @@
                                     info1.Mark1Width = double.Parse(value.ToString());
                                     equipment.sm.Get_Value(Vision_Address.Measurement_Left_Mark_2_Point_1, out value);
                                     info1.Mark2Width = double.Parse(value.ToString());
-                                    //equipment.sm.Get_Value(Vision_Address.Measurement_Left_Mark_3_Point_1, out value);
-                                    //info1.Mark3Point1 = double.Parse(value.ToString());
-                                    //equipment.sm.Get_Value(Vision_Address.Measurement_Left_Mark_4_Point_1, out value);
-                                    //info1.Mark4Point1 = double.Parse(value.ToString());
+                                    equipment.sm.Get_Value(Vision_Address.Measurement_Left_Mark_3_Point_1, out value);
+                                    info1.Mark3Width = double.Parse(value.ToString());
+                                    equipment.sm.Get_Value(Vision_Address.Measurement_Left_Mark_4_Point_1, out value);
+                                    info1.Mark4Width = double.Parse(value.ToString());
 
                                     aoistage.Panel1 = info1;
 
                                     isAoiPanel1WidthMeasurementAck = aoiStage.Stage1.IsExist == false || aoiStage.Panel1.WidthMeasurement_Ack;
+                                }
+                            }
+
+                            if (aoistage.Stage2.IsExist && info2.WidthMeasurement_Ack == false)
+                            {
+                                if (equipment.sm.Get_Bit(Vision_Address.Measurement_Right_Result))
+                                {
+                                    info2.WidthMeasurement_Ack = true;
+                                    info2.WidthMeasurement_Result = true;
+
+                                    info2.End_Time = DateTime.Now;
+
+                                    equipment.sm.Get_Value(Vision_Address.Measurement_Right_Mark_1_Point_1, out value);
+                                    info2.Mark1Width = double.Parse(value.ToString());
+                                    equipment.sm.Get_Value(Vision_Address.Measurement_Right_Mark_2_Point_1, out value);
+                                    info2.Mark2Width = double.Parse(value.ToString());
+                                    equipment.sm.Get_Value(Vision_Address.Measurement_Right_Mark_3_Point_1, out value);
+                                    info2.Mark3Width = double.Parse(value.ToString());
+                                    equipment.sm.Get_Value(Vision_Address.Measurement_Right_Mark_4_Point_1, out value);
+                                    info2.Mark4Width = double.Parse(value.ToString());
+
+                                    aoistage.Panel2 = info2;
+
+                                    isAoiPanel2WidthMeasurementAck = aoiStage.Stage2.IsExist == false || aoiStage.Panel2.WidthMeasurement_Ack;
+                                }
+                            }
+
+                            Tact_Move.Stop();
+                            equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [End]");
+                            equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [Tact : {Tact_Move.Seconds} (sec)]");
+
+                            if (isAoiPanel1WidthMeasurementAck && isAoiPanel2WidthMeasurementAck)
+                            {
+                                if(equipment.Cur_Main_Recipe.vision_info.Width_AOI_8Use)
+                                {
+                                    info1.WidthMeasurement_Ack = false;
+                                    info2.WidthMeasurement_Ack = false;
+                                    info1.WidthMeasurement_Result = false;
+                                    info2.WidthMeasurement_Result = false;
+
+                                    aoistage.Panel1 = info1;
+                                    aoistage.Panel2 = info2;
+
+                                    Step = UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY;
+                                }
+                                else
+                                {
+                                    if (equipment.cim_mode == En_Cim_Mode.Online)
+                                    {
+                                        Step = UnloaderHandler1Steps.S4800_PANEL_LEFT_CIM_SEND;
+                                    }
+                                    else
+                                    {
+                                        Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END;
+                                    }
+                                }
+                            }
+                            else
+                            {
+                                equipment.Aoi_vision.WriteClientLog("no align result");
+                                measurement_retry_cnt++;
+
+                                if (measurement_retry_cnt >= equipment.Setting.Vision_Retry_Count)
+                                {
+                                    Step = UnloaderHandler1Steps.S4660_USER_COMMAND_START;
+                                }
+                                else
+                                {
+                                    Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY;
+                                }
+                            }
+                        }
+                        else
+                        {
+                            if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout)
+                            {
+                                measurement_retry_cnt++;
+
+                                if (measurement_retry_cnt == equipment.Setting.Vision_Retry_Count)
+                                {
+                                    equipment.Aoi_vision.WriteClientLog("no ack result");
+                                    Tact_Move.Stop();
+                                    equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [End]");
+                                    equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [Tact : {Tact_Move.Seconds} (sec)]");
+                                    Step = UnloaderHandler1Steps.S4660_USER_COMMAND_START;
+                                }
+                                else
+                                {
+                                    equipment.Aoi_vision.WriteClientLog("no ack result");
+                                    Tact_Move.Stop();
+                                    equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [End]");
+                                    equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [Tact : {Tact_Move.Seconds} (sec)]");
+                                    Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY;
+                                }
+                            }
+                        }
+
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4660_USER_COMMAND_START:
+                    {
+                        var aoistage = equipment.after.AoiStage;
+                        Panel_Info info1 = aoistage.Panel1;
+                        Panel_Info info2 = aoistage.Panel2;
+
+                        if (aoistage.Stage1.IsExist && info1.WidthMeasurement_Ack == false)
+                        {
+                            Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0886_MEASUREMENT_LEFT_ERROR);
+                        }
+
+                        if (aoistage.Stage2.IsExist && info2.WidthMeasurement_Ack == false)
+                        {
+                            Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0887_MEASUREMENT_RIGHT_ERROR);
+                        }
+
+                        measurement_user_command = new Form_User_Command_Set("Width Measurement");
+                        measurement_user_command.UserManualEnable(false);
+                        measurement_user_command_show = true;
+
+                        Step = UnloaderHandler1Steps.S4670_USER_COMMAND_WAIT;
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4670_USER_COMMAND_WAIT:
+                    {
+                        var aoistage = equipment.after.AoiStage;
+                        Panel_Info info1 = aoistage.Panel1;
+                        Panel_Info info2 = aoistage.Panel2;
+                        
+                        if (measurement_user_command.Command_Type == En_User_Command.Scrap)
+                        {
+                            if (aoistage.Stage1.IsExist && info1.Measurement_Ack == false)
+                            {
+                                aoistage.Panel1 = new Panel_Info();
+                                aoistage.Stage_1_Scrap();
+                                equipment.Aoi_vision.Send_Measurement_Command_Req(0, 0, info1.Tray_Num, info1.Panel_Num, info1.Panel_ID);
+                            }
+
+                            if (aoistage.Stage2.IsExist && info2.Measurement_Ack == false)
+                            {
+                                aoistage.Panel2 = new Panel_Info();
+                                aoistage.Stage_2_Scrap();
+                                equipment.Aoi_vision.Send_Measurement_Command_Req(0, 1, info2.Tray_Num, info2.Panel_Num, info2.Panel_ID);
+                            }
+
+                            Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END;
+                        }
+                        else if (measurement_user_command.Command_Type == En_User_Command.Retry)
+                        {
+                            if (aoistage.Stage1.IsExist && info1.Measurement_Ack == false)
+                            {
+                                equipment.Aoi_vision.Send_Measurement_Command_Req(1, 0, info1.Tray_Num, info1.Panel_Num, info1.Panel_ID);
+                            }
+
+                            if (aoistage.Stage2.IsExist && info2.Measurement_Ack == false)
+                            {
+                                equipment.Aoi_vision.Send_Measurement_Command_Req(1, 1, info2.Tray_Num, info2.Panel_Num, info2.Panel_ID);
+                            }
+
+                            measurement_retry_cnt = 0;
+                            Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY;
+                        }
+                        else if (measurement_user_command.Command_Type == En_User_Command.Skip)
+                        {
+                            if (aoistage.Stage1.IsExist && info1.WidthMeasurement_Ack == false)
+                            {
+                                equipment.sm.Set_Bit(Vision_Address.Measurement_Left_Ack, true);
+                                equipment.sm.Set_Bit(Vision_Address.Measurement_Left_Align_Result, true);
+                                equipment.sm.Set_Bit(Vision_Address.Measurement_Left_Result, false);
+                                equipment.Aoi_vision.Send_Measurement_Command_Req(2, 0, info1.Tray_Num, info1.Panel_Num, info1.Panel_ID);
+                                info1.Measurement_Result = false;
+                                aoistage.Panel1 = info1;
+
+                            }
+
+                            if (aoistage.Stage2.IsExist && info2.Measurement_Ack == false)
+                            {
+                                equipment.sm.Set_Bit(Vision_Address.Measurement_Right_Ack, true);
+                                equipment.sm.Set_Bit(Vision_Address.Measurement_Right_Align_Result, true);
+                                equipment.sm.Set_Bit(Vision_Address.Measurement_Right_Result, false);
+                                equipment.Aoi_vision.Send_Measurement_Command_Req(2, 1, info2.Tray_Num, info2.Panel_Num, info2.Panel_ID);
+                                info2.Measurement_Result = false;
+                                aoistage.Panel2 = info2;
+                            }
+
+                            if (equipment.cim_mode == En_Cim_Mode.Online)
+                            {
+                                Step = UnloaderHandler1Steps.S4800_PANEL_LEFT_CIM_SEND;
+                            }
+                            else
+                            {
+                                Step = UnloaderHandler1Steps.S4999_MEASUREMENT_END;
+                            }
+                        }
+                        break;
+                    }
+                    
+                case UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY:
+                    {
+                        Tact_Move.Start();
+                        equipment.Write_Tact_Time_Log($"ULD Handler 1, AOI Ready [Start]");
+
+                        var info = equipment.after.AoiStage.Panel1;
+
+                        if (isAoiPanel1WidthMeasurementAck)
+                        {
+                            Step = UnloaderHandler1Steps.S4702_RIGHT_CAMERA_GRAB_READY;
+                            return;
+                        }
+
+                        if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Ready_Req(0, 0, 0, info.Stage_Num, info.Tray_Num, info.Panel_Num, info.Panel_ID))
+                            Step = UnloaderHandler1Steps.S4701_LEFT_CAMERA_GRAB_READY_WAIT;
+
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4701_LEFT_CAMERA_GRAB_READY_WAIT:
+                    {
+                        if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Ready_Ack))
+                        {
+                            Step = UnloaderHandler1Steps.S4702_RIGHT_CAMERA_GRAB_READY;
+                        }
+                        else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout)
+                        {
+                            Step = UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY;
+                        }
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4702_RIGHT_CAMERA_GRAB_READY:
+                    {
+                        if (sequenceChangedTime.Seconds < 0.1) break;
+
+                        var info = equipment.after.AoiStage.Panel2;
+
+                        if (isAoiPanel2WidthMeasurementAck)
+                        {
+                            Tact_Move.Stop();
+                            equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Ready [End]");
+                            equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Ready [Tact : {Tact_Move.Seconds} (sec)]");
+
+                            Step = UnloaderHandler1Steps.S4710_MOVE_MEASUREMENT_MARK1_POSITION;
+                            return;
+                        }
+
+                        if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Ready_Req(1, 0, 0, info.Stage_Num, info.Tray_Num, info.Panel_Num, info.Panel_ID))
+                            Step = UnloaderHandler1Steps.S4703_RIGHT_CAMERA_GRAB_READY_WAIT;
+
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4703_RIGHT_CAMERA_GRAB_READY_WAIT:
+                    {
+                        if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Ready_Ack))
+                        {
+                            Tact_Move.Stop();
+                            equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Ready [End]");
+                            equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Ready [Tact : {Tact_Move.Seconds} (sec)]");
+
+                            Step = UnloaderHandler1Steps.S4710_MOVE_MEASUREMENT_MARK1_POSITION;
+                        }
+                        else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout)
+                        {
+                            Step = UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY;
+                        }
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4710_MOVE_MEASUREMENT_MARK1_POSITION:
+                    {
+                        Tact_Move.Start();
+                        equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading Position [Start]");
+
+                        if (MotorX.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark5_X, 500) && MotorY.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark5_Y, 500))
+                            Step = UnloaderHandler1Steps.S4711_POSITION_CHECK;
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4711_POSITION_CHECK:
+                    {
+                        if (MotorX.MotionComplete && MotorY.MotionComplete)
+                        {
+                            if (MotorX.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark5_X, equipment.Setting.Inposition_Offset) && MotorY.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark5_Y, equipment.Setting.Inposition_Offset))
+                            {
+                                Tact_Move.Stop();
+                                equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading Position [End]");
+                                equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading Position [Tact : {Tact_Move.Seconds} (sec)]");
+
+                                vision_delay.Start();
+                                Step = UnloaderHandler1Steps.S4712_LEFT_CAMERA_MARK_1_GRAB_START;
+                            }
+                            else
+                            {
+                                Step = UnloaderHandler1Steps.S4710_MOVE_MEASUREMENT_MARK1_POSITION;
+                            }
+                        }
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4712_LEFT_CAMERA_MARK_1_GRAB_START:
+                    {
+                        if (vision_delay.Seconds < equipment.Setting.Vision_Move_Delay) return;
+
+                        Tact_Move.Start();
+                        equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [Start]");
+
+                        var info = equipment.after.AoiStage.Panel1;
+
+                        if (isAoiPanel1WidthMeasurementAck)
+                        {
+                            Step = UnloaderHandler1Steps.S4714_RIGHT_CAMERA_MARK_1_GRAB_START;
+                            return;
+                        }
+
+                        if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(0, 0, MotorX.Position, MotorY.Position))
+                            Step = UnloaderHandler1Steps.S4713_LEFT_CAMERA_MARK_1_GRAB_WAIT;
+
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4713_LEFT_CAMERA_MARK_1_GRAB_WAIT:
+                    {
+                        if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Left_Ack))
+                        {
+                            Step = UnloaderHandler1Steps.S4714_RIGHT_CAMERA_MARK_1_GRAB_START;
+                        }
+                        else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout)
+                        {
+                            Step = UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY;
+                        }
+
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4714_RIGHT_CAMERA_MARK_1_GRAB_START:
+                    {
+                        if (sequenceChangedTime.Seconds < 0.1) return;
+
+                        var info = equipment.after.AoiStage.Panel2;
+
+                        if (isAoiPanel2WidthMeasurementAck)
+                        {
+                            Step = UnloaderHandler1Steps.S4720_MOVE_MEASUREMENT_MARK2_POSITION;
+                            return;
+                        }
+
+                        if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(1, 0, MotorX.Position, MotorY.Position))
+                            Step = UnloaderHandler1Steps.S4715_RIGHT_CAMERA_MARK_1_GRAB_WAIT;
+
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4715_RIGHT_CAMERA_MARK_1_GRAB_WAIT:
+                    {
+                        if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Right_Ack))
+                        {
+                            Step = UnloaderHandler1Steps.S4720_MOVE_MEASUREMENT_MARK2_POSITION;
+                        }
+                        else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout)
+                        {
+                            Step = UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY;
+                        }
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4720_MOVE_MEASUREMENT_MARK2_POSITION:
+                    {
+                        if (sequenceChangedTime.Seconds < equipment.Setting.Vision_Move_Delay) break;
+
+                        if (MotorX.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark6_X, 500) && MotorY.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark6_Y, 500))
+                            Step = UnloaderHandler1Steps.S4721_POSITION_CHECK;
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4721_POSITION_CHECK:
+                    {
+                        if (MotorX.MotionComplete && MotorY.MotionComplete)
+                        {
+                            if (MotorX.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark6_X, equipment.Setting.Inposition_Offset) && MotorY.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark6_Y, equipment.Setting.Inposition_Offset))
+                            {
+                                vision_delay.Start();
+                                Step = UnloaderHandler1Steps.S4722_LEFT_CAMERA_MARK_2_GRAB_START;
+                            }
+                            else
+                            {
+                                Step = UnloaderHandler1Steps.S4720_MOVE_MEASUREMENT_MARK2_POSITION;
+                            }
+                        }
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4722_LEFT_CAMERA_MARK_2_GRAB_START:
+                    {
+                        if (vision_delay.Seconds < equipment.Setting.Vision_Move_Delay) return;
+
+                        var info = equipment.after.AoiStage.Panel1;
+
+                        if (isAoiPanel1WidthMeasurementAck)
+                        {
+                            Step = UnloaderHandler1Steps.S4724_RIGHT_CAMERA_MARK_2_GRAB_START;
+                            return;
+                        }
+
+                        if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(0, 1, MotorX.Position, MotorY.Position))
+                            Step = UnloaderHandler1Steps.S4723_LEFT_CAMERA_MARK_2_GRAB_WAIT;
+
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4723_LEFT_CAMERA_MARK_2_GRAB_WAIT:
+                    {
+                        if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Left_Ack))
+                        {
+                            Step = UnloaderHandler1Steps.S4724_RIGHT_CAMERA_MARK_2_GRAB_START;
+                        }
+                        else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout)
+                        {
+                            Step = UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY;
+                        }
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4724_RIGHT_CAMERA_MARK_2_GRAB_START:
+                    {
+                        if (sequenceChangedTime.Seconds < 0.1) return;
+
+                        var info = equipment.after.AoiStage.Panel2;
+
+                        if (isAoiPanel2WidthMeasurementAck)
+                        {
+                            sequenceChangedTime.Start();
+
+                            Step = UnloaderHandler1Steps.S4730_MOVE_MEASUREMENT_MARK3_POSITION;
+                            return;
+                        }
+
+                        if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(1, 1, MotorX.Position, MotorY.Position))
+                            Step = UnloaderHandler1Steps.S4725_RIGHT_CAMERA_MARK_2_GRAB_WAIT;
+
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4725_RIGHT_CAMERA_MARK_2_GRAB_WAIT:
+                    {
+                        if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Right_Ack))
+                        {
+                            Step = UnloaderHandler1Steps.S4730_MOVE_MEASUREMENT_MARK3_POSITION;
+                        }
+                        else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout)
+                        {
+                            Step = UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY;
+                        }
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4730_MOVE_MEASUREMENT_MARK3_POSITION:
+                    {
+                        if (sequenceChangedTime.Seconds < equipment.Setting.Vision_Move_Delay) break;
+
+                        if (MotorX.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark7_X, 500) && MotorY.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark7_Y, 500))
+                            Step = UnloaderHandler1Steps.S4731_POSITION_CHECK;
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4731_POSITION_CHECK:
+                    {
+                        if (MotorX.MotionComplete && MotorY.MotionComplete)
+                        {
+                            if (MotorX.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark7_X, equipment.Setting.Inposition_Offset) && MotorY.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark7_Y, equipment.Setting.Inposition_Offset))
+                            {
+                                vision_delay.Start();
+                                Step = UnloaderHandler1Steps.S4732_LEFT_CAMERA_MARK_3_GRAB_START;
+                            }
+                            else
+                            {
+                                Step = UnloaderHandler1Steps.S4730_MOVE_MEASUREMENT_MARK3_POSITION;
+                            }
+                        }
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4732_LEFT_CAMERA_MARK_3_GRAB_START:
+                    {
+                        if (vision_delay.Seconds < equipment.Setting.Vision_Move_Delay) return;
+
+                        var info = equipment.after.AoiStage.Panel1;
+
+                        if (isAoiPanel1WidthMeasurementAck)
+                        {
+                            Step = UnloaderHandler1Steps.S4734_RIGHT_CAMERA_MARK_3_GRAB_START;
+                            return;
+                        }
+
+                        if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(0, 2, MotorX.Position, MotorY.Position))
+                            Step = UnloaderHandler1Steps.S4733_LEFT_CAMERA_MARK_3_GRAB_WAIT;
+
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4733_LEFT_CAMERA_MARK_3_GRAB_WAIT:
+                    {
+                        if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Left_Ack))
+                        {
+                            Step = UnloaderHandler1Steps.S4734_RIGHT_CAMERA_MARK_3_GRAB_START;
+                        }
+                        else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout)
+                        {
+                            Step = UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY;
+                        }
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4734_RIGHT_CAMERA_MARK_3_GRAB_START:
+                    {
+                        if (sequenceChangedTime.Seconds < 0.1) return;
+
+                        var info = equipment.after.AoiStage.Panel2;
+
+                        if (isAoiPanel2WidthMeasurementAck)
+                        {
+                            sequenceChangedTime.Start();
+                            Step = UnloaderHandler1Steps.S4740_MOVE_MEASUREMENT_MARK4_POSITION;
+                            return;
+                        }
+
+                        if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(1, 2, MotorX.Position, MotorY.Position))
+                            Step = UnloaderHandler1Steps.S4735_RIGHT_CAMERA_MARK_3_GRAB_WAIT;
+
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4735_RIGHT_CAMERA_MARK_3_GRAB_WAIT:
+                    {
+                        if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Right_Ack))
+                        {
+                            Step = UnloaderHandler1Steps.S4740_MOVE_MEASUREMENT_MARK4_POSITION;
+                        }
+                        else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout)
+                        {
+                            Step = UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY;
+                        }
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4740_MOVE_MEASUREMENT_MARK4_POSITION:
+                    {
+                        if (sequenceChangedTime.Seconds < equipment.Setting.Vision_Move_Delay) break;
+
+                        if (MotorX.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark8_X, 500) && MotorY.Move_Absolute_Pos(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark8_Y, 500))
+                            Step = UnloaderHandler1Steps.S4741_POSITION_CHECK;
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4741_POSITION_CHECK:
+                    {
+                        if (MotorX.MotionComplete && MotorY.MotionComplete)
+                        {
+                            if (MotorX.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark8_X, equipment.Setting.Inposition_Offset) && MotorY.Is_Inposition(equipment.Cur_Main_Recipe.vision_info.Width_AOI_Mark8_Y, equipment.Setting.Inposition_Offset))
+                            {
+                                vision_delay.Start();
+                                Step = UnloaderHandler1Steps.S4742_LEFT_CAMERA_MARK_4_GRAB_START;
+                            }
+                            else
+                            {
+                                Step = UnloaderHandler1Steps.S4740_MOVE_MEASUREMENT_MARK4_POSITION;
+                            }
+                        }
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4742_LEFT_CAMERA_MARK_4_GRAB_START:
+                    {
+                        if (vision_delay.Seconds < equipment.Setting.Vision_Move_Delay) return;
+
+                        var info = equipment.after.AoiStage.Panel1;
+
+                        if (isAoiPanel1WidthMeasurementAck)
+                        {
+                            Step = UnloaderHandler1Steps.S4744_RIGHT_CAMERA_MARK_4_GRAB_START;
+                            return;
+                        }
+
+                        if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(0, 3, MotorX.Position, MotorY.Position))
+                            Step = UnloaderHandler1Steps.S4743_LEFT_CAMERA_MARK_4_GRAB_WAIT;
+
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4743_LEFT_CAMERA_MARK_4_GRAB_WAIT:
+                    {
+                        if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Left_Ack))
+                        {
+                            Step = UnloaderHandler1Steps.S4744_RIGHT_CAMERA_MARK_4_GRAB_START;
+                        }
+                        else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout)
+                        {
+                            Step = UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY;
+                        }
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4744_RIGHT_CAMERA_MARK_4_GRAB_START:
+                    {
+                        if (sequenceChangedTime.Seconds < 0.1) return;
+
+                        var info = equipment.after.AoiStage.Panel2;
+
+                        if (isAoiPanel2WidthMeasurementAck)
+                        {
+                            sequenceChangedTime.Start();
+                            Step = UnloaderHandler1Steps.S4750_MEASUREMENT_CHECK;
+                            return;
+                        }
+
+                        if (equipment.Aoi_vision.Send_WidthMeasurement_Grab_Start_Req(1, 3, MotorX.Position, MotorY.Position))
+                            Step = UnloaderHandler1Steps.S4745_RIGHT_CAMERA_MARK_4_GRAB_WAIT;
+
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4745_RIGHT_CAMERA_MARK_4_GRAB_WAIT:
+                    {
+                        if (equipment.sm.Get_Bit(Vision_Address.Measurement_Grab_Start_Right_Ack))
+                        {
+                            Step = UnloaderHandler1Steps.S4750_MEASUREMENT_CHECK;
+                        }
+                        else if (sequenceChangedTime.Seconds > equipment.Setting.Vision_Timeout)
+                        {
+                            Step = UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY;
+                        }
+                        break;
+                    }
+                case UnloaderHandler1Steps.S4750_MEASUREMENT_CHECK:
+                    {
+                        var aoistage = equipment.after.AoiStage;
+                        var info1 = aoistage.Panel1;
+                        var info2 = aoistage.Panel2;
+
+                        object value;
+                        if ((isAoiPanel1WidthMeasurementAck || equipment.sm.Get_Bit(Vision_Address.Measurement_Left_Ack))
+                            && (isAoiPanel2WidthMeasurementAck || equipment.sm.Get_Bit(Vision_Address.Measurement_Right_Ack)))
+                        {
+                            if (aoistage.Stage1.IsExist && info1.WidthMeasurement_Ack == false)
+                            {
+                                if (equipment.sm.Get_Bit(Vision_Address.Measurement_Left_Result))
+                                {
+                                    info1.WidthMeasurement_Ack = true;
+                                    info1.WidthMeasurement_Result = true;
+
+                                    info1.End_Time = DateTime.Now;
+
+                                    equipment.sm.Get_Value(Vision_Address.Measurement_Left_Mark_1_Point_1, out value);
+                                    info1.Mark5Width = double.Parse(value.ToString());
+                                    equipment.sm.Get_Value(Vision_Address.Measurement_Left_Mark_2_Point_1, out value);
+                                    info1.Mark6Width = double.Parse(value.ToString());
+                                    equipment.sm.Get_Value(Vision_Address.Measurement_Left_Mark_3_Point_1, out value);
+                                    info1.Mark7Width = double.Parse(value.ToString());
+                                    equipment.sm.Get_Value(Vision_Address.Measurement_Left_Mark_4_Point_1, out value);
+                                    info1.Mark8Width = double.Parse(value.ToString());
+
+                                    aoistage.Panel1 = info1;
+
+                                    isAoiPanel1WidthMeasurementAck = aoiStage.Stage1.IsExist == false || aoiStage.Panel1.WidthMeasurement_Result;
                                 }
                                 else
                                 {
@@ -2320,26 +2954,25 @@
 
                             if (aoistage.Stage2.IsExist && info2.WidthMeasurement_Ack == false)
                             {
-                                info2.WidthMeasurement_Ack = true;
-
-                                if (equipment.sm.Get_Bit(Vision_Address.Measurement_Right_Result, out result))
+                                if (equipment.sm.Get_Bit(Vision_Address.Measurement_Right_Result))
                                 {
-                                    info2.WidthMeasurement_Result = result;
+                                    info2.WidthMeasurement_Ack = true;
+                                    info2.WidthMeasurement_Result = true;
 
                                     info2.End_Time = DateTime.Now;
 
                                     equipment.sm.Get_Value(Vision_Address.Measurement_Right_Mark_1_Point_1, out value);
-                                    info2.Mark1Width = double.Parse(value.ToString());
+                                    info2.Mark5Width = double.Parse(value.ToString());
                                     equipment.sm.Get_Value(Vision_Address.Measurement_Right_Mark_2_Point_1, out value);
-                                    info2.Mark2Width = double.Parse(value.ToString());
-                                    //equipment.sm.Get_Value(Vision_Address.Measurement_Right_Mark_3_Point_1, out value);
-                                    //info2.Mark3Point1 = double.Parse(value.ToString());
-                                    //equipment.sm.Get_Value(Vision_Address.Measurement_Right_Mark_4_Point_1, out value);
-                                    //info2.Mark4Point1 = double.Parse(value.ToString());
+                                    info2.Mark6Width = double.Parse(value.ToString());
+                                    equipment.sm.Get_Value(Vision_Address.Measurement_Right_Mark_3_Point_1, out value);
+                                    info2.Mark7Width = double.Parse(value.ToString());
+                                    equipment.sm.Get_Value(Vision_Address.Measurement_Right_Mark_4_Point_1, out value);
+                                    info2.Mark8Width = double.Parse(value.ToString());
 
                                     aoistage.Panel2 = info2;
 
-                                    isAoiPanel2WidthMeasurementAck = aoiStage.Stage2.IsExist == false || aoiStage.Panel2.WidthMeasurement_Ack;
+                                    isAoiPanel2WidthMeasurementAck = aoiStage.Stage2.IsExist == false || aoiStage.Panel2.WidthMeasurement_Result;
                                 }
                                 else
                                 {
@@ -2369,11 +3002,11 @@
 
                                 if (measurement_retry_cnt >= equipment.Setting.Vision_Retry_Count)
                                 {
-                                    Step = UnloaderHandler1Steps.S4700_USER_COMMAND_START;
+                                    Step = UnloaderHandler1Steps.S4760_USER_COMMAND_START;
                                 }
                                 else
                                 {
-                                    Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY;
+                                    Step = UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY;
                                 }
                             }
                         }
@@ -2389,7 +3022,7 @@
                                     Tact_Move.Stop();
                                     equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [End]");
                                     equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [Tact : {Tact_Move.Seconds} (sec)]");
-                                    Step = UnloaderHandler1Steps.S4700_USER_COMMAND_START;
+                                    Step = UnloaderHandler1Steps.S4760_USER_COMMAND_START;
                                 }
                                 else
                                 {
@@ -2397,14 +3030,14 @@
                                     Tact_Move.Stop();
                                     equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [End]");
                                     equipment.Write_Tact_Time_Log($"ULD Handler 1, Widht AOI Reading [Tact : {Tact_Move.Seconds} (sec)]");
-                                    Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY;
+                                    Step = UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY;
                                 }
                             }
                         }
 
                         break;
                     }
-                case UnloaderHandler1Steps.S4700_USER_COMMAND_START:
+                case UnloaderHandler1Steps.S4760_USER_COMMAND_START:
                     {
                         var aoistage = equipment.after.AoiStage;
                         Panel_Info info1 = aoistage.Panel1;
@@ -2420,13 +3053,14 @@
                             Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0887_MEASUREMENT_RIGHT_ERROR);
                         }
 
-                        measurement_user_command = new Form_User_Command_Set("Measurement");
+                        measurement_user_command = new Form_User_Command_Set("Width Measurement");
+                        measurement_user_command.UserManualEnable(false);
                         measurement_user_command_show = true;
 
-                        Step = UnloaderHandler1Steps.S4700_USER_COMMAND_WAIT;
+                        Step = UnloaderHandler1Steps.S4770_USER_COMMAND_WAIT;
                         break;
                     }
-                case UnloaderHandler1Steps.S4700_USER_COMMAND_WAIT:
+                case UnloaderHandler1Steps.S4770_USER_COMMAND_WAIT:
                     {
                         var aoistage = equipment.after.AoiStage;
                         Panel_Info info1 = aoistage.Panel1;
@@ -2464,24 +3098,28 @@
                             }
 
                             measurement_retry_cnt = 0;
-                            Step = UnloaderHandler1Steps.S4600_LEFT_CAMERA_GRAB_READY;
+                            Step = UnloaderHandler1Steps.S4700_LEFT_CAMERA_GRAB_READY;
                         }
                         else if (measurement_user_command.Command_Type == En_User_Command.Skip)
                         {
-                            if (aoistage.Stage1.IsExist && info1.Measurement_Ack == false)
+                            if (aoistage.Stage1.IsExist && info1.WidthMeasurement_Ack == false)
                             {
                                 equipment.sm.Set_Bit(Vision_Address.Measurement_Left_Ack, true);
                                 equipment.sm.Set_Bit(Vision_Address.Measurement_Left_Align_Result, true);
                                 equipment.sm.Set_Bit(Vision_Address.Measurement_Left_Result, false);
                                 equipment.Aoi_vision.Send_Measurement_Command_Req(2, 0, info1.Tray_Num, info1.Panel_Num, info1.Panel_ID);
+                                info1.Measurement_Result = false;
+                                aoistage.Panel1 = info1;
                             }
 
-                            if (aoistage.Stage2.IsExist && info2.Measurement_Ack == false)
+                            if (aoistage.Stage2.IsExist && info2.WidthMeasurement_Ack == false)
                             {
                                 equipment.sm.Set_Bit(Vision_Address.Measurement_Right_Ack, true);
                                 equipment.sm.Set_Bit(Vision_Address.Measurement_Right_Align_Result, true);
                                 equipment.sm.Set_Bit(Vision_Address.Measurement_Right_Result, false);
                                 equipment.Aoi_vision.Send_Measurement_Command_Req(2, 1, info2.Tray_Num, info2.Panel_Num, info2.Panel_ID);
+                                info2.Measurement_Result = false;
+                                aoistage.Panel2 = info2;
                             }
 
                             if (equipment.cim_mode == En_Cim_Mode.Online)
diff --git a/SHARP_CLAS_UI/500.Equipment/700.Unit/Base/Handler.cs b/SHARP_CLAS_UI/500.Equipment/700.Unit/Base/Handler.cs
index 31fd863..a4fb96e 100644
--- a/SHARP_CLAS_UI/500.Equipment/700.Unit/Base/Handler.cs
+++ b/SHARP_CLAS_UI/500.Equipment/700.Unit/Base/Handler.cs
@@ -307,8 +307,45 @@
 
         S4650_MEASUREMENT_CHECK,
 
-        S4700_USER_COMMAND_START,
-        S4700_USER_COMMAND_WAIT,
+        S4660_USER_COMMAND_START,
+        S4670_USER_COMMAND_WAIT,
+
+        S4700_LEFT_CAMERA_GRAB_READY,
+        S4701_LEFT_CAMERA_GRAB_READY_WAIT,
+        S4702_RIGHT_CAMERA_GRAB_READY,
+        S4703_RIGHT_CAMERA_GRAB_READY_WAIT,
+
+        S4710_MOVE_MEASUREMENT_MARK1_POSITION,
+        S4711_POSITION_CHECK,
+        S4712_LEFT_CAMERA_MARK_1_GRAB_START,
+        S4713_LEFT_CAMERA_MARK_1_GRAB_WAIT,
+        S4714_RIGHT_CAMERA_MARK_1_GRAB_START,
+        S4715_RIGHT_CAMERA_MARK_1_GRAB_WAIT,
+
+        S4720_MOVE_MEASUREMENT_MARK2_POSITION,
+        S4721_POSITION_CHECK,
+        S4722_LEFT_CAMERA_MARK_2_GRAB_START,
+        S4723_LEFT_CAMERA_MARK_2_GRAB_WAIT,
+        S4724_RIGHT_CAMERA_MARK_2_GRAB_START,
+        S4725_RIGHT_CAMERA_MARK_2_GRAB_WAIT,
+
+        S4730_MOVE_MEASUREMENT_MARK3_POSITION,
+        S4731_POSITION_CHECK,
+        S4732_LEFT_CAMERA_MARK_3_GRAB_START,
+        S4733_LEFT_CAMERA_MARK_3_GRAB_WAIT,
+        S4734_RIGHT_CAMERA_MARK_3_GRAB_START,
+        S4735_RIGHT_CAMERA_MARK_3_GRAB_WAIT,
+
+        S4740_MOVE_MEASUREMENT_MARK4_POSITION,
+        S4741_POSITION_CHECK,
+        S4742_LEFT_CAMERA_MARK_4_GRAB_START,
+        S4743_LEFT_CAMERA_MARK_4_GRAB_WAIT,
+        S4744_RIGHT_CAMERA_MARK_4_GRAB_START,
+        S4745_RIGHT_CAMERA_MARK_4_GRAB_WAIT,
+        S4750_MEASUREMENT_CHECK,
+
+        S4760_USER_COMMAND_START,
+        S4770_USER_COMMAND_WAIT,
         //==============================
 
         S4800_PANEL_LEFT_CIM_SEND,

--
Gitblit v1.9.3