From 9aba9bbb5682cae407dfb1e52c80f57494ed38d6 Mon Sep 17 00:00:00 2001 From: wells.liu <wells.liu@broconcentric.com> Date: 星期一, 13 七月 2020 14:12:57 +0800 Subject: [PATCH] 测试 excel导出 --- src/Bro.M071.Process/M071Process.cs | 82 +++++++++++++++++++++++++++++----------- 1 files changed, 59 insertions(+), 23 deletions(-) diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs index caa2bd1..b0b9ecf 100644 --- a/src/Bro.M071.Process/M071Process.cs +++ b/src/Bro.M071.Process/M071Process.cs @@ -5,6 +5,7 @@ using Bro.M071.DBManager; using Bro.M071.Model; using Bro.M071.Model.Model; +using Bro.M071.Process.UI; using Bro.Process; using HalconDotNet; using Newtonsoft.Json; @@ -12,6 +13,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Drawing; +using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Text; @@ -59,6 +61,7 @@ Reset(null, null, null); FullReset(null); + } private void InitialMotionCardBaseAxisAlarm() @@ -72,14 +75,14 @@ private void MotionCard_OnAxisAlarmRaised(int axisIndex, string alarmMsg) { - RaisedAlarm(alarmMsg); + RaisedAlarm(alarmMsg); MachineState = MachineState.Alarm; } private void InitialSetting() { //鏁版嵁搴撹縼绉绘鏌� - //DatabaseInitialize.Initialize(); + DatabaseInitialize.Initialize(); MotionCardSettingCheck(); @@ -178,6 +181,11 @@ [ProcessMethod("", "StartJob", "寮�濮嬫壂鎻�", InvokeType.TestInvoke)] public ProcessResponse StartJob(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice) { + if (!IsAllowedWork) + { + throw new ProcessException(SafetyMsg, null, ExceptionLevel.Fatal); + } + if (MachineState != MachineState.Ready) throw new ProcessException("鏈哄彴鏈氨缁紝璇峰嬁寮�濮嬫祴閲�", null, ExceptionLevel.Fatal); @@ -219,6 +227,11 @@ Config.SnapshotPointCollection.Where(u => u.IsEnabled).ToList().ForEach(s => { _pauseHandle.WaitHandle.WaitOne(); + + if (MachineState != MachineState.Running) + { + throw new ProcessException("鏈哄彴鐘舵�佷笉鍦ㄨ繍琛屼腑锛岄��鍑烘娴�"); + } IDevice device = DeviceCollection.FirstOrDefault(u => u.Id == s.MotionOp.Device); if (device == null) @@ -363,7 +376,9 @@ LogAsync(DateTime.Now, $"{m.GetDisplayText()}妫�娴嬬粨鏋�", $"{((m.Spec.MeasureResult ?? false) ? "OK" : "NG")}"); - IShapeElement indicator = null; + 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.ResultState = m.Spec.MeasureResult; pMeasure.ElementList.Add(indicator); //杈撳嚭鍥惧舰鍩哄厓鍒扮晫闈� OnElementUpdated?.BeginInvoke(indicator, null, null); @@ -399,10 +414,10 @@ { } - //Excel鎶ヨ〃杈撳嚭 锛堝崟涓骇鍝佺殑excel瀵煎嚭锛� - ExportProductionExcel(measurementUnitResultAndKeyUnitDataSet); - //鏁版嵁搴撲繚瀛� - SaveProductionData(measurementUnitResultAndKeyUnitDataSet); + ////Excel鎶ヨ〃杈撳嚭 锛堝崟涓骇鍝佺殑excel瀵煎嚭锛� + //ExportProductionExcel(measurementUnitResultAndKeyUnitDataSet); + ////鏁版嵁搴撲繚瀛� + //SaveProductionData(measurementUnitResultAndKeyUnitDataSet); SaveWholeImage(pMeasure); @@ -474,18 +489,18 @@ measurementUnitResultAndKeyUnitDataSet.ProductionMeasurementRecord = productionMeasurementRecords; - foreach (var MeasurementUnitResult in pData.Measurements)//鑾峰彇鍒板崟涓祴閲忛」缁撴灉 + foreach (var measurementUnit in pData.Measurements)//鑾峰彇鍒板崟涓祴閲忛」缁撴灉 { MeasurementUnitResult measurementUnitResult = new MeasurementUnitResult(); measurementUnitResult.ProductionMeasurementRecordsId = productionMeasurementRecords.ID; - measurementUnitResult.MeasurementName = MeasurementUnitResult.Name; - measurementUnitResult.MeasurementType = MeasurementUnitResult.MeasureType; - measurementUnitResult.MeasurementValue = MeasurementUnitResult.Spec.ActualValue.ToString(); - measurementUnitResult.MeasurementResult = MeasurementUnitResult.Spec.MeasureResult.Value ? "OK" : "NG"; + measurementUnitResult.MeasurementName = measurementUnit.Name; + measurementUnitResult.MeasurementType = measurementUnit.MeasureType; + measurementUnitResult.MeasurementValue = measurementUnit.Spec.ActualValue.ToString(); + measurementUnitResult.MeasurementResult = measurementUnit.Spec.MeasureResult.Value ? "OK" : "NG"; measurementUnitResults.Add(measurementUnitResult); - foreach (var keyUnit in MeasurementUnitResult.KeyUnitCollection)//鑾峰彇鍗曚釜閿殑娴嬮噺缁撴灉 + foreach (var keyUnit in measurementUnit.KeyUnitCollection)//鑾峰彇鍗曚釜閿殑娴嬮噺缁撴灉 { foreach (var keyValue in keyUnit.MeasureValueDict)//鑾峰彇鍗曚釜閿殑鍗曚釜娴嬮噺item 缁撴灉 { @@ -584,7 +599,7 @@ Directory.CreateDirectory(dir); } - map.Save(Path.Combine(dir, $"{pMeasure.Barcode}_{DateTime.Now.ToString("HHmmss")}.bmp")); + map.Save(Path.Combine(dir, $"{pMeasure.Barcode}_{pMeasure.PResult}_{DateTime.Now.ToString("HHmmss")}.png"), ImageFormat.Png); } catch (Exception ex) { @@ -632,8 +647,16 @@ int i = 0; u.KeyImages?.ForEach(image => { - string fileName = Path.Combine(dir, $"{measureName}_{u.Key}{(i == 0 ? "" : $"-{i}")}_{DateTime.Now.ToString("HHmmss")}.tiff"); - image.WriteImage("tiff", 0, fileName); + string fileName = ""; + try + { + fileName = Path.Combine(dir, $"{measureName}_{u.Key}{(i == 0 ? "" : $"-{i}")}_{DateTime.Now.ToString("HHmmss")}.tiff"); + image.WriteImage("tiff", 0, fileName); + } + catch (Exception) + { + LogAsync(DateTime.Now, "鍒囧浘淇濆瓨澶辫触", fileName); + } i++; }); @@ -653,6 +676,7 @@ string toolKey = (opConfig as CameraOprerationConfigBase).AlgorithemPath; HObject images = imgSet.HImage; LaserScanParam scanParam = JsonConvert.DeserializeObject<LaserScanParam>(imgSet.ImageData); + LogAsync(DateTime.Now, $"鎵弿鍙傛暟:{imgSet.ImageData}", ""); if (!string.IsNullOrWhiteSpace(toolKey)) { @@ -676,6 +700,7 @@ } HOperatorSet.CountObj(images, out HTuple count); + LogAsync(DateTime.Now, $"{snapshotName}鍒囧浘{count.I}寮�", ""); if (count == 0) { @@ -684,7 +709,7 @@ return; } - var excludeKeys = keys.Where(u => u.ImageSeq > count).ToList(); + var excludeKeys = keys.Where(u => u.ImageSeq > count.I).ToList(); if (excludeKeys.Count > 0) { LogAsync(DateTime.Now, $"{string.Join(" ", excludeKeys.Select(u => u.AliasName))}鏈湪鍥剧墖鑾峰彇搴忓垪涓�", ""); @@ -694,9 +719,19 @@ }); } - Parallel.For(1, count.I, (i) => + string dir = Path.Combine(Config.ImageSaveFolder, "Clips", $"{snapshotName}_{DateTime.Now.ToString("HHmmss")}"); + if (!Directory.Exists(dir)) + { + Directory.CreateDirectory(dir); + } + + Parallel.For(1, count.I + 1, (i) => + //for (int i = 1; i <= count.I; i++) { HOperatorSet.SelectObj(images, out HObject image, i); + + string fileName = Path.Combine(dir, $"{i}.tif"); + image.ConvertHObjectToHImage().WriteImage("tiff", 0, fileName); keys.Where(u => u.ImageSeq == i).ToList().ForEach(k => { @@ -712,8 +747,8 @@ else { _halconToolDict[keyToolKey].InputImageDic["INPUT_Image"] = image; - _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_X"] = scanParam.Resolution_X; - _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_Z"] = scanParam.Resolution_Z; + _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_X"] = scanParam.Resolution_X / 1000000.0; + _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_Z"] = scanParam.Resolution_Z / 1000000.0; if (!_halconToolDict[keyToolKey].RunProcedure(out string error)) { LogAsync(DateTime.Now, $"{k.AliasName}妫�娴嬬畻娉曞紓甯革紝{error}", ""); @@ -738,13 +773,14 @@ keyBindList.ForEach(kb => { - kb.KeyImages.Add(image.Clone() as HImage); + kb.KeyImages.Add(image.ConvertHObjectToHImage()); kb.FillKeyValues(resultDict); }); }); - image.Dispose(); - }); + //image.Dispose(); + } + ); //if (count.I != 1) //{ -- Gitblit v1.8.0