From 007782bf44e49b4e3d5166ef361ac9fd03cad9c2 Mon Sep 17 00:00:00 2001 From: kingno <30263@KINGNO> Date: 星期二, 17 六月 2025 13:07:43 +0800 Subject: [PATCH] 合并 --- src/Bro.M141.Process/M141Process_ImageCheck.cs | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 110 insertions(+), 0 deletions(-) diff --git a/src/Bro.M141.Process/M141Process_ImageCheck.cs b/src/Bro.M141.Process/M141Process_ImageCheck.cs index 3b69ea8..fc4dc13 100644 --- a/src/Bro.M141.Process/M141Process_ImageCheck.cs +++ b/src/Bro.M141.Process/M141Process_ImageCheck.cs @@ -8,7 +8,9 @@ using Microsoft.VisualBasic; using Newtonsoft.Json; using Newtonsoft.Json.Linq; +using NPOI.SS.UserModel; using NPOI.Util; +using NPOI.XSSF.UserModel; using Sunny.UI; using System.Data; using System.Data.SqlTypes; @@ -439,6 +441,8 @@ return msg; } + + [ProcessMethod("", "ProductDataUpload", "浜у搧鏁版嵁姹囨��", InvokeType.TestInvoke)] @@ -503,6 +507,109 @@ } + private bool _isDemoStarted = false; + [ProcessMethod("OfflineDemo", "OfflineDemo", "绂荤嚎娴嬭瘯", InvokeType.CalibInvoke)] + public ResponseMessage OfflineDemo(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice) + { + if (config is OfflineDemoOperationConfig opConfig) + { + if (_isDemoStarted) + { + _isDemoStarted = false; + } + else + { + _isDemoStarted = true; + OfflineDemoAsync(opConfig.ImageFolder); + } + } + + return new ResponseMessage(); + } + + private async void OfflineDemoAsync(string imageFolder) + { + await Task.Run(() => + { + var imageFileNames = new DirectoryInfo(imageFolder).GetFiles().Select(u => u.FullName).ToList(); + + for (int i = 0; i < imageFileNames.Count; i++) + { + if (!_isDemoStarted) + { + return; + } + + var imageFile = Path.GetFileNameWithoutExtension(imageFileNames[i]); + if (imageFile.EndsWith("Fit")) + { + continue; + } + + var nameDatas = imageFile.Split(new char[] { '_'}, StringSplitOptions.RemoveEmptyEntries).ToList(); + if (nameDatas.Count != 5) + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"鏂囦欢{imageFile}鍛藉悕涓嶇鍚堣鑼冿紝涓嶆墽琛岀绾挎祴璇�"); + continue; + } + + var sn = nameDatas[0]; + var imageSeq = nameDatas[1]; + + var measureBind = M141Config.MeasureBindCollection.FirstOrDefault(u => u.ImageSaveSeq == imageSeq); + if (measureBind == null || !measureBind.IsFixed) + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"绂荤嚎娴嬭瘯锛屽伐浣峽(measureBind == null ? "鏈尮閰�" : $"{measureBind.WorkPosition}鏈紑鍚�")}"); + continue; + } + + LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"绂荤嚎娴嬭瘯锛屼骇鍝亄sn}寮�濮嬪伐浣峽measureBind.WorkPosition}绂荤嚎妫�娴�"); + MLImageSet imgSet = new MLImageSet(); + imgSet.HImage = new HalconDotNet.HImage(imageFileNames[i]); + imgSet.PID = sn; + + var detectResults = ML.RunMLDetectionSync(imgSet, null, measureBind.DetectionId); + + imgSet.HImage?.Dispose(); + imgSet.HImage = null; + + + + //var defectFields = M141Config.DefectLocationSettings.FirstOrDefault(u => u.PositionCode == measureBind.WorkPosition); + + + //var list = detectResults.SelectMany(u => u.NetResults.SelectMany(m => m.DetectDetails)).ToList(); + ////if (list.Count > 0) + ////{ + //// //list.ForEach(d => + //// //{ + //// // //if (defectFields == null) + //// // //{ + //// // // d.Tag = ""; + //// // //} + //// // //else + //// // //{ + //// // // RectangleF rect = new RectangleF(d.Rect.Point_LU.X, d.Rect.Point_LU.Y, d.Rect.Width, d.Rect.Height); + //// // // //var rectList = defectFields.Display.RectDict.Where(u => rect.IntersectsWith(u.Value)).ToList(); + //// // // //if (rectList.Count > 0) + //// // // //{ + //// // // // d.Tag = string.Join(" ", rectList.Select(u => u.Key).OrderBy(u => u)); + //// // // //} + //// // // //else + //// // // //{ + //// // // // d.Tag = ""; + //// // // //} + //// // //} + //// //}); + ////} + + //Bitmap originImage = new Bitmap(imageFileNames[i]); + //DetectResultSaveExcelAsync(detectResults, sn, originImage, DateTime.Now); + } + }); + } + + [ProcessMethod("printer", "printer", "鎵撳嵃鏈烘墦鍗�", InvokeType.TestInvoke)] public ResponseMessage Printer(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice) @@ -560,6 +667,9 @@ return specList; } + + + protected void FillSpecResults(string pid, List<ISpec> detectSpec, List<double> results, string SEQUENCE) { detectSpec.ForEach(s => -- Gitblit v1.8.0