|
@@ -1758,6 +1758,69 @@ namespace TeamAAS_VP.Services
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 获取复检结果
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="procedure"></param>
|
|
|
|
|
+ /// <param name="InputTerminal"></param>
|
|
|
|
|
+ /// <param name="robotCoord"></param>
|
|
|
|
|
+ /// <param name="cancellationToken"></param>
|
|
|
|
|
+ /// <param name="positionIndex"></param>
|
|
|
|
|
+ /// <param name="remark"></param>
|
|
|
|
|
+ /// <returns></returns>
|
|
|
|
|
+ public async Task<(bool IsSucceed, string distance)> ExecutePhotoGetDistance(ProcedureModel procedure, Dictionary<string, string> InputTerminal, double[] robotCoord, CancellationToken cancellationToken, int positionIndex, string remark)
|
|
|
|
|
+ {
|
|
|
|
|
+ DateTime nowtime = DateTime.Now;
|
|
|
|
|
+ await SetLightBeforePhoto(procedure);
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ //拍照失败时,需要多次拍照
|
|
|
|
|
+ for (int i = 0; i < procedure.FeederFailLimit; i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ SendTaskMessage(Lang.开始执行视觉流程.Replace("{0}", $"{i + 1}").Replace("{1}", procedure.Name), MessageLevel.Info);
|
|
|
|
|
+
|
|
|
|
|
+ // 1. 执行相机拍照并运行视觉工具
|
|
|
|
|
+ bool visionSucceed = ExecutePhoto(procedure, InputTerminal, out CogToolBlockTerminalCollection outputCollection);
|
|
|
|
|
+ if (!visionSucceed)
|
|
|
|
|
+ {
|
|
|
|
|
+ SendTaskMessage(Lang.视觉任务执行失败, MessageLevel.Error);
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!outputCollection.Contains("Found"))
|
|
|
|
|
+ {
|
|
|
|
|
+ SendTaskMessage(Lang.未找到视觉输出结果, MessageLevel.Error);
|
|
|
|
|
+ return (false, "");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 获取视觉输出结果
|
|
|
|
|
+ bool Found = (bool)(outputCollection["Found"].Value);
|
|
|
|
|
+ if (!Found)
|
|
|
|
|
+ {
|
|
|
|
|
+ SendTaskMessage(Lang.拍照NG, MessageLevel.Debug);
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ SendTaskMessage(Lang.拍照OK, MessageLevel.Debug);
|
|
|
|
|
+
|
|
|
|
|
+ LogHelper.WriteLogInfo("开始获取视觉输出结果");
|
|
|
|
|
+ string dis = (string)(outputCollection["CC"].Value);
|
|
|
|
|
+ return (true, dis);
|
|
|
|
|
+ }
|
|
|
|
|
+ SendTaskMessage(Lang.多次拍照失败, MessageLevel.Alarm);
|
|
|
|
|
+ return (false, "");
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ LogHelper.WriteLogError("执行相机取图并获取单点位时出错!", ex);
|
|
|
|
|
+ return (false, "");
|
|
|
|
|
+ }
|
|
|
|
|
+ finally
|
|
|
|
|
+ {
|
|
|
|
|
+ await TurnOffLightAfterPhoto(procedure);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// 记录拍照结果数据至数据库
|
|
/// 记录拍照结果数据至数据库
|