From d3a44f202c0b12cbac67c71129c3c4f480df55b9 Mon Sep 17 00:00:00 2001
From: xcd <834800634@qq.com>
Date: 星期三, 15 七月 2020 15:48:32 +0800
Subject: [PATCH] 光幕触发修改为同步,消弭信号抖动问题 Excel导出测试
---
src/Bro.M071.Process/UI/M071_MainForm.cs | 2
src/Bro.M071.Process/M071Process.cs | 77 +++++++++++++++++++++++++
src/Bro.M071.Process/M071Process_MotionCard.cs | 17 +++--
src/Bro.M071.Process/Bro.M071.Process.csproj | 6 ++
src/Bro.M071.Process/packages.config | 1
src/Bro.M071.DBManager/ExcelExportHelper.cs | 24 ++++---
6 files changed, 108 insertions(+), 19 deletions(-)
diff --git a/src/Bro.M071.DBManager/ExcelExportHelper.cs b/src/Bro.M071.DBManager/ExcelExportHelper.cs
index 443b6fb..b804e74 100644
--- a/src/Bro.M071.DBManager/ExcelExportHelper.cs
+++ b/src/Bro.M071.DBManager/ExcelExportHelper.cs
@@ -12,20 +12,23 @@
public class ExcelExportSet
{
- public List<string> Worksheets { get; set; }
+ public List<string> Worksheets { get; set; } = new List<string>();
/// <summary>
/// Key锛� Worksheet鐨勫悕绉� Value:Worksheet瀵瑰簲鐨勫垪鍚嶉泦鍚�(key 涓鸿瀵煎嚭鐨勫垪鍚� value 涓哄鍑哄悗鏄剧ず鐨勫垪鍚�)
/// </summary>
- public Dictionary<string, Dictionary<string, string>> WorksheetColumns { get; set; }
- public Dictionary<string, DataTable> WorksheetDataTable { get; set; }
+ public Dictionary<string, Dictionary<string, string>> WorksheetColumns { get; set; } = new Dictionary<string, Dictionary<string, string>>();
- public ExcelExportSet()
- {
- Worksheets = new List<string>();
- WorksheetColumns = new Dictionary<string, Dictionary<string, string>>();
- WorksheetDataTable = new Dictionary<string, DataTable>();
- }
+ public Dictionary<string, Dictionary<string, string>> WorksheetRows { get; set; } = new Dictionary<string, Dictionary<string, string>>();
+
+ public Dictionary<string, DataTable> WorksheetDataTable { get; set; } = new Dictionary<string, DataTable>();
+
+ //public ExcelExportSet()
+ //{
+ // Worksheets = new List<string>();
+ // WorksheetColumns = new Dictionary<string, Dictionary<string, string>>();
+ // WorksheetDataTable = new Dictionary<string, DataTable>();
+ //}
}
@@ -265,6 +268,7 @@
return "";
}
}
-
}
+
+
}
diff --git a/src/Bro.M071.Process/Bro.M071.Process.csproj b/src/Bro.M071.Process/Bro.M071.Process.csproj
index 60f4879..d744dfa 100644
--- a/src/Bro.M071.Process/Bro.M071.Process.csproj
+++ b/src/Bro.M071.Process/Bro.M071.Process.csproj
@@ -81,6 +81,9 @@
<Reference Include="Autofac, Version=4.9.4.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
<HintPath>..\..\packages\Autofac.4.9.4\lib\net45\Autofac.dll</HintPath>
</Reference>
+ <Reference Include="EPPlus, Version=4.5.3.3, Culture=neutral, PublicKeyToken=ea159fdaa78159a1, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\EPPlus.4.5.3.3\lib\net40\EPPlus.dll</HintPath>
+ </Reference>
<Reference Include="halcondotnet, Version=12.0.0.0, Culture=neutral, PublicKeyToken=4973bed59ddbf2b8, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\libs\halcon12\halcondotnet.dll</HintPath>
@@ -95,8 +98,11 @@
<Reference Include="PostSharp, Version=6.2.7.0, Culture=neutral, PublicKeyToken=b13fd38b8f9c99d7, processorArchitecture=MSIL">
<HintPath>..\..\packages\PostSharp.Redist.6.2.7\lib\net45\PostSharp.dll</HintPath>
</Reference>
+ <Reference Include="PresentationCore" />
<Reference Include="System" />
+ <Reference Include="System.configuration" />
<Reference Include="System.Core" />
+ <Reference Include="System.Security" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs
index 144827a..c9ff290 100644
--- a/src/Bro.M071.Process/M071Process.cs
+++ b/src/Bro.M071.Process/M071Process.cs
@@ -9,6 +9,7 @@
using Bro.Process;
using HalconDotNet;
using Newtonsoft.Json;
+using OfficeOpenXml;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -422,6 +423,8 @@
//Excel鎶ヨ〃杈撳嚭 锛堝崟涓骇鍝佺殑excel瀵煎嚭锛�
ExportProductionExcel(measurementUnitResultAndKeyUnitDataSet);
+
+ ExportProductionInColumns(measurementUnitResultAndKeyUnitDataSet);
////鏁版嵁搴撲繚瀛�
//SaveProductionData(measurementUnitResultAndKeyUnitDataSet);
@@ -585,6 +588,77 @@
});
}
+ static object excelExportLock = new object();
+ private async void ExportProductionInColumns(ProductionMeasurementUnitResultAndKeyUnitDataSet exportData)
+ {
+ if (!Config.IsCSVOutputEnabled)
+ return;
+
+ await Task.Run(() =>
+ {
+ if (!Directory.Exists(Config.LogPath))
+ {
+ Directory.CreateDirectory(Config.LogPath);
+ }
+ var fileName = Path.Combine(Config.LogPath, $"LDSData_{DateTime.Now.ToString("yyyyMMdd")}.xlsx");
+ bool isExisted = File.Exists(fileName);
+ using (ExcelPackage package = new ExcelPackage(new FileInfo(fileName)))
+ {
+ ExcelWorksheet rawDataSheet = null;
+ ExcelWorksheet slantSheet = null;
+ ExcelWorksheet alignmentSheet = null;
+ ExcelWorksheet rowAlignmentSheet = null;
+ if (!isExisted)
+ {
+ package.Workbook.Worksheets.Add("RawData");
+ rawDataSheet = package.Workbook.Worksheets["RawData"];
+ for (int i = 0; i < Config.KeyNameCollection.Count; i++)
+ {
+ var cell = rawDataSheet.Cells[i + 3, 1];
+ cell.Value = Config.KeyNameCollection[i];
+ cell.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(31, 73, 125));
+ }
+
+ //package.Workbook.Worksheets.Add("Slant");
+ //slantSheet = package.Workbook.Worksheets["Slant"];
+ //for(int i=0;i<exportData.MeasurementUnitResultList)
+ //package.Workbook.Worksheets.Add("Alignment");
+ //package.Workbook.Worksheets.Add("RowAlignment");
+ }
+
+ rawDataSheet = package.Workbook.Worksheets["RawData"];
+
+ int rowDataStartCol = rawDataSheet.Dimension.Columns;
+ var barcodeCell = rawDataSheet.Cells[1, rowDataStartCol + 1, 1, rowDataStartCol + 1 + 4];
+ barcodeCell.Merge = true;
+ barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode;
+
+ var z1Cell = rawDataSheet.Cells[2, rowDataStartCol + 1];
+ z1Cell.Value = "Z1";
+
+ var z2Cell = rawDataSheet.Cells[2, rowDataStartCol + 2];
+ z2Cell.Value = "Z2";
+
+ var z3Cell = rawDataSheet.Cells[2, rowDataStartCol + 3];
+ z3Cell.Value = "Z3";
+
+ var z4Cell = rawDataSheet.Cells[2, rowDataStartCol + 4];
+ z4Cell.Value = "Z4";
+
+ exportData.KeyUnitDataList.ForEach(k =>
+ {
+ int keyIndex = Config.KeyNameCollection.IndexOf(k.Key);
+ int zIndex = int.Parse(k.MeasurementItem.Substring(1));
+
+ var cell = rawDataSheet.Cells[keyIndex + 1 + 2, rowDataStartCol + zIndex];
+ cell.Value = k.ItemValue;
+ });
+
+ package.Save();
+ };
+ });
+ }
+
#region 鍥惧儚淇濆瓨
private void SaveWholeImage(ProductionMeasurement pMeasure)
{
@@ -698,6 +772,9 @@
return;
}
+ string fileName = Path.Combine(Config.ImageSaveFolder, "BeforeRun", $"{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.tif");
+ imgSet.HImage.WriteImage("tiff", 0, fileName);
+
_halconToolDict[toolKey].InputImageDic["INPUT_Image"] = imgSet.HImage;
if (!_halconToolDict[toolKey].RunProcedure(out string error))
{
diff --git a/src/Bro.M071.Process/M071Process_MotionCard.cs b/src/Bro.M071.Process/M071Process_MotionCard.cs
index fbc4314..6f93730 100644
--- a/src/Bro.M071.Process/M071Process_MotionCard.cs
+++ b/src/Bro.M071.Process/M071Process_MotionCard.cs
@@ -653,13 +653,16 @@
ManualResetEventSlim _pausedHandle = new ManualResetEventSlim(true);
MachineState _machineStateBeforePause = MachineState.Unknown;
- private async void CheckMachinePauseState()
+ private void CheckMachinePauseState()
{
- await Task.Run(() =>
+ //await Task.Run(() =>
{
if (IsMachinePaused)
{
- _machineStateBeforePause = MachineState;
+ if (MachineState == MachineState.Ready || MachineState == MachineState.Running)
+ {
+ _machineStateBeforePause = MachineState;
+ }
MachineState = MachineState.Pause;
_pausedHandle.Reset();
@@ -681,7 +684,8 @@
MachineState = _machineStateBeforePause;
}
}
- });
+ }
+ //);
}
public bool IsMachinePaused
@@ -711,9 +715,6 @@
[ProcessMethod("", "SafetyBeamSignal", "瀹夊叏鍏夊箷淇″彿鐩戞帶锛屾甯窸N锛孫FF鏃舵姤璀�", InvokeType.TestInvoke)]
public ProcessResponse SafetyBeamSignal(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice)
{
- //if (MachineState != MachineState.Running && MachineState != MachineState.Pause)
- // return new ProcessResponse(true);
-
if (opConfig.InputPara == null || opConfig.InputPara.Count == 0)
throw new ProcessException("瀹夊叏鍏夊箷鐩戞帶鏈厤缃緭鍏ヤ俊鍙�");
@@ -756,7 +757,7 @@
IsEmergencyStopped = opConfig.InputPara[0] == 0;
- if (IsEmergencyStopped)
+ if (isEmergencyStopped)
{
RaisedAlarm("鎬ュ仠鎸夐挳琚媿涓�");
MachineState = MachineState.Alarm;
diff --git a/src/Bro.M071.Process/UI/M071_MainForm.cs b/src/Bro.M071.Process/UI/M071_MainForm.cs
index 3f2ce31..efadaed 100644
--- a/src/Bro.M071.Process/UI/M071_MainForm.cs
+++ b/src/Bro.M071.Process/UI/M071_MainForm.cs
@@ -313,7 +313,7 @@
{
if (lblMachineState.IsHandleCreated)
{
- lblMachineState.BeginInvoke(new Action(() =>
+ lblMachineState.Invoke(new Action(() =>
{
switch (state)
{
diff --git a/src/Bro.M071.Process/packages.config b/src/Bro.M071.Process/packages.config
index 2ebb67c..3ce0179 100644
--- a/src/Bro.M071.Process/packages.config
+++ b/src/Bro.M071.Process/packages.config
@@ -2,6 +2,7 @@
<packages>
<package id="Autofac" version="4.9.4" targetFramework="net452" />
<package id="DockPanelSuite" version="3.0.6" targetFramework="net452" />
+ <package id="EPPlus" version="4.5.3.3" targetFramework="net452" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net452" />
<package id="PostSharp.Redist" version="6.2.7" targetFramework="net452" />
<package id="WeifenLuo.WinFormsUI.Docking" version="2.1.0" targetFramework="net452" />
--
Gitblit v1.8.0