From 154cfce360a831d18f3f21b4e1101b4e13440b74 Mon Sep 17 00:00:00 2001
From: 천호석 <hosuk1418@naver.com>
Date: 화, 11 10월 2022 13:19:52 +0900
Subject: [PATCH] 검사 개조, Measurement 후 Width 검사 추가. Recipe 위치 좌표 추가, 검사 Parameter 추가.

---
 SHARP_CLAS_UI/500.Equipment/400.Module/000.Vision/Client_AOI.cs |   84 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 83 insertions(+), 1 deletions(-)

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 1b67dbb..4dc7cad 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
@@ -616,6 +616,39 @@
                                     sm.Set_Value(Vision_Address.AOI_PC_System_Time_Sync_Result, system_time_sync_Ack.result);
                                     break;
                                 }
+                            case 301:
+                                {
+                                    WidthMeasurementResultAck measurement_result_Ack;
+                                    vision_control.Recv_WidthMeasurement_Result(Recvdata, out measurement_result_Ack);
+
+                                    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}, 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;
+                                }
+                            case 302:
+                                {
+                                    WidthMeasurementResultAck measurement_result_Ack;
+                                    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}, 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;
+                                }
                             case 100:
                                 {
                                     VisionAliveAck vision_alive_Ack;
@@ -732,7 +765,7 @@
         /// Send Grab Start Req
         /// </summary>
         /// <param name="ModelIdx">移대찓�씪 Module Idx (0: Left, 1: Right)</param>
-        /// <param name="MarkIdx">留덊겕 �쐞移� (0:Left, 1: Right)</param>
+        /// <param name="MarkIdx">留덊겕 �쐞移� (0:Left, 1:Left, 2:Right, 3:Right)</param>
         /// <param name="MotorOffsetX">�쁽�옱 Motor Position X</param>
         /// <param name="MotorOffsetY">�쁽�옱 Motor Position Y</param>
         public bool Send_Measurement_Grab_Start_Req(int ModelIdx, int MarkIdx, double MotorOffsetX, double MotorOffsetY)
@@ -768,6 +801,55 @@
             return SendData(vision_control.Send_Command_Req(CmdType, SeqType, ModuleIdx, Slot_No, PnlIdx, PanelID));
         }
 
+
+        /// <summary>
+        ///  Send Grab Ready Req
+        /// </summary>
+        /// <param name="SeqType">臾쇰쪟 Sequence Type</param>
+        /// <param name="ModuleIdx">移대찓�씪 Module Idx (0: Left, 1: Right)</param>
+        /// <param name="GrabDir">�떒異� Grab(Default), 1: �떒異� Grab</param>
+        /// <param name="PnlDir">0: �떒硫� 臾쇰쪟 �쓲由� 諛⑺뼢, 1: �옣硫� 臾쇰쪟 �쓲由� 諛⑺뼢</param>
+        /// <param name="StageNo">�쁽�옱 寃��궗瑜� �쐞�븳 Panel�씠 濡쒕뵫�맂 Stage 踰덊샇</param>
+        /// <param name="SlotNo">Tray Slot 踰덊샇</param>
+        /// <param name="PnlIdx">Tray �궡 Panel�씠 �쐞移섑븳 Idx 踰덊샇</param>
+        /// <param name="PanelID">Panel�쓣 �떇蹂꾪븯湲곗쐞�븳 ID (*�뾾�뒗 寃쎌슦 NULL)</param>
+        public bool Send_WidthMeasurement_Grab_Ready_Req(int ModuleIdx, int GrabDir, int PnlDir, int StageNo, int SlotNo, int PnlIdx, string PanelID)
+        {
+            int SeqType = 4;
+
+            sm.Set_Bit(Vision_Address.Measurement_Grab_Ready_Ack, false);
+
+            if (ModuleIdx == 0)
+                sm.Set_Bit(Vision_Address.Measurement_Left_Ack, false);
+            else
+                sm.Set_Bit(Vision_Address.Measurement_Right_Ack, false);
+
+            WriteClientLog($"[Send]Measurement Grab Ready, ModuleIdx : {ModuleIdx}, GrabDir : {GrabDir}, PnlDir : {PnlDir}, StageNo : {StageNo}, SlotNo : {SlotNo}, PnlIdx : {PnlIdx}, PanelID : {PanelID}");
+
+            return SendData(vision_control.Send_Grab_Ready_Req(SeqType, ModuleIdx, GrabDir, PnlDir, StageNo, SlotNo, PnlIdx, PanelID));
+        }
+
+        /// <summary>
+        /// Send Grab Start Req
+        /// </summary>
+        /// <param name="ModelIdx">移대찓�씪 Module Idx (0: Left, 1: Right)</param>
+        /// <param name="MarkIdx">留덊겕 �쐞移� (0:Left, 1:Left, 2:Right, 3:Right)</param>
+        /// <param name="MotorOffsetX">�쁽�옱 Motor Position X</param>
+        /// <param name="MotorOffsetY">�쁽�옱 Motor Position Y</param>
+        public bool Send_WidthMeasurement_Grab_Start_Req(int ModelIdx, int MarkIdx, double MotorOffsetX, double MotorOffsetY)
+        {
+            int SeqType = 4;
+
+            if (ModelIdx == 0)
+                sm.Set_Bit(Vision_Address.Measurement_Grab_Start_Left_Ack, false);
+            else
+                sm.Set_Bit(Vision_Address.Measurement_Grab_Start_Right_Ack, false);
+
+            WriteClientLog($"[Send]Measurement Grab Start, ModelIdx : {ModelIdx}, MarkIdx : {MarkIdx}, MotorOffsetX : {MotorOffsetX}, MotorOffsetY : {MotorOffsetY}");
+
+            return SendData(vision_control.Send_Grab_Start_Req(SeqType, ModelIdx, MarkIdx, MotorOffsetX, MotorOffsetY));
+        }
+
         /// <summary>
         /// Send Motor Pos Move Ack
         /// </summary>

--
Gitblit v1.9.3