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