|
|
|
@@ -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;
|
|
|
|
|