VisionPro与C#混合编程取CogResultsAnalysisTool工具运行结果

复制代码
using Cognex.VisionPro;
using Cognex.VisionPro.Caliper;
using Cognex.VisionPro.Comm;
using Cognex.VisionPro.FGGigE;
using Cognex.VisionPro.PMAlign;
using Cognex.VisionPro.QuickBuild;
using Cognex.VisionPro.ResultsAnalysis;
using Cognex.VisionPro.ToolGroup;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace VPPDemo
{
    public partial class Form1 : Form
    {
        private const int INFO_OK = 0;
        private const int INFO_ERR = -1;

        CogJobManager cogJobManager;
        CogToolGroup cogToolGroup;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string path = @"C:\Users\Administrator\Desktop\QuickBuild1.vpp";
            cogJobManager = (CogJobManager)CogSerializer.LoadObjectFromFile(path);
            cogToolGroup = cogJobManager.Job(0).VisionTool as CogToolGroup; 
            cogJobManager.Job(0).Running += new CogJob.CogJobRunningEventHandler(Job_Running);
            cogJobManager.Job(0).Stopped += new CogJob.CogJobStoppedEventHandler(Job_Stopped);
        }

        private void Job_Running(object sender,CogJobActionEventArgs e)
        {
            Console.WriteLine("Job running......");
        }

        private void Job_Stopped(object obj, CogJobActionEventArgs arg)
        {
            Console.WriteLine("Job stopped");
            CogJob job0 = (CogJob)obj;
            CogToolGroup ctg = (CogToolGroup)job0.VisionTool;
            CogPMAlignTool cra = (CogPMAlignTool)ctg.Tools["CogPMAlignTool1"];
            double x = cra.Results[0].GetPose().TranslationX;
            double y = cra.Results[0].GetPose().TranslationY;
            double Rotation = cra.Results[0].GetPose().Rotation;
            double Score = cra.Results[0].Score;
            Console.WriteLine($"X:{x}\r\nY:{y}\r\nRotation:{Rotation}\r\nScore:{Score}\r\n");

            CogFindCircleTool crr = (CogFindCircleTool)ctg.Tools["CogFindCircleTool1"];
            double cx = crr.Results.GetCircle().CenterX;
            double cy = crr.Results.GetCircle().CenterY;
            double cr = crr.Results.GetCircle().Radius;
            Console.WriteLine($"CX:{cx}\r\nCY:{cy}\r\nCR:{cr}\r\n");

            CogResultsAnalysisTool crt = (CogResultsAnalysisTool)ctg.Tools["CogResultsAnalysisTool1"];
            string results = "";
            foreach (string key in crt.Result.EvaluatedExpressions.Keys)
            {
                if (key != "Output")
                {
                    string  s = (System.String)crt.Result.EvaluatedExpressions[key].Value.ToString();
                    results += results + key + ":" + s + "\r\n";
                }
            }
            Console.WriteLine(results);
            ICogRecord cogRecordCra = cra.CreateLastRunRecord().SubRecords[0];
            ICogRecord cogRecordCrr = crr.CreateLastRunRecord().SubRecords[0];
            cogRecordCrr.SubRecords.Add(cogRecordCra);
            cogRecordDisplay1.Record = cogRecordCrr;
            cogRecordDisplay1.AutoFit = true;

        }

        private void Form1_Running(object sender, CogJobActionEventArgs e)
        {
           
        }

        private void button1_Click(object sender, EventArgs e)
        {
            cogJobManager.Job(0).Run();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            cogJobManager.Shutdown();
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            Environment.Exit(0);
        }
    }
}
复制代码

 

posted @   金雨CHN  阅读(818)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示