From 8287e5b91dff39a8c88f37004040a25ac5f3f488 Mon Sep 17 00:00:00 2001 From: xcd <834800634@qq.com> Date: 星期三, 30 九月 2020 15:12:18 +0800 Subject: [PATCH] 1. KeyIndicator显示字体加粗 --- src/Bro.M071.Process/M071Process.cs | 368 ++++++++++++++++++++++++++++++---------------------- 1 files changed, 212 insertions(+), 156 deletions(-) diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs index 325cccc..a382503 100644 --- a/src/Bro.M071.Process/M071Process.cs +++ b/src/Bro.M071.Process/M071Process.cs @@ -48,6 +48,9 @@ public event Action OnFullResetDone; #endregion + string _precision = "f3"; + + public override void Open() { InitialSetting(); @@ -63,6 +66,11 @@ Reset(null, null, null); FullReset(null); + + if (Config.Precision > 0) + { + _precision = "f" + Config.Precision; + } } private void InitialMotionCardBaseAxisAlarm() @@ -199,10 +207,18 @@ MachineState = MachineState.Running; OnMeasureStart?.Invoke(); - var measurements = Config.MeasurementUnitCollection.Where(u => u.IsEnabled).ToList().DeepSerializeClone(); - measurements.ForEach(m => + //var measurements = Config.MeasurementUnitCollection.Where(u => u.IsEnabled).ToList().DeepSerializeClone(); + //measurements.ForEach(m => + //{ + // m.InitialKeyUnitMeasureChanged(); + //}); + + List<MeasurementUnit> measurements = new List<MeasurementUnit>(); + Config.MeasurementUnitCollection.Where(u => u.IsEnabled).ToList().ForEach(u => { + var m = u.Copy(); m.InitialKeyUnitMeasureChanged(); + measurements.Add(m); }); var pMeasure = new ProductionMeasurement() @@ -211,6 +227,8 @@ Measurements = measurements, StartTime = DateTime.Now, }; + + BarCode = ""; var existedProduction = productionList.FirstOrDefault(u => u.Barcode == pMeasure.Barcode); if (existedProduction != null) @@ -275,8 +293,9 @@ RunImageHandle(s.CameraOp.OpConfig, set, s.Id, s.Name, pMeasure.Measurements); }); - BarCode = ""; LogAsync(DateTime.Now, $"{pMeasure.Barcode}娴嬮噺鍔ㄤ綔瀹屾垚", ""); + + GC.Collect(0, GCCollectionMode.Optimized); return new ProcessResponse(true); } @@ -367,25 +386,36 @@ } else { - var array = m.KeyUnitCollection.SelectMany(u => u.MeasureValueDict.Values.ToList().ConvertAll(v => v ?? -999)).ToArray(); - _halconToolDict[toolKey].InputTupleDic["INPUT_Params"] = new HTuple(array); - if (!_halconToolDict[toolKey].RunProcedure(out string error)) + //var array = m.KeyUnitCollection.SelectMany(u => u.MeasureValueDict.Values.ToList().ConvertAll(v => v ?? -999)).ToArray(); + var array = m.KeyUnitCollection.SelectMany(u => u.MeasureValueDict.Values.Select(v => v ?? -999)).ToArray(); + + if (array == null || array.Length == 0) { - LogAsync(DateTime.Now, $"{m.GetDisplayText()}{m.Spec.Code}绠楁硶寮傚父,{error}", ""); + LogAsync(DateTime.Now, $"{m.GetDisplayText()}{m.Spec.Code}鏈兘鑾峰彇瀵瑰簲妫�娴嬪��", ""); m.Spec.ActualValue = -999; } else { - m.Spec.ActualValue = double.Parse(_halconToolDict[toolKey].GetResultTuple("OUTPUT_Result").D.ToString("f2")); - LogAsync(DateTime.Now, $"{m.GetDisplayText()}鏁版嵁{m.Spec.ActualValue}锛岀粨鏋渰(m.Spec.MeasureResult == null ? "TBD" : (m.Spec.MeasureResult == true ? "OK" : "NG"))}", ""); + + _halconToolDict[toolKey].InputTupleDic["INPUT_Params"] = new HTuple(array); + if (!_halconToolDict[toolKey].RunProcedure(out string error)) + { + LogAsync(DateTime.Now, $"{m.GetDisplayText()}{m.Spec.Code}绠楁硶寮傚父,{error}", ""); + m.Spec.ActualValue = -999; + } + else + { + m.Spec.ActualValue = double.Parse(_halconToolDict[toolKey].GetResultTuple("OUTPUT_Result").D.ToString(_precision)); + //LogAsync(DateTime.Now, $"{m.GetDisplayText()}鏁版嵁{m.Spec.ActualValue}锛岀粨鏋渰(m.Spec.MeasureResult == null ? "TBD" : (m.Spec.MeasureResult == true ? "OK" : "NG"))}", ""); + } } } } - LogAsync(DateTime.Now, $"{m.GetDisplayText()}妫�娴嬬粨鏋�", $"{((m.Spec.MeasureResult ?? false) ? "OK" : "NG")}"); + //LogAsync(DateTime.Now, $"{m.GetDisplayText()}妫�娴嬬粨鏋�", $"{((m.Spec.MeasureResult ?? false) ? "OK" : "NG")}"); KeyIndicator indicator = new KeyIndicator(m.Id, m.DisplayLocation); - indicator.Text = (m.Spec.ActualValue == null || m.Spec.ActualValue == -999) ? "NA" : m.Spec.ActualValue.Value.ToString("f2"); + indicator.Text = (m.Spec.ActualValue == null || m.Spec.ActualValue == -999) ? "NA" : m.Spec.ActualValue.Value.ToString(_precision); indicator.ResultState = m.Spec.MeasureResult; pMeasure.ElementList.Add(indicator); //杈撳嚭鍥惧舰鍩哄厓鍒扮晫闈� @@ -433,6 +463,7 @@ productionList.RemoveAll(p => p.Barcode == pMeasure.Barcode); pMeasure.Dispose(); + //LogAsync(DateTime.Now, $"{pMeasure.Barcode}浜у搧淇℃伅閲婃斁瀹屾垚", JsonConvert.SerializeObject(pMeasure)); } } @@ -517,7 +548,7 @@ measurementUnitResult.Keys = measurementUnit.KeyUnitCollection[0].KeyResultId + "~" + measurementUnit.KeyUnitCollection[measurementUnit.KeyUnitCollection.Count() - 1].KeyResultId; } measurementUnitResult.MeasurementType = measurementUnit.MeasureType; - measurementUnitResult.MeasurementValue = measurementUnit.Spec.ActualValue == null ? "NA" : measurementUnit.Spec.ActualValue.Value.ToString("f2"); + measurementUnitResult.MeasurementValue = measurementUnit.Spec.ActualValue == null ? "NA" : measurementUnit.Spec.ActualValue.Value.ToString(_precision); measurementUnitResult.MeasurementResult = measurementUnit.Spec.MeasureResult.Value ? "OK" : "NG"; measurementUnitResults.Add(measurementUnitResult); @@ -533,7 +564,7 @@ keyUnitData.ProductionBarcode = productionMeasurementRecords.ProductionBarcode; keyUnitData.Key = keyUnit.Key; keyUnitData.MeasurementItem = keyValue.Key; - keyUnitData.ItemValue = keyValue.Value == null ? "NA" : keyValue.Value.Value.ToString("f2"); + keyUnitData.ItemValue = keyValue.Value == null ? "NA" : keyValue.Value.Value.ToString(_precision); keyUnitDatas.Add(keyUnitData); MeasurementAndKeyDataRelation measurementAndKeyDataRelation = new MeasurementAndKeyDataRelation(); @@ -710,8 +741,6 @@ #region RawData { - //rawDataSheet = package.Workbook.Worksheets["RawData"]; - int rowDataStartCol = rawDataSheet.Dimension.Columns; var barcodeCell = rawDataSheet.Cells[1, rowDataStartCol + 1, 1, rowDataStartCol + 4]; barcodeCell.Merge = true; @@ -757,19 +786,14 @@ if (slantMeasures.Count > 0) { int slantStartCol = slantSheet.Dimension.Columns; - - var barcodeCell = slantSheet.Cells[1, slantStartCol + 1, 1, slantStartCol + 2]; - barcodeCell.Merge = true; + + var barcodeCell = slantSheet.Cells[1, slantStartCol + 1]; barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode; SetTitleCell(barcodeCell); var valueCell = slantSheet.Cells[2, slantStartCol + 1]; valueCell.Value = "Value"; SetTitleCell(valueCell); - - var resultCell = slantSheet.Cells[2, slantStartCol + 2]; - resultCell.Value = "Result"; - SetTitleCell(resultCell); slantMeasures.ForEach(m => { @@ -781,15 +805,15 @@ } var cellValue = slantSheet.Cells[rowIndex + 1 + 2, slantStartCol + 1]; - var cellResult = slantSheet.Cells[rowIndex + 1 + 2, slantStartCol + 2]; + //var cellResult = slantSheet.Cells[rowIndex + 1 + 2, slantStartCol + 2]; cellValue.Value = m.MeasurementValue; - cellResult.Value = m.MeasurementResult; + //cellResult.Value = m.MeasurementResult; if (m.MeasurementResult != "OK") { SetNGCell(cellValue); - SetNGCell(cellResult); + //SetNGCell(cellResult); } }); } @@ -804,7 +828,7 @@ int allRowNums = alignmentSheet.Dimension.Rows; int aligneStartCol = alignmentSheet.Dimension.Columns; - for (int i = 3; i <= allRowNums; i++) + for (int i = 3; i <= alignmentSheet.Dimension.End.Row; i++) { string keys = alignmentSheet.Cells[i, 1].Value.ToString(); string position = alignmentSheet.Cells[i, 2].Value.ToString(); @@ -812,8 +836,12 @@ keysList.Add($"{keys}_{position}"); } - var barcodeCell = alignmentSheet.Cells[1, aligneStartCol + 1, 1, aligneStartCol + 2]; - barcodeCell.Merge = true; + //var barcodeCell = alignmentSheet.Cells[1, aligneStartCol + 1, 1, aligneStartCol + 2]; + //barcodeCell.Merge = true; + //barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode; + //SetTitleCell(barcodeCell); + + var barcodeCell = alignmentSheet.Cells[1, aligneStartCol + 1]; barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode; SetTitleCell(barcodeCell); @@ -821,9 +849,9 @@ valueCell.Value = "Value"; SetTitleCell(valueCell); - var resultCell = alignmentSheet.Cells[2, aligneStartCol + 2]; - resultCell.Value = "Result"; - SetTitleCell(resultCell); + //var resultCell = alignmentSheet.Cells[2, aligneStartCol + 2]; + //resultCell.Value = "Result"; + //SetTitleCell(resultCell); alignmentMeasures.ForEach(a => { @@ -835,15 +863,15 @@ } var cellValue = alignmentSheet.Cells[rowIndex + 1 + 2, aligneStartCol + 1]; - var cellResult = alignmentSheet.Cells[rowIndex + 1 + 2, aligneStartCol + 2]; + //var cellResult = alignmentSheet.Cells[rowIndex + 1 + 2, aligneStartCol + 2]; cellValue.Value = a.MeasurementValue; - cellResult.Value = a.MeasurementResult; + //cellResult.Value = a.MeasurementResult; if (a.MeasurementResult != "OK") { SetNGCell(cellValue); - SetNGCell(cellResult); + //SetNGCell(cellResult); } }); } @@ -867,8 +895,12 @@ keysList.Add($"{keys}_{position}"); } - var barcodeCell = rowAlignmentSheet.Cells[1, aligneStartCol + 1, 1, aligneStartCol + 2]; - barcodeCell.Merge = true; + //var barcodeCell = rowAlignmentSheet.Cells[1, aligneStartCol + 1, 1, aligneStartCol + 2]; + //barcodeCell.Merge = true; + //barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode; + //SetTitleCell(barcodeCell); + + var barcodeCell = rowAlignmentSheet.Cells[1, aligneStartCol + 1]; barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode; SetTitleCell(barcodeCell); @@ -876,9 +908,9 @@ valueCell.Value = "Value"; SetTitleCell(valueCell); - var resultCell = rowAlignmentSheet.Cells[2, aligneStartCol + 2]; - resultCell.Value = "Result"; - SetTitleCell(resultCell); + //var resultCell = rowAlignmentSheet.Cells[2, aligneStartCol + 2]; + //resultCell.Value = "Result"; + //SetTitleCell(resultCell); rowAlignmentMeasures.ForEach(a => { @@ -890,15 +922,15 @@ } var cellValue = rowAlignmentSheet.Cells[rowIndex + 1 + 2, aligneStartCol + 1]; - var cellResult = rowAlignmentSheet.Cells[rowIndex + 1 + 2, aligneStartCol + 2]; + //var cellResult = rowAlignmentSheet.Cells[rowIndex + 1 + 2, aligneStartCol + 2]; cellValue.Value = a.MeasurementValue; - cellResult.Value = a.MeasurementResult; + //cellResult.Value = a.MeasurementResult; if (a.MeasurementResult != "OK") { SetNGCell(cellValue); - SetNGCell(cellResult); + //SetNGCell(cellResult); } }); } @@ -906,6 +938,11 @@ #endregion package.Save(); + + rawDataSheet.Dispose(); + slantSheet.Dispose(); + alignmentSheet.Dispose(); + rowAlignmentSheet.Dispose(); }; } }); @@ -913,10 +950,10 @@ private void SetNGCell(ExcelRange cell) { - cell.Style.Font.Color.SetColor(Color.White); + cell.Style.Font.Color.SetColor(Color.Red); cell.Style.Font.Bold = true; - cell.Style.Fill.PatternType = ExcelFillStyle.Solid; - cell.Style.Fill.BackgroundColor.SetColor(Color.Red); + //cell.Style.Fill.PatternType = ExcelFillStyle.Solid; + //cell.Style.Fill.BackgroundColor.SetColor(Color.Red); } private void SetTitleCell(ExcelRange cell, bool isCenterAlign = true) @@ -1030,134 +1067,153 @@ private async void RunImageHandle(IOperationConfig opConfig, IImageSet imgSet, string snapshotId, string snapshotName, List<MeasurementUnit> measureList) { await Task.Run(() => - { - var keys = Config.KeyUnitCollection.Where(u => u.IsEnabled && u.SnapshotPointId == snapshotId); - var keyBindCollection = measureList.SelectMany(u => u.KeyUnitCollection).Where(u => keys.Any(k => k.Key == u.Key)).ToList(); + { + var keys = Config.KeyUnitCollection.Where(u => u.IsEnabled && u.SnapshotPointId == snapshotId); + var keyBindCollection = measureList.SelectMany(u => u.KeyUnitCollection).Where(u => keys.Any(k => k.Key == u.Key)).ToList(); - string toolKey = (opConfig as CameraOprerationConfigBase).AlgorithemPath; - HObject images = imgSet.HImage; - LaserScanParam scanParam = JsonConvert.DeserializeObject<LaserScanParam>(imgSet.ImageData); - LogAsync(DateTime.Now, $"鎵弿鍙傛暟:{imgSet.ImageData}", ""); + string toolKey = (opConfig as CameraOprerationConfigBase).AlgorithemPath; + //HObject images = imgSet.HImage; - if (!string.IsNullOrWhiteSpace(toolKey)) - { - toolKey = snapshotId + "|" + toolKey; - if (!_halconToolDict.ContainsKey(toolKey)) - { - LogAsync(DateTime.Now, $"{snapshotName}鏈垵濮嬪寲鍙栧浘绠楁硶閰嶇疆", ""); - keyBindCollection.ForEach(k => k.FillKeyValues(null)); - return; - } + HObject images = new HObject(); + LaserScanParam scanParam = JsonConvert.DeserializeObject<LaserScanParam>(imgSet.ImageData); + LogAsync(DateTime.Now, $"鎵弿鍙傛暟:{imgSet.ImageData}", ""); - string fileName = Path.Combine(Config.ImageSaveFolder, "BeforeRun", $"{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.tif"); - imgSet.HImage.WriteImage("tiff", 0, fileName); + if (!string.IsNullOrWhiteSpace(toolKey)) + { + toolKey = snapshotId + "|" + toolKey; + if (!_halconToolDict.ContainsKey(toolKey)) + { + LogAsync(DateTime.Now, $"{snapshotName}鏈垵濮嬪寲鍙栧浘绠楁硶閰嶇疆", ""); + keyBindCollection.ForEach(k => k.FillKeyValues(null)); + return; + } - _halconToolDict[toolKey].InputImageDic["INPUT_Image"] = imgSet.HImage; - if (!_halconToolDict[toolKey].RunProcedure(out string error)) - { - LogAsync(DateTime.Now, $"{snapshotName}鍙栧浘绠楁硶寮傚父锛寋error}", ""); - keyBindCollection.ForEach(k => k.FillKeyValues(null)); - return; - } + //string fileName = Path.Combine(Config.ImageSaveFolder, "BeforeRun", $"{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.tif"); + //imgSet.HImage.WriteImage("tiff", 0, fileName); - images = _halconToolDict[toolKey].GetResultObject("OUTPUT_Images"); - } + if (imgSet.HImage == null) + { + LogAsync(DateTime.Now, $"{snapshotName}鍥剧墖涓虹┖瀵硅薄", ""); + keyBindCollection.ForEach(k => k.FillKeyValues(null)); + return; + } - HOperatorSet.CountObj(images, out HTuple count); - LogAsync(DateTime.Now, $"{snapshotName}鍒囧浘{count.I}寮�", ""); + _halconToolDict[toolKey].InputImageDic["INPUT_Image"] = imgSet.HImage; + if (!_halconToolDict[toolKey].RunProcedure(out string error)) + { + LogAsync(DateTime.Now, $"{snapshotName}鍙栧浘绠楁硶寮傚父锛寋error}", ""); + keyBindCollection.ForEach(k => k.FillKeyValues(null)); + return; + } - if (count == 0) - { - LogAsync(DateTime.Now, $"{snapshotName}鍙栧浘绠楁硶鏈緭鍑哄浘鍍�", ""); - keyBindCollection.ForEach(k => k.FillKeyValues(null)); - return; - } + images = _halconToolDict[toolKey].GetResultObject("OUTPUT_Images"); + } - var excludeKeys = keys.Where(u => u.ImageSeq > count.I).ToList(); - if (excludeKeys.Count > 0) - { - LogAsync(DateTime.Now, $"{string.Join(" ", excludeKeys.Select(u => u.AliasName))}鏈湪鍥剧墖鑾峰彇搴忓垪涓�", ""); - keyBindCollection.Where(k => excludeKeys.Any(u => u.Key == k.Key)).ToList().ForEach(k => - { - k.FillKeyValues(null); - }); - } + HOperatorSet.CountObj(images, out HTuple count); + LogAsync(DateTime.Now, $"{snapshotName}鍒囧浘{count.I}寮�", ""); - string dir = Path.Combine(Config.ImageSaveFolder, "Clips", $"{DateTime.Now.ToString("yyyyMMdd")}", $"{snapshotName}_{DateTime.Now.ToString("HHmmss")}"); - if (!Directory.Exists(dir)) - { - Directory.CreateDirectory(dir); - } + if (count == 0) + { + LogAsync(DateTime.Now, $"{snapshotName}鍙栧浘绠楁硶鏈緭鍑哄浘鍍�", ""); + keyBindCollection.ForEach(k => k.FillKeyValues(null)); + return; + } - //Parallel.For(1, count.I + 1, (i) => - for (int i = 1; i <= count.I; i++) - { - HOperatorSet.SelectObj(images, out HObject image, i); + var excludeKeys = keys.Where(u => u.ImageSeq > count.I).ToList(); + if (excludeKeys.Count > 0) + { + LogAsync(DateTime.Now, $"{string.Join(" ", excludeKeys.Select(u => u.AliasName))}鏈湪鍥剧墖鑾峰彇搴忓垪涓�", ""); + keyBindCollection.Where(k => excludeKeys.Any(u => u.Key == k.Key)).ToList().ForEach(k => + { + k.FillKeyValues(null); + }); + } - string fileName = Path.Combine(dir, $"{i}.tif"); - using (HImage temp = image.ConvertHObjectToHImage()) - { - temp.WriteImage("tiff", 0, fileName); - } + //string dir = Path.Combine(Config.ImageSaveFolder, "Clips", $"{DateTime.Now.ToString("yyyyMMdd")}", $"{snapshotName}_{DateTime.Now.ToString("HHmmss")}"); + //if (!Directory.Exists(dir)) + //{ + // Directory.CreateDirectory(dir); + //} - keys.Where(u => u.ImageSeq == i).ToList().ForEach(k => - { - Dictionary<string, double> resultDict = null; + //Parallel.For(1, count.I + 1, (i) => + for (int i = 1; i <= count.I; i++) + { + HOperatorSet.SelectObj(images, out HObject image, i); - var keyBindList = keyBindCollection.Where(u => u.Key == k.Key).ToList(); + //string fileName = Path.Combine(dir, $"{i}.tif"); + //using (HImage temp = image.ConvertHObjectToHImage()) + //{ + // temp.WriteImage("tiff", 0, fileName); + //} - string keyToolKey = k.AliasName + "|" + k.KeyAlgorithemPath; - if (!_halconToolDict.ContainsKey(keyToolKey)) - { - LogAsync(DateTime.Now, $"{k.AliasName}妫�娴嬬畻娉曟湭鍒濆鍖�", ""); - } - else - { - _halconToolDict[keyToolKey].InputImageDic["INPUT_Image"] = image; - _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_X"] = scanParam.Resolution_X / 1000000.0; - _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_Z"] = scanParam.Resolution_Z / 1000000.0; - _halconToolDict[keyToolKey].InputTupleDic["INPUT_ImageId"] = $"{k.AliasName}_{DateTime.Now.ToString("HHmmssfff")}.tif"; - if (!_halconToolDict[keyToolKey].RunProcedure(out string error)) - { - LogAsync(DateTime.Now, $"{k.AliasName}妫�娴嬬畻娉曞紓甯革紝{error}", ""); - } - else - { - var results = _halconToolDict[keyToolKey].GetResultTuple("OUTPUT_Results").DArr.ToList(); - if (results.Count == 0 || results.Any(u => u < 0)) - { - LogAsync(DateTime.Now, $"{k.AliasName}鍘熷鏁版嵁寮傚父", ""); - } - else - { - //results = results.Select(u => double.Parse(u.ToString("f2"))).ToList(); - LogAsync(DateTime.Now, $"{k.AliasName}鍘熷鏁版嵁", $"{string.Join(" ", results)}"); - resultDict = k.KeyResultList.ToDictionary(u => u, u => - { - int index = k.KeyResultList.IndexOf(u); - return results[index]; - }); - } - } - } + keys.Where(u => u.ImageSeq == i).ToList().ForEach(k => + { + Dictionary<string, double> resultDict = null; - keyBindList.ForEach(kb => - { - kb.KeyImages.Add(image.ConvertHObjectToHImage()); - kb.FillKeyValues(resultDict); - }); - }); + var keyBindList = keyBindCollection.Where(u => u.Key == k.Key).ToList(); - image.Dispose(); - } - //); + string keyToolKey = k.AliasName + "|" + k.KeyAlgorithemPath; + if (!_halconToolDict.ContainsKey(keyToolKey)) + { + LogAsync(DateTime.Now, $"{k.AliasName}妫�娴嬬畻娉曟湭鍒濆鍖�", ""); + } + else + { + _halconToolDict[keyToolKey].InputImageDic["INPUT_Image"] = image; + _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_X"] = scanParam.Resolution_X / 1000000.0; + _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_Y"] = scanParam.Resolution_Y / 1000000.0; + _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_Z"] = scanParam.Resolution_Z / 1000000.0; + _halconToolDict[keyToolKey].InputTupleDic["INPUT_ImageId"] = $"{k.AliasName}_{DateTime.Now.ToString("HHmmssfff")}.tif"; + if (!_halconToolDict[keyToolKey].RunProcedure(out string error)) + { + LogAsync(DateTime.Now, $"{k.AliasName}妫�娴嬬畻娉曞紓甯革紝{error}", ""); + } + else + { + var results = _halconToolDict[keyToolKey].GetResultTuple("OUTPUT_Results").DArr.ToList(); + if (results.Count == 0 || results.Any(u => u < 0)) + { + LogAsync(DateTime.Now, $"{k.AliasName}鍘熷鏁版嵁寮傚父", ""); + } + else + { + //LogAsync(DateTime.Now, $"{k.AliasName}鍘熷鏁版嵁", $"{string.Join(" ", results)}"); - //if (count.I != 1) - //{ - // hImage?.Dispose(); - // hImage = null; - //} - }); + results = results.Select(u => u - Config.PlanCompensation).ToList(); + resultDict = k.KeyResultList.ToDictionary(u => u, u => + { + int index = k.KeyResultList.IndexOf(u); + return results[index]; + }); + } + } + } + + keyBindList.ForEach(kb => + { + kb.KeyImages.Add(image.ConvertHObjectToHImage()); + kb.FillKeyValues(resultDict); + }); + }); + + image.Dispose(); + image = null; + } + //); + + imgSet.HImage.Dispose(); + imgSet.HImage = null; + imgSet.Dispose(); + + images.Dispose(); + images = null; + + //if (count.I != 1) + //{ + // hImage?.Dispose(); + // hImage = null; + //} + }); } #endregion } -- Gitblit v1.8.0