From 1491846b4736bc2e79604086acfd8544aa3ba384 Mon Sep 17 00:00:00 2001 From: wells.liu <wells.liu@broconcentric.com> Date: 星期一, 07 九月 2020 12:09:46 +0800 Subject: [PATCH] Merge branch 'master' of http://gitblit.broconcentric.com:8088/r/M071 --- src/Bro.Device.GTSCard/GTSCardDriver.cs | 158 +++++++++++----------- src/Bro.M071.Process/UI/M071_MainForm.cs | 12 + src/Bro.UI.Model.Winform/UI/CanvasImage.cs | 3 src/Bro.M071.Process/UI/M071_MainForm.Designer.cs | 27 ++- src/Bro.M071.Process/UI/M071_MainForm.resx | 3 src/Bro.Process/ProcessControl.cs | 12 + src/Bro.Common.Model/Interface/IProcess.cs | 4 src/Bro.Device.HikCamera/HikCameraDriver.cs | 9 src/Bro.Process/Bro.Process.csproj | 10 - src/Bro.M071.Process/M071Process.cs | 142 ++++++++++++------- src/Bro.Common.Model/Helper/SettingHelper.cs | 9 + src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs | 8 + src/Bro.M071.Process/M071Config.cs | 10 + src/Bro.Common.Model/GlobalVar.cs | 10 + 14 files changed, 254 insertions(+), 163 deletions(-) diff --git a/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs b/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs index f1f385d..ceb3068 100644 --- a/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs +++ b/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs @@ -136,9 +136,15 @@ catch (HDevEngineException ex) { IsSuccessful = false; + errorMsg = $"HDevProgram {ex.ProcedureName} Run fail , Line number: {ex.LineNumber}, Halcon error number : {ex.HalconError},ex:{ex.Message}"; + return false; + } + catch (Exception ex) + { + IsSuccessful = false; //Trace.TraceInformation("HDevProgram {0} Run fail , Line number: {1}, Halcon error number : {2},ex:{3}", ex.ProcedureName, ex.LineNumber, ex.HalconError, ex.Message); //return; - errorMsg = $"HDevProgram {ex.ProcedureName} Run fail , Line number: {ex.LineNumber}, Halcon error number : {ex.HalconError},ex:{ex.Message}"; + errorMsg = $"{ex.Message}"; return false; } } diff --git a/src/Bro.Common.Model/GlobalVar.cs b/src/Bro.Common.Model/GlobalVar.cs index cc555e4..d0b5310 100644 --- a/src/Bro.Common.Model/GlobalVar.cs +++ b/src/Bro.Common.Model/GlobalVar.cs @@ -6,6 +6,8 @@ { public static ContainerBuilder Builder { get; set; } = new ContainerBuilder(); + private static object containerLock = new object(); + private static IContainer container = null; public static IContainer Container { @@ -13,7 +15,13 @@ { if (container == null) { - container = Builder.Build(); + lock (containerLock) + { + if (container == null) + { + container = Builder.Build(); + } + } } return container; diff --git a/src/Bro.Common.Model/Helper/SettingHelper.cs b/src/Bro.Common.Model/Helper/SettingHelper.cs index a14100e..99f93c2 100644 --- a/src/Bro.Common.Model/Helper/SettingHelper.cs +++ b/src/Bro.Common.Model/Helper/SettingHelper.cs @@ -76,9 +76,15 @@ return codes; } - public static List<string> AddNewProductionCode(string code) + public static void AddNewProductionCode(string code) { var dataTemp = GetSettingData(); + + if (!dataTemp.ContainsKey(PROPERTY_PRODUCTIONCODES)) + { + dataTemp.Add(PROPERTY_PRODUCTIONCODES, new JArray()); + } + if (dataTemp != null && dataTemp.ContainsKey(PROPERTY_PRODUCTIONCODES)) { List<string> codes = GetProductionCodes(); @@ -96,7 +102,6 @@ writer.Close(); } } - return GetProductionCodes(); } public static string GetConfigFilePath() diff --git a/src/Bro.Common.Model/Interface/IProcess.cs b/src/Bro.Common.Model/Interface/IProcess.cs index 403375d..3a5669c 100644 --- a/src/Bro.Common.Model/Interface/IProcess.cs +++ b/src/Bro.Common.Model/Interface/IProcess.cs @@ -51,7 +51,7 @@ //event Action<string, Bitmap, string> OnBitmapOutput; event Action<DeviceState> OnProcessStateChanged; - event Action<string> OnAlarmUpdate; + event Action<string> OnAlarmUpdate; Action<DateTime, int> OnUpdateResult { get; set; } Action<float> OnUpdateCT { get; set; } @@ -59,7 +59,7 @@ #region 鏁版嵁搴撴搷浣� void SaveProcessConfig(IProcessConfig config); - void CreateNewConfig(IProcessConfig config,string newProductionCode); + void CreateNewConfig(IProcessConfig config, string newProductionCode); #endregion } } diff --git a/src/Bro.Device.GTSCard/GTSCardDriver.cs b/src/Bro.Device.GTSCard/GTSCardDriver.cs index d87e661..c430886 100644 --- a/src/Bro.Device.GTSCard/GTSCardDriver.cs +++ b/src/Bro.Device.GTSCard/GTSCardDriver.cs @@ -443,7 +443,7 @@ { axisImmediatePauseHandleDict[optionPara.AxisIndex].WaitOne(); - if (!axisPauseResumeFlag[optionPara.AxisIndex]) + if (axisPauseResumeFlag.ContainsKey(optionPara.AxisIndex) && !axisPauseResumeFlag[optionPara.AxisIndex]) return true; try @@ -492,7 +492,7 @@ isSuccessAndStop = false; LogAsync(DateTime.Now, $"杞磠optionPara.AxisIndex}杩愬姩寮傚父", ex.GetExceptionMessage()); } - } while (axisImmediatePauseFlag[optionPara.AxisIndex]); + } while (axisImmediatePauseFlag.ContainsKey(optionPara.AxisIndex) && axisImmediatePauseFlag[optionPara.AxisIndex]); return isSuccessAndStop; }); } @@ -891,19 +891,12 @@ var goHomePara = IConfig.AxisSettings.FirstOrDefault(u => u.AxisIndex == movingOption.AxisIndex).GoHomePara; bool homeDirection = goHomePara.IsHomeDirPositive; bool isRightLimitReached = false; - - StartCapture: - - PositionReset(movingOption.AxisIndex, 1); - ClearStatus(movingOption.AxisIndex, 1); + short capture = 0; GTSCardAPI.TTrapPrm trapPrm; - bool isStop = false; - //鎼滅储璺濈 闃舵1 - // 鍚姩Home鎹曡幏 - short sRtn = GTSCardAPI.GT_SetCaptureMode((short)IConfig.CardNum, (short)movingOption.AxisIndex, GTSCardAPI.CAPTURE_HOME); + // 鍒囨崲鍒扮偣浣嶈繍鍔ㄦā寮� - sRtn = GTSCardAPI.GT_PrfTrap((short)IConfig.CardNum, (short)movingOption.AxisIndex); + short sRtn = GTSCardAPI.GT_PrfTrap((short)IConfig.CardNum, (short)movingOption.AxisIndex); // 璇诲彇鐐逛綅妯″紡杩愬姩鍙傛暟 sRtn = GTSCardAPI.GT_GetTrapPrm((short)IConfig.CardNum, (short)movingOption.AxisIndex, out trapPrm); trapPrm.acc = movingOption.VelocityPara.Acc; @@ -913,88 +906,99 @@ // 璁剧疆鐐逛綅妯″紡鐩爣閫熷害锛屽嵆鍥炲師鐐归�熷害 sRtn = GTSCardAPI.GT_SetVel((short)IConfig.CardNum, (short)movingOption.AxisIndex, goHomePara.HighVelocity); - // 璁剧疆鐐逛綅妯″紡鐩爣浣嶇疆锛屽嵆鍘熺偣鎼滅储璺濈 - sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, homeDirection ? 99999999 : -99999999); - // 鍚姩杩愬姩 - sRtn = GTSCardAPI.GT_Update((short)IConfig.CardNum, 1 << (movingOption.AxisIndex - 1)); - - int repeatTime = goHomePara.GoHomeTimeOut * 1000; - short capture; - int pos; - uint clk;//鏃堕挓鍙傛暟 do { - Thread.Sleep(IConfig.MonitorInterval); - // 璇诲彇鎹曡幏鐘舵�� - GTSCardAPI.GT_GetCaptureStatus((short)IConfig.CardNum, (short)movingOption.AxisIndex, out capture, out pos, 1, out clk); - isStop = IsStop((short)movingOption.AxisIndex); - repeatTime -= IConfig.MonitorInterval; - } while (!(isStop || capture == 1 || repeatTime <= 0)); + PositionReset(movingOption.AxisIndex, 1); + ClearStatus(movingOption.AxisIndex, 1); - if (repeatTime <= 0) - { - MoveStop((short)movingOption.AxisIndex, 0); - throw new ProcessException($"杩愬姩杞磠movingOption.AxisIndex} 锛屽洖鍘熺偣瓒呮椂寮傚父"); - } + //鎼滅储璺濈 闃舵1 + // 鍚姩Home鎹曡幏 + sRtn = GTSCardAPI.GT_SetCaptureMode((short)IConfig.CardNum, (short)movingOption.AxisIndex, GTSCardAPI.CAPTURE_HOME); - if (isStop && capture != 1) - { - ClearStatus((short)movingOption.AxisIndex, 1); + // 璁剧疆鐐逛綅妯″紡鐩爣浣嶇疆锛屽嵆鍘熺偣鎼滅储璺濈 + sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, homeDirection ? 99999999 : -99999999); + // 鍚姩杩愬姩 + sRtn = GTSCardAPI.GT_Update((short)IConfig.CardNum, 1 << (movingOption.AxisIndex - 1)); + + int repeatTime = goHomePara.GoHomeTimeOut * 1000; + + bool isStop = false; + int pos; + uint clk;//鏃堕挓鍙傛暟 + do + { + Thread.Sleep(IConfig.MonitorInterval * 5); + // 璇诲彇鎹曡幏鐘舵�� + GTSCardAPI.GT_GetCaptureStatus((short)IConfig.CardNum, (short)movingOption.AxisIndex, out capture, out pos, 1, out clk); + isStop = IsStop((short)movingOption.AxisIndex); + repeatTime -= IConfig.MonitorInterval * 5; + } while (!(isStop || capture == 1 || repeatTime <= 0)); + + if (repeatTime <= 0) + { + MoveStop((short)movingOption.AxisIndex, 0); + throw new ProcessException($"杩愬姩杞磠movingOption.AxisIndex} 锛屽洖鍘熺偣瓒呮椂寮傚父"); + } var axisStatus = AxisStatusList.FirstOrDefault(u => u.AxisIndex == movingOption.AxisIndex); - if (((axisStatus.AxisStatus & 0x20) != 0) || ((axisStatus.AxisStatus & 0x40) != 0)) + if (isStop && capture != 1) { - //movingOption.GoHomePara.HomeDir = (short)(movingOption.GoHomePara.HomeDir == 1 ? -1 : 1); - - //姝i檺浣� - if ((axisStatus.AxisStatus & 0x20) != 0 && !goHomePara.IsCaptureDirPositive) + if (((axisStatus.AxisStatus & 0x20) != 0) || ((axisStatus.AxisStatus & 0x40) != 0)) { - isRightLimitReached = true; + //movingOption.GoHomePara.HomeDir = (short)(movingOption.GoHomePara.HomeDir == 1 ? -1 : 1); + + //姝i檺浣� + if ((axisStatus.AxisStatus & 0x20) != 0 && !goHomePara.IsCaptureDirPositive) + { + isRightLimitReached = true; + } + + //璐熼檺浣� + if ((axisStatus.AxisStatus & 0x40) != 0 && goHomePara.IsCaptureDirPositive) + { + isRightLimitReached = true; + } + + homeDirection = !homeDirection; } + ClearStatus(movingOption.AxisIndex, 1); + } - //璐熼檺浣� - if ((axisStatus.AxisStatus & 0x40) != 0 && goHomePara.IsCaptureDirPositive) + if (capture == 1) + { + if (!isRightLimitReached) { - isRightLimitReached = true; + capture = 0; + ClearStatus(movingOption.AxisIndex, 1); + //GTSCardAPI.GT_SetCaptureMode((short)IConfig.CardNum, (short)movingOption.AxisIndex, GTSCardAPI.CAPTURE_HOME); + continue; } - homeDirection = !homeDirection; - goto StartCapture; + //鍏坰top + MoveStop((short)movingOption.AxisIndex, 0); + ClearStatus((short)movingOption.AxisIndex, 1); + + //宸茬粡鎹曡幏鍒癏ome鎵嶅彲浠ュ洖闆� 闃舵2 + // 杩愬姩鍒�"鎹曡幏浣嶇疆+鍋忕Щ閲�" + sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, pos + goHomePara.HomeOffset); + // 鍦ㄨ繍鍔ㄧ姸鎬佷笅鏇存柊鐩爣浣嶇疆 + sRtn = GTSCardAPI.GT_Update((short)IConfig.CardNum, 1 << (movingOption.AxisIndex - 1)); + isStop = false; + + repeatTime = 1000; + do + { + Thread.Sleep(20); + isStop = IsStop((short)movingOption.AxisIndex); + repeatTime--; + } while (!isStop && repeatTime > 0); + PositionReset(movingOption.AxisIndex, 1); + return (sRtn == (short)GTSRetCode.GRCRunOK) && isStop; } - throw new ProcessException($"杩愬姩杞磠movingOption.AxisIndex} 锛屽洖鍘熺偣瓒呮椂寮傚父"); - } - - if (capture == 1) - { - if (!isRightLimitReached) - { - capture = 0; - goto StartCapture; - } - - //鍏坰top - MoveStop((short)movingOption.AxisIndex, 0); - ClearStatus((short)movingOption.AxisIndex, 1); - //宸茬粡鎹曡幏鍒癏ome鎵嶅彲浠ュ洖闆� 闃舵2 - // 杩愬姩鍒�"鎹曡幏浣嶇疆+鍋忕Щ閲�" - sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, pos + goHomePara.HomeOffset); - // 鍦ㄨ繍鍔ㄧ姸鎬佷笅鏇存柊鐩爣浣嶇疆 - sRtn = GTSCardAPI.GT_Update((short)IConfig.CardNum, 1 << (movingOption.AxisIndex - 1)); - isStop = false; - - repeatTime = 1000; - do - { - Thread.Sleep(20); - isStop = IsStop((short)movingOption.AxisIndex); - repeatTime--; - } while (!isStop && repeatTime > 0); - PositionReset(movingOption.AxisIndex, 1); - return (sRtn == (short)GTSRetCode.GRCRunOK) && isStop; - } + } while (!(capture == 1 && isRightLimitReached)); return false; } catch (Exception ex) diff --git a/src/Bro.Device.HikCamera/HikCameraDriver.cs b/src/Bro.Device.HikCamera/HikCameraDriver.cs index f308873..b77232f 100644 --- a/src/Bro.Device.HikCamera/HikCameraDriver.cs +++ b/src/Bro.Device.HikCamera/HikCameraDriver.cs @@ -463,15 +463,14 @@ { if (nMsgType == MyCamera.MV_EXCEPTION_DEV_DISCONNECT) { - Thread.Sleep(1000); - - Stop(); - if (CurrentState != EnumHelper.DeviceState.DSClose) { int reTryTimes = 3; do { + Thread.Sleep(1000); + Stop(); + try { Start(); @@ -484,7 +483,7 @@ if (reTryTimes > 0) { //OnLog?.Invoke(DateTime.Now, this, "閲嶆柊杩炴帴鐩告満寮傚父\r\n" + ex.GetExceptionMessage()); - LogAsync(DateTime.Now, "閲嶆柊杩炴帴寮傚父", ex.GetExceptionMessage()); + LogAsync(DateTime.Now, $"{this.Name}閲嶆柊杩炴帴寮傚父", ex.GetExceptionMessage()); } else { diff --git a/src/Bro.M071.Process/M071Config.cs b/src/Bro.M071.Process/M071Config.cs index 9edb448..08a33a7 100644 --- a/src/Bro.M071.Process/M071Config.cs +++ b/src/Bro.M071.Process/M071Config.cs @@ -75,6 +75,16 @@ [Editor(typeof(ComplexCollectionEditor<MeasurementUnit>), typeof(UITypeEditor))] public List<MeasurementUnit> MeasurementUnitCollection { get; set; } = new List<MeasurementUnit>(); + [Category("妫�娴嬭缃�")] + [Description("骞抽潰琛ュ伩鍊�")] + [DisplayName("4.骞抽潰琛ュ伩鍊�")] + public double PlanCompensation { get; set; } + + [Category("妫�娴嬭缃�")] + [Description("鏁版嵁绮惧害璁剧疆")] + [DisplayName("5.鏁版嵁绮惧害浣嶆暟")] + public int Precision { get; set; } = 3; + //[Category("妫�娴嬭缃�")] //[DisplayName("缁撴灉鏁版嵁淇濆瓨璺緞")] //[Description("妫�娴嬬粨鏋滄暟鎹繚瀛樿矾寰�")] diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs index 325cccc..a3a23dc 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() @@ -367,25 +375,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); //杈撳嚭鍥惧舰鍩哄厓鍒扮晫闈� @@ -517,7 +536,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 +552,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(); @@ -758,8 +777,12 @@ { 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, 1, slantStartCol + 2]; + //barcodeCell.Merge = true; + //barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode; + //SetTitleCell(barcodeCell); + + var barcodeCell = slantSheet.Cells[1, slantStartCol + 1]; barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode; SetTitleCell(barcodeCell); @@ -767,9 +790,9 @@ valueCell.Value = "Value"; SetTitleCell(valueCell); - var resultCell = slantSheet.Cells[2, slantStartCol + 2]; - resultCell.Value = "Result"; - SetTitleCell(resultCell); + //var resultCell = slantSheet.Cells[2, slantStartCol + 2]; + //resultCell.Value = "Result"; + //SetTitleCell(resultCell); slantMeasures.ForEach(m => { @@ -781,15 +804,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 +827,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 +835,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 +848,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 +862,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 +894,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 +907,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 +921,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); } }); } @@ -913,10 +944,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) @@ -1035,7 +1066,9 @@ 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; + //HObject images = imgSet.HImage; + + HObject images = new HObject(); LaserScanParam scanParam = JsonConvert.DeserializeObject<LaserScanParam>(imgSet.ImageData); LogAsync(DateTime.Now, $"鎵弿鍙傛暟:{imgSet.ImageData}", ""); @@ -1049,8 +1082,8 @@ return; } - string fileName = Path.Combine(Config.ImageSaveFolder, "BeforeRun", $"{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.tif"); - imgSet.HImage.WriteImage("tiff", 0, fileName); + //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)) @@ -1083,22 +1116,22 @@ }); } - string dir = Path.Combine(Config.ImageSaveFolder, "Clips", $"{DateTime.Now.ToString("yyyyMMdd")}", $"{snapshotName}_{DateTime.Now.ToString("HHmmss")}"); - if (!Directory.Exists(dir)) - { - Directory.CreateDirectory(dir); - } + //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++) { HOperatorSet.SelectObj(images, out HObject image, i); - string fileName = Path.Combine(dir, $"{i}.tif"); - using (HImage temp = image.ConvertHObjectToHImage()) - { - temp.WriteImage("tiff", 0, fileName); - } + //string fileName = Path.Combine(dir, $"{i}.tif"); + //using (HImage temp = image.ConvertHObjectToHImage()) + //{ + // temp.WriteImage("tiff", 0, fileName); + //} keys.Where(u => u.ImageSeq == i).ToList().ForEach(k => { @@ -1115,6 +1148,7 @@ { _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)) @@ -1130,8 +1164,9 @@ } else { - //results = results.Select(u => double.Parse(u.ToString("f2"))).ToList(); - LogAsync(DateTime.Now, $"{k.AliasName}鍘熷鏁版嵁", $"{string.Join(" ", results)}"); + //LogAsync(DateTime.Now, $"{k.AliasName}鍘熷鏁版嵁", $"{string.Join(" ", results)}"); + + results = results.Select(u => u - Config.PlanCompensation).ToList(); resultDict = k.KeyResultList.ToDictionary(u => u, u => { int index = k.KeyResultList.IndexOf(u); @@ -1152,6 +1187,7 @@ } //); + images.Dispose(); //if (count.I != 1) //{ // hImage?.Dispose(); diff --git a/src/Bro.M071.Process/UI/M071_MainForm.Designer.cs b/src/Bro.M071.Process/UI/M071_MainForm.Designer.cs index bbe64d2..a702101 100644 --- a/src/Bro.M071.Process/UI/M071_MainForm.Designer.cs +++ b/src/Bro.M071.Process/UI/M071_MainForm.Designer.cs @@ -33,6 +33,7 @@ this.tsmiShowToolBar = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiShowStatusBar = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiShowEditor = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiRefreshLabels = new System.Windows.Forms.ToolStripMenuItem(); this.btnReset = new System.Windows.Forms.Button(); this.btnStartMeasure = new System.Windows.Forms.Button(); this.lblCT = new System.Windows.Forms.Label(); @@ -48,7 +49,7 @@ this.lvMeasures = new System.Windows.Forms.ListView(); this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.propGridKeyIndicator = new System.Windows.Forms.PropertyGrid(); - this.tsmiRefreshLabels = new System.Windows.Forms.ToolStripMenuItem(); + this.timer1 = new System.Windows.Forms.Timer(this.components); this.contextMenuStrip1.SuspendLayout(); this.plImage.SuspendLayout(); this.tscEditLocation.ContentPanel.SuspendLayout(); @@ -68,13 +69,13 @@ this.tsmiShowEditor, this.tsmiRefreshLabels}); this.contextMenuStrip1.Name = "contextMenuStrip1"; - this.contextMenuStrip1.Size = new System.Drawing.Size(181, 114); + this.contextMenuStrip1.Size = new System.Drawing.Size(149, 92); // // tsmiShowToolBar // this.tsmiShowToolBar.CheckOnClick = true; this.tsmiShowToolBar.Name = "tsmiShowToolBar"; - this.tsmiShowToolBar.Size = new System.Drawing.Size(180, 22); + this.tsmiShowToolBar.Size = new System.Drawing.Size(148, 22); this.tsmiShowToolBar.Text = "鏄剧ず宸ュ叿鏉�"; this.tsmiShowToolBar.CheckedChanged += new System.EventHandler(this.tsmiShowToolBar_CheckedChanged); // @@ -82,7 +83,7 @@ // this.tsmiShowStatusBar.CheckOnClick = true; this.tsmiShowStatusBar.Name = "tsmiShowStatusBar"; - this.tsmiShowStatusBar.Size = new System.Drawing.Size(180, 22); + this.tsmiShowStatusBar.Size = new System.Drawing.Size(148, 22); this.tsmiShowStatusBar.Text = "鏄剧ず鐘舵�佹爮"; this.tsmiShowStatusBar.CheckedChanged += new System.EventHandler(this.tsmiShowStatusBar_CheckedChanged); // @@ -90,9 +91,16 @@ // this.tsmiShowEditor.CheckOnClick = true; this.tsmiShowEditor.Name = "tsmiShowEditor"; - this.tsmiShowEditor.Size = new System.Drawing.Size(180, 22); + this.tsmiShowEditor.Size = new System.Drawing.Size(148, 22); this.tsmiShowEditor.Text = "缂栬緫鏄剧ず鐐逛綅"; this.tsmiShowEditor.CheckedChanged += new System.EventHandler(this.tsmiShowEditor_CheckedChanged); + // + // tsmiRefreshLabels + // + this.tsmiRefreshLabels.Name = "tsmiRefreshLabels"; + this.tsmiRefreshLabels.Size = new System.Drawing.Size(148, 22); + this.tsmiRefreshLabels.Text = "鍒锋柊鏄剧ず鐐逛綅"; + this.tsmiRefreshLabels.Click += new System.EventHandler(this.tsmiRefreshLabels_Click); // // btnReset // @@ -293,12 +301,10 @@ this.propGridKeyIndicator.TabIndex = 0; this.propGridKeyIndicator.ToolbarVisible = false; // - // tsmiRefreshLabels + // timer1 // - this.tsmiRefreshLabels.Name = "tsmiRefreshLabels"; - this.tsmiRefreshLabels.Size = new System.Drawing.Size(180, 22); - this.tsmiRefreshLabels.Text = "鍒锋柊鏄剧ず鐐逛綅"; - this.tsmiRefreshLabels.Click += new System.EventHandler(this.tsmiRefreshLabels_Click); + this.timer1.Interval = 3000; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); // // M071_MainForm // @@ -353,5 +359,6 @@ private System.Windows.Forms.Button btnReset; private System.Windows.Forms.ColumnHeader columnHeader1; private System.Windows.Forms.ToolStripMenuItem tsmiRefreshLabels; + private System.Windows.Forms.Timer timer1; } } \ No newline at end of file diff --git a/src/Bro.M071.Process/UI/M071_MainForm.cs b/src/Bro.M071.Process/UI/M071_MainForm.cs index efadaed..0ed4652 100644 --- a/src/Bro.M071.Process/UI/M071_MainForm.cs +++ b/src/Bro.M071.Process/UI/M071_MainForm.cs @@ -40,6 +40,8 @@ cvImage.SetScreenSize(); cvImage.OnElementChangedHandle -= CvImage_OnElementChangedHandle; cvImage.OnElementChangedHandle += CvImage_OnElementChangedHandle; + + timer1.Enabled = true; }; } @@ -284,6 +286,10 @@ { _barcode += keyStr.ToUpper(); } + else if (keyStr.Length == 2 && keyStr.StartsWith("D")) + { + _barcode += keyStr.Substring(1).ToUpper(); + } if (e.KeyValue == 13) { @@ -337,7 +343,7 @@ btnStartMeasure.BackColor = lblMachineState.BackColor = Color.Lime; btnStartMeasure.ForeColor = lblMachineState.ForeColor = Color.Black; lblMachineState.Text = "灏辩华"; - + btnStartMeasure.Text = "寮�濮嬫祴閲�"; btnStartMeasure.Enabled = true; break; @@ -475,5 +481,9 @@ } #endregion + private void timer1_Tick(object sender, EventArgs e) + { + cvImage.Refresh(); + } } } diff --git a/src/Bro.M071.Process/UI/M071_MainForm.resx b/src/Bro.M071.Process/UI/M071_MainForm.resx index ad53752..2b01b4a 100644 --- a/src/Bro.M071.Process/UI/M071_MainForm.resx +++ b/src/Bro.M071.Process/UI/M071_MainForm.resx @@ -120,4 +120,7 @@ <metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>17, 17</value> </metadata> + <metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>182, 17</value> + </metadata> </root> \ No newline at end of file diff --git a/src/Bro.Process/Bro.Process.csproj b/src/Bro.Process/Bro.Process.csproj index d7b408b..e56f5e8 100644 --- a/src/Bro.Process/Bro.Process.csproj +++ b/src/Bro.Process/Bro.Process.csproj @@ -128,9 +128,7 @@ </ItemGroup> <ItemGroup> <None Include="packages.config" /> - <None Include="Setting.json"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> + <None Include="Setting.json" /> </ItemGroup> <ItemGroup> <EmbeddedResource Include="Forms\Calibration\FrmCalibration_9P.resx"> @@ -170,9 +168,5 @@ <Error Condition="!Exists('..\..\packages\PostSharp.6.2.7\build\PostSharp.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\PostSharp.6.2.7\build\PostSharp.targets'))" /> </Target> <Import Project="..\..\packages\PostSharp.6.2.7\build\PostSharp.targets" Condition="Exists('..\..\packages\PostSharp.6.2.7\build\PostSharp.targets')" /> - <ProjectExtensions> - <VisualStudio> - <UserProperties setting_1json__JsonSchema="https://batect.dev/configSchema.json" /> - </VisualStudio> - </ProjectExtensions> + <ProjectExtensions /> </Project> \ No newline at end of file diff --git a/src/Bro.Process/ProcessControl.cs b/src/Bro.Process/ProcessControl.cs index ca587d2..8a4c27f 100644 --- a/src/Bro.Process/ProcessControl.cs +++ b/src/Bro.Process/ProcessControl.cs @@ -348,10 +348,16 @@ { if (config == null) throw new ProcessException("淇濆瓨鐨勯厤缃俊鎭笉鑳戒负绌�"); - ProductionCode = newProductionCode; + + string newConfigPath = Path.Combine(Path.GetDirectoryName(_configPath), $"Config_{newProductionCode}.json"); + if (File.Exists(newConfigPath)) + { + throw new ProcessException($"{newProductionCode}閰嶇疆鏂囦欢宸茬粡瀛樺湪"); + } + //鐢熸垚config.json string newConfig = JsonConvert.SerializeObject(config, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All }); - using (StreamWriter writer = new StreamWriter(_configPath, false, System.Text.Encoding.UTF8)) + using (StreamWriter writer = new StreamWriter(newConfigPath, false, System.Text.Encoding.UTF8)) { writer.Write(newConfig); writer.Flush(); @@ -359,7 +365,7 @@ } //娣诲姞鍒癝etting.json - SettingHelper.AddNewProductionCode(ProductionCode); + SettingHelper.AddNewProductionCode(newProductionCode); } catch (Exception ex) { diff --git a/src/Bro.UI.Model.Winform/UI/CanvasImage.cs b/src/Bro.UI.Model.Winform/UI/CanvasImage.cs index 76beeac..978e513 100644 --- a/src/Bro.UI.Model.Winform/UI/CanvasImage.cs +++ b/src/Bro.UI.Model.Winform/UI/CanvasImage.cs @@ -614,6 +614,9 @@ if (map == null) return; + MAP?.Dispose(); + MAP = null; + MAP = map; //MAP = map; -- Gitblit v1.8.0