From 9a2f369bcee572ba086ca83d76a562a0ecaa587b Mon Sep 17 00:00:00 2001 From: xcd <834800634@qq.com> Date: 星期四, 16 七月 2020 17:22:09 +0800 Subject: [PATCH] 板卡修复回原点bug 主流程注释部分log信息,添加部分图片对象主动释放操作 修复Excel输出Alignment最后一项第一次无数据bug 添加平面补偿 --- src/Bro.Device.GTSCard/GTSCardDriver.cs | 149 ++++++++++++++++++------------------ src/Bro.M071.Process/M071Process.cs | 40 +++++---- 2 files changed, 96 insertions(+), 93 deletions(-) diff --git a/src/Bro.Device.GTSCard/GTSCardDriver.cs b/src/Bro.Device.GTSCard/GTSCardDriver.cs index d87e661..573f480 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,14 +891,9 @@ 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); @@ -913,88 +908,94 @@ // 璁剧疆鐐逛綅妯″紡鐩爣閫熷害锛屽嵆鍥炲師鐐归�熷害 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} 锛屽洖鍘熺偣瓒呮椂寮傚父"); - } + // 璁剧疆鐐逛綅妯″紡鐩爣浣嶇疆锛屽嵆鍘熺偣鎼滅储璺濈 + sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, homeDirection ? 99999999 : -99999999); + // 鍚姩杩愬姩 + sRtn = GTSCardAPI.GT_Update((short)IConfig.CardNum, 1 << (movingOption.AxisIndex - 1)); - if (isStop && capture != 1) - { - ClearStatus((short)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); + ClearStatus((short)movingOption.AxisIndex, 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; } - - - //璐熼檺浣� - if ((axisStatus.AxisStatus & 0x40) != 0 && goHomePara.IsCaptureDirPositive) - { - isRightLimitReached = true; - } - - homeDirection = !homeDirection; - goto StartCapture; } - throw new ProcessException($"杩愬姩杞磠movingOption.AxisIndex} 锛屽洖鍘熺偣瓒呮椂寮傚父"); - } - - if (capture == 1) - { - if (!isRightLimitReached) + if (capture == 1) { - capture = 0; - goto StartCapture; + if (!isRightLimitReached) + { + capture = 0; + //GTSCardAPI.GT_SetCaptureMode((short)IConfig.CardNum, (short)movingOption.AxisIndex, GTSCardAPI.CAPTURE_HOME); + continue; + } + + //鍏坰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; } - //鍏坰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.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs index 4c1512c..7847649 100644 --- a/src/Bro.M071.Process/M071Process.cs +++ b/src/Bro.M071.Process/M071Process.cs @@ -377,12 +377,12 @@ 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"))}", ""); + //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"); @@ -808,7 +808,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(); @@ -1047,7 +1047,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}", ""); @@ -1061,8 +1063,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)) @@ -1095,22 +1097,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 => { @@ -1142,10 +1144,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.ForEach(u => u = u - Config.PlanCompensation); + results = results.Select(u => u - Config.PlanCompensation).ToList(); resultDict = k.KeyResultList.ToDictionary(u => u, u => { int index = k.KeyResultList.IndexOf(u); @@ -1166,6 +1167,7 @@ } //); + images.Dispose(); //if (count.I != 1) //{ // hImage?.Dispose(); -- Gitblit v1.8.0