PMAlignToolRun.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /*
  2. * ==============================================================================
  3. *
  4. * Filename: PMAlignToolRun
  5. * Description:
  6. *
  7. * Version: 1.0
  8. * Created: 2021/3/30 11:05:40
  9. *
  10. * Author: liu.wenjie
  11. *
  12. * ==============================================================================
  13. */
  14. using CommonMethods.Interface;
  15. using System;
  16. using System.Collections.Generic;
  17. using System.Linq;
  18. using System.Text;
  19. using System.Threading.Tasks;
  20. using CommonMethods;
  21. using System.Windows.Forms;
  22. using ToolLib.VisionJob;
  23. using System.Drawing;
  24. using System.Text.RegularExpressions;
  25. using HalconDotNet;
  26. using FormLib;
  27. using Logger;
  28. using static DataStruct.DataStructClass;
  29. namespace PMAlignTool
  30. {
  31. public class PMAlignToolRun : IToolRun
  32. {
  33. public void ToolRun(string jobName, int toolIndex, int inputItemNum, TreeNode selectNode, List<IToolInfo> L_toolList, IVisionJob runJob, Form myHalconWindowForm)
  34. {
  35. PMAlign myPMAlign = (PMAlign)L_toolList[toolIndex].tool;
  36. VisionJob myJob = (VisionJob)runJob;
  37. for (int j = 0; j < inputItemNum; j++)
  38. {
  39. if (L_toolList[toolIndex].GetInput(L_toolList[toolIndex].toolInput[j].IOName).value == null)
  40. {
  41. selectNode.ForeColor = Color.Red;
  42. myPMAlign.inputImage = null;
  43. LoggerClass.WriteLog(L_toolList[toolIndex].toolName + " 无输入图像", MsgLevel.Exception);
  44. }
  45. else
  46. {
  47. string sourceFrom = L_toolList[toolIndex].GetInput(L_toolList[toolIndex].toolInput[j].IOName).value.ToString();
  48. if (L_toolList[toolIndex].toolInput[j].IOName == "InputImage")
  49. {
  50. string sourceToolName = Regex.Split(sourceFrom, "->")[0];
  51. sourceToolName = sourceToolName.Substring(3, Regex.Split(sourceFrom, "->")[0].Length - 3);
  52. string toolItem = Regex.Split(sourceFrom, "->")[1];
  53. myPMAlign.inputImage = myJob.GetToolInfoByToolName(sourceToolName).GetOutput(toolItem).value as HObject;
  54. }
  55. }
  56. }
  57. myPMAlign.InitTool();
  58. myPMAlign.Run(SoftwareRunState.Release);
  59. if (myPMAlign.toolRunStatu != ToolRunStatu.Succeed)
  60. {
  61. myJob.FormLogDisp($"{L_toolList[toolIndex].toolName} 运行失败,失败原因:{myPMAlign.runMessage}", Color.Red, selectNode, Logger.MsgLevel.Exception);
  62. }
  63. else
  64. {
  65. myJob.FormLogDisp($"{L_toolList[toolIndex].toolName} 运行成功,{myPMAlign.runTime}", Color.Green, selectNode);
  66. myPMAlign.DispMainWindow(((FormImageWindow)myHalconWindowForm).myHWindow);
  67. // 将输出值赋值到界面输出中
  68. if (myPMAlign.L_resultList.Count > 0)
  69. {
  70. L_toolList[toolIndex].toolOutput[0] = new ToolIO("GetPose", myPMAlign.posHomMat2D,DataType.Pose);
  71. L_toolList[toolIndex].toolOutput[1] = new ToolIO("GetPose.X", myPMAlign.L_resultList[0].Row, DataType.IntValue);
  72. L_toolList[toolIndex].toolOutput[2] = new ToolIO("GetPose.Y", myPMAlign.L_resultList[0].Col, DataType.IntValue);
  73. L_toolList[toolIndex].toolOutput[3] = new ToolIO("GetPose.Z", myPMAlign.L_resultList[0].Angle, DataType.DoubleValue);
  74. L_toolList[toolIndex].toolOutput[4] = new ToolIO("GetPose.Score", myPMAlign.L_resultList[0].Socre, DataType.DoubleValue);
  75. }
  76. }
  77. L_toolList[toolIndex].toolRunStatu = myPMAlign.toolRunStatu;
  78. }
  79. }
  80. }