From 12200ec69e33881649974f31f270750ba6b15e1d Mon Sep 17 00:00:00 2001 From: xcd <834800634@qq.com> Date: 星期二, 14 七月 2020 18:27:31 +0800 Subject: [PATCH] Merge branch 'master' of http://gitblit.broconcentric.com:8088/r/M071 --- src/Bro.M071.Process/M071Process.cs | 53 ++++++++++++++++++++++++++++++++--------------------- 1 files changed, 32 insertions(+), 21 deletions(-) diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs index b0b9ecf..144827a 100644 --- a/src/Bro.M071.Process/M071Process.cs +++ b/src/Bro.M071.Process/M071Process.cs @@ -61,7 +61,6 @@ Reset(null, null, null); FullReset(null); - } private void InitialMotionCardBaseAxisAlarm() @@ -82,7 +81,7 @@ private void InitialSetting() { //鏁版嵁搴撹縼绉绘鏌� - DatabaseInitialize.Initialize(); + //DatabaseInitialize.Initialize(); MotionCardSettingCheck(); @@ -196,7 +195,7 @@ } MachineState = MachineState.Running; - OnMeasureStart?.BeginInvoke(null, null); + OnMeasureStart?.Invoke(); var measurements = Config.MeasurementUnitCollection.Where(u => u.IsEnabled).ToList().DeepSerializeClone(); measurements.ForEach(m => @@ -226,9 +225,12 @@ Config.SnapshotPointCollection.Where(u => u.IsEnabled).ToList().ForEach(s => { - _pauseHandle.WaitHandle.WaitOne(); + _pausedHandle.Wait(); - if (MachineState != MachineState.Running) + if (MachineState == MachineState.Ready) + return; + + if (MachineState != MachineState.Running && MachineState != MachineState.Pause) { throw new ProcessException("鏈哄彴鐘舵�佷笉鍦ㄨ繍琛屼腑锛岄��鍑烘娴�"); } @@ -336,10 +338,14 @@ { if (sender is ProductionMeasurement pMeasure) { - lock (pMeasure) + var production = productionList.FirstOrDefault(u => u.Barcode == pMeasure.Barcode); + if (production == null) + return; + + lock (production) { //妫�鏌ユ槸鍚﹀叏閮ㄥ畬鎴� - pMeasure.Measurements.ForEach(m => + pMeasure.Measurements?.ForEach(m => { if (m.KeyUnitCollection.All(k => k.IsDone != null)) { @@ -381,7 +387,7 @@ indicator.ResultState = m.Spec.MeasureResult; pMeasure.ElementList.Add(indicator); //杈撳嚭鍥惧舰鍩哄厓鍒扮晫闈� - OnElementUpdated?.BeginInvoke(indicator, null, null); + OnElementUpdated?.Invoke(indicator); SaveKeyImages(pMeasure.Barcode, m); @@ -414,8 +420,8 @@ { } - ////Excel鎶ヨ〃杈撳嚭 锛堝崟涓骇鍝佺殑excel瀵煎嚭锛� - //ExportProductionExcel(measurementUnitResultAndKeyUnitDataSet); + //Excel鎶ヨ〃杈撳嚭 锛堝崟涓骇鍝佺殑excel瀵煎嚭锛� + ExportProductionExcel(measurementUnitResultAndKeyUnitDataSet); ////鏁版嵁搴撲繚瀛� //SaveProductionData(measurementUnitResultAndKeyUnitDataSet); @@ -493,7 +499,8 @@ { MeasurementUnitResult measurementUnitResult = new MeasurementUnitResult(); measurementUnitResult.ProductionMeasurementRecordsId = productionMeasurementRecords.ID; - measurementUnitResult.MeasurementName = measurementUnit.Name; + measurementUnitResult.ProductionBarcode = productionMeasurementRecords.ProductionBarcode; + measurementUnitResult.MeasurementName = measurementUnit.GetDisplayText(); measurementUnitResult.MeasurementType = measurementUnit.MeasureType; measurementUnitResult.MeasurementValue = measurementUnit.Spec.ActualValue.ToString(); measurementUnitResult.MeasurementResult = measurementUnit.Spec.MeasureResult.Value ? "OK" : "NG"; @@ -508,6 +515,7 @@ if (!isExist)//宸插瓨鍦� 涓嶉噸澶嶆坊鍔犲師濮嬫暟鎹� { KeyUnitData keyUnitData = new KeyUnitData(); + keyUnitData.ProductionBarcode = productionMeasurementRecords.ProductionBarcode; keyUnitData.Key = keyUnit.Key; keyUnitData.MeasurementItem = keyValue.Key; keyUnitData.ItemValue = keyValue.Value.ToString(); @@ -544,12 +552,14 @@ excelExportDto.Worksheets = new List<string>() { "鍘熷鏁版嵁", "妫�娴嬬粨鏋�" }; var keyUnitColumns = new Dictionary<string, string>() { + {"ProductionBarcode", "浜у搧鏉$爜"}, {"Key", "閿�"}, {"MeasurementItem", "妫�娴嬮」"}, {"ItemValue", "妫�娴嬪��"} }; var measurementUnitResultColumns = new Dictionary<string, string>() { + {"ProductionBarcode", "浜у搧鏉$爜"}, {"MeasurementName", "妫�娴嬪悕绉�"}, {"MeasurementType", "妫�娴嬬被鍨�"}, {"MeasurementValue", "妫�娴嬪��"}, @@ -561,14 +571,14 @@ excelExportDto.WorksheetDataTable[excelExportDto.Worksheets[0]] = ExcelExportHelper.ListToDataTable(measurementUnitResultAndKeyUnitDataSet.KeyUnitDataList, keyUnitColumns); excelExportDto.WorksheetDataTable[excelExportDto.Worksheets[1]] = ExcelExportHelper.ListToDataTable(measurementUnitResultAndKeyUnitDataSet.MeasurementUnitResultList, measurementUnitResultColumns); ; - byte[] filecontent = ExcelExportHelper.ExportExcel(excelExportDto, false); - string dir = Path.Combine(Config.LogPath, DateTime.Now.ToString("yyyyMMdd")); - if (!Directory.Exists(dir)) + if (!Directory.Exists(Config.LogPath)) { - Directory.CreateDirectory(dir); + Directory.CreateDirectory(Config.LogPath); } + var fileName = Path.Combine(Config.LogPath, $"ProductionData_{DateTime.Now.ToString("yyyyMMdd")}.xlsx"); - FileStream fs = new FileStream(Path.Combine(dir, $"{measurementUnitResultAndKeyUnitDataSet.ProductionMeasurementRecord.ProductionBarcode}_{DateTime.Now.ToString("HHmmss")}.xlsx"), FileMode.Create, FileAccess.Write); + byte[] filecontent = ExcelExportHelper.CreateOrAppendExcel(excelExportDto, fileName); + FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write); fs.Write(filecontent, 0, filecontent.Length); fs.Flush(); fs.Close(); @@ -719,14 +729,14 @@ }); } - string dir = Path.Combine(Config.ImageSaveFolder, "Clips", $"{snapshotName}_{DateTime.Now.ToString("HHmmss")}"); + string dir = Path.Combine(Config.ImageSaveFolder, "Clips", $"{DateTime.Now.ToString("yyyyMMdd")}", $"{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++) + //Parallel.For(1, count.I + 1, (i) => + for (int i = 1; i <= count.I; i++) { HOperatorSet.SelectObj(images, out HObject image, i); @@ -758,10 +768,11 @@ var results = _halconToolDict[keyToolKey].GetResultTuple("OUTPUT_Results").HTupleToDouble(); if (results.Count == 0 || results.Any(u => u < 0)) { - LogAsync(DateTime.Now, $"{k.AliasName}妫�娴嬬粨鏋滃紓甯�", ""); + LogAsync(DateTime.Now, $"{k.AliasName}鍘熷鏁版嵁寮傚父", ""); } else { + LogAsync(DateTime.Now, $"{k.AliasName}鍘熷鏁版嵁", $"{string.Join(" ", results)}"); resultDict = k.KeyResultList.ToDictionary(u => u, u => { int index = k.KeyResultList.IndexOf(u); @@ -780,7 +791,7 @@ //image.Dispose(); } - ); + //); //if (count.I != 1) //{ -- Gitblit v1.8.0