src/Bro.Device.GTSCard/GTSCardDriver.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.M071.Process/M071Process.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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,22 +908,28 @@ // 设置点位模式目标速度,即回原点速度 sRtn = GTSCardAPI.GT_SetVel((short)IConfig.CardNum, (short)movingOption.AxisIndex, goHomePara.HighVelocity); do { PositionReset(movingOption.AxisIndex, 1); ClearStatus(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; short capture; bool isStop = false; int pos; uint clk;//时钟参数 do { Thread.Sleep(IConfig.MonitorInterval); 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; repeatTime -= IConfig.MonitorInterval * 5; } while (!(isStop || capture == 1 || repeatTime <= 0)); if (repeatTime <= 0) @@ -937,11 +938,11 @@ throw new ProcessException($"运动轴{movingOption.AxisIndex} ,回原点超时异常"); } var axisStatus = AxisStatusList.FirstOrDefault(u => u.AxisIndex == movingOption.AxisIndex); if (isStop && capture != 1) { ClearStatus((short)movingOption.AxisIndex, 1); var axisStatus = AxisStatusList.FirstOrDefault(u => u.AxisIndex == movingOption.AxisIndex); if (((axisStatus.AxisStatus & 0x20) != 0) || ((axisStatus.AxisStatus & 0x40) != 0)) { @@ -961,10 +962,7 @@ } homeDirection = !homeDirection; goto StartCapture; } throw new ProcessException($"运动轴{movingOption.AxisIndex} ,回原点超时异常"); } if (capture == 1) @@ -972,7 +970,8 @@ if (!isRightLimitReached) { capture = 0; goto StartCapture; //GTSCardAPI.GT_SetCaptureMode((short)IConfig.CardNum, (short)movingOption.AxisIndex, GTSCardAPI.CAPTURE_HOME); continue; } //先stop @@ -995,6 +994,8 @@ PositionReset(movingOption.AxisIndex, 1); return (sRtn == (short)GTSRetCode.GRCRunOK) && isStop; } } while (!(capture == 1 && isRightLimitReached)); return false; } catch (Exception ex) 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();