检测产品线轮廓度的结果添加双重补偿,深度图存图绑定产品二维码
| | |
| | | { |
| | | item1.IsAbandoned = false; |
| | | item1.FinalResult = ResultState.NG; |
| | | LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"产品{products[0].PID}_{products[0].SEQUENCE}工位{measureBind.WorkPosition} S3S5组合检测检出缺陷:{item1.NetName}"); |
| | | //products[0].Result = M141Config.defectname; |
| | | LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"产品{products[0].PID}_{products[0].SEQUENCE}工位{measureBind.WorkPosition} S3S5组合检测检出缺陷:{item1.NetName},产品结果为{products[0].Result}"); |
| | | break; |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | string ngImageFile = Path.Combine(folder, $"{id}.{post}"); |
| | | var bitmap = imgSet.HImage.ConvertHImageToBitmap(); |
| | | bitmap.Save(ngImageFile, M141Config.ImageFormatNG); |
| | | LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{id}NG图片已保存"); |
| | | bitmap.Dispose(); |
| | | //var bitmap = imgSet.HImage.ConvertHImageToBitmap(); |
| | | //bitmap.Save(ngImageFile, M141Config.ImageFormatNG); |
| | | //LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{id}NG图片已保存"); |
| | | //bitmap.Dispose(); |
| | | try |
| | | { |
| | | LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{id}NG图片测试转存{ngImageFile}"); |
| | | imgSet.HImage.WriteImage(M141Config.ImageFormatOK.ToString().ToLower(), 0, ngImageFile); |
| | | } |
| | | catch (Exception) |
| | | { |
| | | LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"{id}NG图片保存失败"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | string ngImageFile = Path.Combine(folder, $"{id}.{post}"); |
| | | var bitmap = imgSet.HImage.ConvertHImageToBitmap(); |
| | | bitmap.Save(ngImageFile, M141Config.ImageFormatOK); |
| | | LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{id}OK图片已保存"); |
| | | bitmap.Dispose(); |
| | | //var bitmap = imgSet.HImage.ConvertHImageToBitmap(); |
| | | //bitmap.Save(ngImageFile, M141Config.ImageFormatOK); |
| | | //LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{id}OK图片已保存"); |
| | | //bitmap.Dispose(); |
| | | try |
| | | { |
| | | LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{id}OK图片测试转存{ngImageFile}"); |
| | | imgSet.HImage.WriteImage(M141Config.ImageFormatOK.ToString().ToLower(), 0, ngImageFile); |
| | | } |
| | | catch (Exception) |
| | | { |
| | | LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"{id}OK图片保存失败"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | var tool = GetHalconTool(null, "", opConfig.AlgorithemPath); |
| | | var ret = tool.RunProcedure(new Dictionary<string, HalconDotNet.HTuple>() { { "INPUT_Points", pointdataF.ToArray() } }, new Dictionary<string, HalconDotNet.HObject>() { { "INPUT_Image", opConfig.ImageSet.HImage } }, new List<string>() { "OUTPUT_Results", "OUTPUT_PointZ" }, null); |
| | | |
| | | if (ret == null) |
| | | { |
| | | LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"脚本{opConfig.AlgorithemPath}运行异常,返回值为null"); |
| | |
| | | else |
| | | { |
| | | item.ActualValue = retcal.Item2["OUTPUT_Results"].HTupleToDouble()[0]; |
| | | |
| | | if (item.IsEnableCompensation && item.CompensationValue.Count > 1) |
| | | { |
| | | string index = opConfig.TriggerStr.Split('#')[0]; |
| | | LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"{item.Code}进入双重补偿{index},初始值为{item.ActualValue}"); |
| | | |
| | | if (index=="1") |
| | | { |
| | | item.ActualValue += item.CompensationValue[0]; |
| | | LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"{item.Code}进入双重补偿,补偿值为{item.CompensationValue[0]},最终结果为{item.ActualValue}"); |
| | | } |
| | | else |
| | | { |
| | | item.ActualValue += item.CompensationValue[1]; |
| | | LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"{item.Code}进入双重补偿,补偿值为{item.CompensationValue[1]},最终结果为{item.ActualValue}"); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"{results[0].PID}获取计算公式数据{item.Code} {item.GetMeasureValueStr()}"); |
| | | } |
| | | } |