From 0ab27289d7b806156a36a3c062c0a9b0ed625bf3 Mon Sep 17 00:00:00 2001 From: lhiven Date: Mon, 12 Aug 2024 17:29:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96GRR=E8=B7=91=E7=9D=80?= =?UTF-8?q?=E8=B7=91=E7=9D=80=E5=81=9C=E4=B8=8B=EF=BC=8C=E4=B9=8B=E5=89=8D?= =?UTF-8?q?=E6=94=B6=E5=88=B0RESULT=E6=97=B6=E8=AE=A1=E6=95=B0=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E4=BA=A7=E5=93=81=E5=9C=A8=E6=B2=BB=E5=85=B7=E5=8F=96?= =?UTF-8?q?=E8=B5=B7=E6=9D=A5=E5=90=8E=E8=AE=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Rs.DeweyTester/Entitys/TestFixtureManager.cs | 70 +++++++++---------- Rs.DeweyTester/Entitys/TestProduct.cs | 7 +- .../Flow/NormalFlow/DischargeFlow.cs | 2 +- Rs.DeweyTester/Flow/NormalFlow/GrrFlow.cs | 20 +----- .../Flow/SubFlow/FixedGrabProductFlow.cs | 2 +- .../Flow/SubFlow/FixtureTakeFlow.cs | 1 + Rs.DeweyTester/Flow/SubFlow/StockTakeFlow.cs | 4 +- Rs.DeweyTester/Module/NozzleCollection.cs | 4 +- Rs.DeweyTester/SysConfig/SelectProductFrm.cs | 2 +- Rs.DeweyTester/TestFrm.cs | 2 +- 10 files changed, 49 insertions(+), 65 deletions(-) diff --git a/Rs.DeweyTester/Entitys/TestFixtureManager.cs b/Rs.DeweyTester/Entitys/TestFixtureManager.cs index 2f7f569..c14b109 100644 --- a/Rs.DeweyTester/Entitys/TestFixtureManager.cs +++ b/Rs.DeweyTester/Entitys/TestFixtureManager.cs @@ -88,6 +88,14 @@ namespace Rs.MotionPlat.Entitys } } + public void AddTestRecordToProduct() + { + if (Product != null && !string.IsNullOrEmpty(Result)) + { + Product.AddResult(this.Index, "", ""); + } + } + public void Clear() { this.Product = null; @@ -545,13 +553,13 @@ namespace Rs.MotionPlat.Entitys if(Status == ETestFixtureStatus.Testing ||(Status== ETestFixtureStatus.IDLE && Product!=null &&String.IsNullOrEmpty(Result))) { Send("Result$"); + LogHelper.Debug($"<<< TC{Index} Result$"); if (CheckPrintLog()) { //lock (this) //{ // File.AppendAllText($"d:\\1\\{Index}.txt", $"<<< 治具{Index} Result$\r\n"); //} - LogHelper.Debug($"<<< TC{Index} Result$"); logs.Enqueue($"<<< TC{Index} Result$"); } } @@ -567,7 +575,7 @@ namespace Rs.MotionPlat.Entitys break; case "3": //侧相机测试失败 - EButtonType sideCameraSelect = Msgbox.ShowTipDialog(EButtonType.Retry | EButtonType.Cancel, "请检查DUT是否放好,如果已放好,继续测试选择Retry,终止测试选择Cancel"); + EButtonType sideCameraSelect = Msgbox.ShowTipDialog(EButtonType.Retry | EButtonType.Cancel, $"请检查DUT{Index}是否放好,如果已放好,继续测试选择Retry,终止测试选择Cancel","warn",true); if(sideCameraSelect== EButtonType.Retry) { string msg = "ContinueTest#1$"; @@ -593,44 +601,34 @@ namespace Rs.MotionPlat.Entitys dataEvent.Set(); break; case "Result": - //if (writeLogs.Contains(Index)) - //{ - // LogHelper.Info($">>> 治具{Index} Result"); - //} - if(Product!=null) + //if(items!=null && items.Length>=6) { - - if (items[2] == "1") - { - Result = "PASS"; - PassCount++; - } - else + if (Product != null) { - Result = "NG"; + + if (items[2] == "1") + { + Result = "PASS"; + PassCount++; + } + else + { + Result = "NG"; + } + Product.Result = Result; + Product.Bin = items[6]; + //this.Product.AddResult(this.Index, Result, items[6]); } - this.Product.AddResult(this.Index, Result, items[6]); + string csvContent = string.Join(",", items[3], items[4], items[5]); + LogHelper.Debug($"Result:{items[3]}"); + DevLog.Summary(CsvTitle, csvContent); + this.EndTestTime = DateTime.Now; + this.LastCT = (EndTestTime - StartTestTime).TotalSeconds; + TotalCount++; + Yield = (double)((double)PassCount / TotalCount); + Status = ETestFixtureStatus.IDLE; + dataEvent.Set(); } - - - //string summaryPath = $"D:\\Summary\\{DateTime.Now.ToString("yyyyMMdd")}\\summary.csv"; - //if (!Directory.Exists(Path.GetDirectoryName(summaryPath))) - //{ - // Directory.CreateDirectory(Path.GetDirectoryName(summaryPath)); - //} - //if (!File.Exists(summaryPath)) - //{ - // File.AppendAllText(summaryPath, CsvTitle); - //} - //File.AppendAllText(summaryPath, items[3]); - string csvContent = string.Join(",", items[3], items[4], items[5]); - DevLog.Summary(CsvTitle, csvContent); - this.EndTestTime = DateTime.Now; - this.LastCT = (EndTestTime - StartTestTime).TotalSeconds; - TotalCount++; - Yield = (double)((double)PassCount / TotalCount); - Status = ETestFixtureStatus.IDLE; - dataEvent.Set(); break; case "ErrorCode": //if (writeLogs.Contains(Index)) diff --git a/Rs.DeweyTester/Entitys/TestProduct.cs b/Rs.DeweyTester/Entitys/TestProduct.cs index 061658c..cec2a55 100644 --- a/Rs.DeweyTester/Entitys/TestProduct.cs +++ b/Rs.DeweyTester/Entitys/TestProduct.cs @@ -42,14 +42,15 @@ namespace Rs.MotionPlat.Entitys public void AddResult(int fixtureIndex,string result,string binInfo) { + LogHelper.Debug($"治具{fixtureIndex}产品已取出,测试数量加1"); TestNum++; if (TestedFixtures == null) TestedFixtures = new List(); if (TestResults == null) TestResults = new List(); - Result = result; - Bin = binInfo; - TestResults.Add(result); + //Result = result; + //Bin = binInfo; + TestResults.Add(Result); TestedFixtures.Add(fixtureIndex); } diff --git a/Rs.DeweyTester/Flow/NormalFlow/DischargeFlow.cs b/Rs.DeweyTester/Flow/NormalFlow/DischargeFlow.cs index 5b86328..8e7b9d1 100644 --- a/Rs.DeweyTester/Flow/NormalFlow/DischargeFlow.cs +++ b/Rs.DeweyTester/Flow/NormalFlow/DischargeFlow.cs @@ -385,7 +385,7 @@ namespace Rs.MotionPlat.Flow bool exit = false; while (!exit) { - ProductLocationResult fixtureret = FixedGrabProductFlow.Instance.Grab(ETrayType.Input, ret.SlotIndex); + ProductLocationResult fixtureret = FixedGrabProductFlow.Instance.TakePicture(ETrayType.Input, ret.SlotIndex); if (fixtureret.Result == EOneGrabSixteenResult.Ok) { ret.Change(fixtureret.SN, fixtureret.OffsetX, fixtureret.OffsetY); diff --git a/Rs.DeweyTester/Flow/NormalFlow/GrrFlow.cs b/Rs.DeweyTester/Flow/NormalFlow/GrrFlow.cs index d22bd98..377ff4e 100644 --- a/Rs.DeweyTester/Flow/NormalFlow/GrrFlow.cs +++ b/Rs.DeweyTester/Flow/NormalFlow/GrrFlow.cs @@ -535,28 +535,12 @@ namespace Rs.MotionPlat.Flow case EGrrFlowStep.治具取料完成真空检测: if (Ops.IsOn($"吸料真空{curTakeNozzle.NozzleIndex}检测") || GlobalVar.RunSpace) { + curFixture.AddTestRecordToProduct(); curTakeNozzle.Product = curFixture.Product; - string testFixtures = string.Join(",", curTakeNozzle.Product.TestedFixtures); - //try - //{ - // LogHelper.Debug($"测试治具:{testFixtures}"); - //} - //catch (Exception ex) - //{ - - //} - //try - //{ - // LogHelper.Debug($"测试次数:{curTakeNozzle.Product.TestNum}"); - //} - //catch (Exception ex) - //{ - // LogHelper.Debug($"取测试"); - //} logInfo = $"{GetClassName()}取料完成,真空检测OK,吸嘴 {curTakeNozzle.NozzleIndex} 从治具 {curFixture.Index} 把产品SN {curFixture.Product.SN} 取出,测试治具:{testFixtures},测试次数:{curTakeNozzle.Product.TestNum}"; MessageQueue.Instance.Insert(logInfo); - curFixture.Clear();//.Product = null; + curFixture.Clear(); GlobalTray.NozzleTray.ChangeStatus(curTakeNozzle.NozzleIndex, ESlotStatus.Have); if(GlobalVar.TestMode=="GRR") { diff --git a/Rs.DeweyTester/Flow/SubFlow/FixedGrabProductFlow.cs b/Rs.DeweyTester/Flow/SubFlow/FixedGrabProductFlow.cs index 4c91a77..ae96d04 100644 --- a/Rs.DeweyTester/Flow/SubFlow/FixedGrabProductFlow.cs +++ b/Rs.DeweyTester/Flow/SubFlow/FixedGrabProductFlow.cs @@ -41,7 +41,7 @@ namespace Rs.MotionPlat.Flow.SubFlow bool finished = true; EFixedGrabProductFlowStep step = EFixedGrabProductFlowStep.到拍照位上方; - public ProductLocationResult Grab(ETrayType trayType,int slotInex,int grabNum=3) + public ProductLocationResult TakePicture(ETrayType trayType,int slotInex,int grabNum=3) { ProductLocationResult result = new ProductLocationResult() { diff --git a/Rs.DeweyTester/Flow/SubFlow/FixtureTakeFlow.cs b/Rs.DeweyTester/Flow/SubFlow/FixtureTakeFlow.cs index b94e860..487bc51 100644 --- a/Rs.DeweyTester/Flow/SubFlow/FixtureTakeFlow.cs +++ b/Rs.DeweyTester/Flow/SubFlow/FixtureTakeFlow.cs @@ -213,6 +213,7 @@ namespace Rs.MotionPlat.Flow.SubFlow } else { + curFixture.AddTestRecordToProduct(); logInfo = $"{GetClassName()}治具{curFixture.Index}中产品SN:{curFixture.Product.SN}被吸嘴{curNozzle.NozzleIndex}取出"; MessageQueue.Instance.Insert(logInfo); curNozzle.Product = curFixture.Product; diff --git a/Rs.DeweyTester/Flow/SubFlow/StockTakeFlow.cs b/Rs.DeweyTester/Flow/SubFlow/StockTakeFlow.cs index 9c917a1..bda3619 100644 --- a/Rs.DeweyTester/Flow/SubFlow/StockTakeFlow.cs +++ b/Rs.DeweyTester/Flow/SubFlow/StockTakeFlow.cs @@ -100,14 +100,14 @@ namespace Rs.MotionPlat.Flow.SubFlow { if(!GlobalVar.RunSpace) { - MessageQueue.Instance.Insert($"拍照偏移量 x:{result.OffsetX},y:{result.OffsetY}"); + //MessageQueue.Instance.Insert($"拍照偏移量 x:{result.OffsetX},y:{result.OffsetY}"); targetPosition.X += result.OffsetX; targetPosition.Y2 += result.OffsetY; } } if(locaResult!=null) { - MessageQueue.Instance.Insert($"拍照偏移量 x:{locaResult.OffsetX},y:{locaResult.OffsetY}"); + //MessageQueue.Instance.Insert($"拍照偏移量 x:{locaResult.OffsetX},y:{locaResult.OffsetY}"); targetPosition.X += locaResult.OffsetX; targetPosition.Y2 += locaResult.OffsetY; } diff --git a/Rs.DeweyTester/Module/NozzleCollection.cs b/Rs.DeweyTester/Module/NozzleCollection.cs index eb1c773..f6f5d0a 100644 --- a/Rs.DeweyTester/Module/NozzleCollection.cs +++ b/Rs.DeweyTester/Module/NozzleCollection.cs @@ -525,12 +525,12 @@ namespace Rs.MotionPlat.Commom curTakeSlotPoint = TrayRunPointManager.GetSlotPoint(trayType, slotIndex); } } - MessageQueue.Instance.Insert($"基础loadx:{curTakeSlotPoint.X},loady2:{curTakeSlotPoint.Y}"); + //MessageQueue.Instance.Insert($"基础loadx:{curTakeSlotPoint.X},loady2:{curTakeSlotPoint.Y}"); if (curTakeSlotPoint != null) { double nozzleOffsetX = GlobalVar.Nozzle1ToCameraCenterOffsetX + NozzleManager.GetNozzleOffsetX(nozzleIndex); double nozzleOffsetY = GlobalVar.Nozzle1ToCameraCenterOffsetY2 + NozzleManager.GetNozzleOffsetY2(nozzleIndex); - MessageQueue.Instance.Insert($"吸嘴偏移x:{nozzleOffsetX},吸嘴偏移x:{nozzleOffsetY}"); + //MessageQueue.Instance.Insert($"吸嘴偏移x:{nozzleOffsetX},吸嘴偏移x:{nozzleOffsetY}"); targetPosition.X = curTakeSlotPoint.X + GlobalVar.Nozzle1ToCameraCenterOffsetX + NozzleManager.GetNozzleOffsetX(nozzleIndex); targetPosition.Y1 = GlobalVar.StockSideY1; targetPosition.Y2 = curTakeSlotPoint.Y + GlobalVar.Nozzle1ToCameraCenterOffsetY2 + NozzleManager.GetNozzleOffsetY2(nozzleIndex); diff --git a/Rs.DeweyTester/SysConfig/SelectProductFrm.cs b/Rs.DeweyTester/SysConfig/SelectProductFrm.cs index 3580307..6191353 100644 --- a/Rs.DeweyTester/SysConfig/SelectProductFrm.cs +++ b/Rs.DeweyTester/SysConfig/SelectProductFrm.cs @@ -71,7 +71,7 @@ namespace Rs.MotionPlat.SysConfig bool exit = false; while (!exit) { - ProductLocationResult fixtureret = FixedGrabProductFlow.Instance.Grab(ETrayType.Grr, i+1,1); + ProductLocationResult fixtureret = FixedGrabProductFlow.Instance.TakePicture(ETrayType.Grr, i+1,1); if (fixtureret != null) { if (fixtureret.Result == EOneGrabSixteenResult.Ok) diff --git a/Rs.DeweyTester/TestFrm.cs b/Rs.DeweyTester/TestFrm.cs index 0bcc30f..dde618e 100644 --- a/Rs.DeweyTester/TestFrm.cs +++ b/Rs.DeweyTester/TestFrm.cs @@ -264,7 +264,7 @@ namespace Rs.MotionPlat } else { - ProductLocationResult fixtureret = FixedGrabProductFlow.Instance.Grab(ETrayType.Grr, slot.Index, 1); + ProductLocationResult fixtureret = FixedGrabProductFlow.Instance.TakePicture(ETrayType.Grr, slot.Index, 1); if(fixtureret!=null && (fixtureret.Result== EOneGrabSixteenResult.Ok || fixtureret.Result== EOneGrabSixteenResult.LocationOkScanBarcodeFail)) { StockTakeFlow.Instance.Take(ETrayType.Grr, slot.Index, 1,fixtureret,false);