diff --git a/halftoneproject-master/BanBoShi/SysCtrl/SysMgr.cs b/halftoneproject-master/BanBoShi/SysCtrl/SysMgr.cs index 4961df36..adea0268 100644 --- a/halftoneproject-master/BanBoShi/SysCtrl/SysMgr.cs +++ b/halftoneproject-master/BanBoShi/SysCtrl/SysMgr.cs @@ -8100,47 +8100,61 @@ namespace MaiMuAOI.SysCtrl //寻找方向 dt = DateTime.Now; + bool breakW = false; while (true) { - double pos = GetAxisPosValueMM(axisno); - camDevFront.ClearImageQueue(); - Acquisition acq = camDevFront.Snap(1, 5000); - if (acq.GrabStatus == "GrabPass") - { - //显示 - OnAutoRuning(new RunEventArgs(0, acq.Image)); - yolo.FocusDirec(acq.Image.CopyObj(1, -1), ref dir, ref mean, ref z_hpos); - cnt++; - - if ((cnt > 2) && (dir != 0)) + double pos = GetAxisPosValueMM(axisno); + for (int i = 0; i < snapCnt; i++) + { + camDevFront.ClearImageQueue(); + Acquisition acq = camDevFront.Snap(1, 5000); + if (acq.GrabStatus == "GrabPass") { - Log("自动找方向", $"步进次数:{cnt},位置:{pos}, 反馈方向:{dir}, 反馈位置:{z_hpos}, 步进:{dir_step}"); - break; - } + //显示 + OnAutoRuning(new RunEventArgs(0, acq.Image)); + yolo.FocusDirec(acq.Image.CopyObj(1, -1), ref dir, ref mean, ref z_hpos); + cnt++; - VelocityCurveParams velocityCurve = new VelocityCurveParams(100, 100, 5, 100, 0, 1000); - //axisDev.MoveAbsValue(axisno, velocityCurve, z - cnt * dir_step); - if (cnt == 1) - { - mean = 0; - Log("自动找方向", $"步进次数:{cnt},位置:{pos}, mean:{mean}, 反馈方向:{dir}, 反馈位置:{z_hpos}"); - axisDev.MoveAbsValue(axisno, velocityCurve, z_hpos); - axisDev.CheckDone(axisno, 20); + if ((cnt > 2) && (dir != 0)) + { + breakW = true; + Log("自动找方向", $"步进次数:{cnt},位置:{pos}, 反馈方向:{dir}, 反馈位置:{z_hpos}, 步进:{dir_step}"); + break; + } + + VelocityCurveParams velocityCurve = new VelocityCurveParams(100, 100, 5, 100, 0, 1000); + //axisDev.MoveAbsValue(axisno, velocityCurve, z - cnt * dir_step); + if (cnt == 1) + { + mean = 0; + Log("自动找方向", $"步进次数:{cnt},位置:{pos}, mean:{mean}, 反馈方向:{dir}, 反馈位置:{z_hpos}"); + axisDev.MoveAbsValue(axisno, velocityCurve, z_hpos); + axisDev.CheckDone(axisno, 20); + } + else + { + Log("自动找方向", $"步进次数:{cnt},位置:{pos}, mean:{mean}, 反馈方向:{dir}, 反馈位置:{z_hpos}, 步进:{dir_step}"); + axisDev.MoveAbsValue(axisno, velocityCurve, pos - dir_step); + axisDev.CheckDone(axisno, 20); + + } + break; + //Log("自动找方向", $"步进次数:{cnt},位置:{z_hpos - cnt * dir_step}, 反馈:{dir}"); } - else + else { - Log("自动找方向", $"步进次数:{cnt},位置:{pos}, mean:{mean}, 反馈方向:{dir}, 反馈位置:{z_hpos}, 步进:{dir_step}"); - axisDev.MoveAbsValue(axisno, velocityCurve, pos - dir_step); - axisDev.CheckDone(axisno, 20); - + Log($"自动找方向{i}", $"拍照失败!"); + if (i < snapCnt - 1) + { + Thread.Sleep(100); + continue; + } + else + return false; } - //Log("自动找方向", $"步进次数:{cnt},位置:{z_hpos - cnt * dir_step}, 反馈:{dir}"); - } - else - { - Log("自动找方向", $"拍照失败!"); - return false; } + if (breakW) + break; if((DateTime.Now - dt).TotalMilliseconds > Timeout) { return false; @@ -8153,37 +8167,50 @@ namespace MaiMuAOI.SysCtrl z = GetAxisPosValueMM(axisno); //dt = DateTime.Now; //聚焦 + breakW = false; while (true) { double pos = GetAxisPosValueMM(axisno); - camDevFront.ClearImageQueue(); - Acquisition acq = camDevFront.Snap(1, 1000); - if (acq.GrabStatus == "GrabPass") + for (int i = 0; i < snapCnt; i++) { - //显示 - OnAutoRuning(new RunEventArgs(0, acq.Image)); - - yolo.Focus(acq.Image.CopyObj(1, -1), step, ref dir, ref z, ref mean); - cnt++; - Log("自动聚焦", $"方向:{dir},下次目标位置:{z},次数:{cnt},反馈:{mean},Z轴当前实际位置:{pos}"); - if (mean == 9999) + camDevFront.ClearImageQueue(); + Acquisition acq = camDevFront.Snap(1, 1000); + if (acq.GrabStatus == "GrabPass") { + //显示 + OnAutoRuning(new RunEventArgs(0, acq.Image)); + + yolo.Focus(acq.Image.CopyObj(1, -1), step, ref dir, ref z, ref mean); + cnt++; + Log("自动聚焦", $"方向:{dir},下次目标位置:{z},次数:{cnt},反馈:{mean},Z轴当前实际位置:{pos}"); + if (mean == 9999) + { + breakW = true; + break; + } + VelocityCurveParams velocityCurve = new VelocityCurveParams(100, 100, 5, 100, 0, 1000); + axisDev.MoveAbsValue(axisno, velocityCurve, z); + axisDev.CheckDone(axisno, 20); + if ((DateTime.Now - alldt).TotalMilliseconds > Timeout) + { + return false; + } break; } - VelocityCurveParams velocityCurve = new VelocityCurveParams(100, 100, 5, 100, 0, 1000); - axisDev.MoveAbsValue(axisno, velocityCurve, z); - axisDev.CheckDone(axisno, 20); - if ((DateTime.Now - alldt).TotalMilliseconds > Timeout) + else { - return false; + Log($"自动找方向2{i}", $"拍照失败!"); + if (i < snapCnt - 1) + { + Thread.Sleep(100); + continue; + } + else + return false; } - - } - else - { - Log("自动找方向", $"拍照失败!"); - return false; } + if (breakW) + break; if ((DateTime.Now - alldt).TotalMilliseconds > Timeout) { return false; diff --git a/halftoneproject-master/BanBoShi/SysUI/DefectPicShow/DataQueryFrm.cs b/halftoneproject-master/BanBoShi/SysUI/DefectPicShow/DataQueryFrm.cs index 9312fd6a..3019cd13 100644 --- a/halftoneproject-master/BanBoShi/SysUI/DefectPicShow/DataQueryFrm.cs +++ b/halftoneproject-master/BanBoShi/SysUI/DefectPicShow/DataQueryFrm.cs @@ -464,18 +464,20 @@ namespace MaiMuAOI.SysUI.DefectPicShow { tempd = item.SizeDefectInfoList.Where(q => q.StepName == tdata.Key).ToList(); List dataList = new List(); + int data_index = 0; for (int i = 0; i < tempd.Count; i++) { if (tempd[i].isAverage == false) { dataList.Add(tempd[i].Data); - dr[$"{tdata.Key}-{i + 1}"] = tempd[i].Data.ToString("0.0000"); + dr[$"{tdata.Key}-{data_index + 1}"] = tempd[i].Data.ToString("0.0000"); + data_index++; } //不合格数据添加队列 if(i + 1 == tempd.Count) col_index = this.dataGridView1.Columns[$"{tdata.Key}均值"].Index; else - col_index = this.dataGridView1.Columns[$"{tdata.Key}-{i + 1}"].Index; + col_index = this.dataGridView1.Columns[$"{tdata.Key}-{data_index}"].Index; if (tempd[i].result == 2) FailPoint.Add(new Point(row_index, col_index)); } @@ -1003,14 +1005,16 @@ namespace MaiMuAOI.SysUI.DefectPicShow //for (int i = 0; i < tempd.Count; i++) // dr[$"{tdata.Key}-{i + 1}"] = tempd[i].Data.ToString("0.0000"); //dr[$"{tdata.Key}均值"] = item.TensionValue.ToString("0.0000"); + int data_index = 0; for (int i = 0; i < tempd.Count; i++) { int col_index = 0; if (!tempd[i].isAverage) { dataList.Add(tempd[i].Data); - dr[$"{tdata.Key}-{i + 1}"] = tempd[i].Data.ToString("0.0000"); - col_index = dr.Table.Columns.IndexOf($"{tdata.Key}-{i + 1}"); + dr[$"{tdata.Key}-{data_index + 1}"] = tempd[i].Data.ToString("0.0000"); + col_index = dr.Table.Columns.IndexOf($"{tdata.Key}-{data_index + 1}"); + data_index++; } else col_index = dr.Table.Columns.IndexOf($"{tdata.Key}均值");