VisionPro + C#:联合c#进行简易二次开发

文章目录

  • 一、在Visual Studio的工具箱中加入VisionPro的控件
  • 二、使用VisionPro的控件进行二次开发
    • 1.准备事项
    • 2.代码编写
      • 1、添加引用
      • 2、代码
  • 三、展示
  • 四、可能出现的问题
    • 1、加载的vpp的类型不一致
    • 2、平台运行时32位(加载Vpp是需要平台位64位运行)


一、在Visual Studio的工具箱中加入VisionPro的控件

这部分直接参考:https://blog.csdn.net/qq_41375318/article/details/103600406
加入完成后,如下图:
VisionPro + C#:联合c#进行简易二次开发_第1张图片

二、使用VisionPro的控件进行二次开发

1.准备事项

VisionPro:CogToolBlock工具的VPP(一般开发中使用的都是CogToolBlock工具的VPP,需要运行的过程在CogToolBlock中做好,然后保存)
注意:我这里可以连接并使用相机,不能用的可以使用CogImageFileTool工具
VisionPro + C#:联合c#进行简易二次开发_第2张图片
Form窗体:二次开发一般只需显示运行结果图片,我使用的是CogRecordDisplay
VisionPro + C#:联合c#进行简易二次开发_第3张图片

2.代码编写

1、添加引用

当你向窗体加入CogRecordDisplay控件时,会自动引用一部分,但仍需要自己添加所需的引用
VisionPro + C#:联合c#进行简易二次开发_第4张图片

2、代码

视觉系统使用VisionPro的大概步骤

//1、加载VPP
CogToolBlock cogToolBlock = (CogToolBlock)CogSerializer.LoadObjectFromFile("...\\VPP\\IDRead.vpp");
//2、运行VPP
cogToolBlock.Run();
//3、获取VPP中的工具(CogIDTool1)
CogIDTool cogIDTool = (CogIDTool)cogToolBlock.Tools["CogIDTool1"];
//4、获取CogIDTool1里面LastRunRecord的第一项(也就是需要在窗体显示的图片)
cogRecordDisplay1.Record = cogIDTool.CreateLastRunRecord().SubRecords[0];
//是否图片自fill于cogRecordDisplay1
cogRecordDisplay1.Fit(true);

//需要某些工具中的数据,单独拿出来,类似于VisionPro的脚步

VisionPro + C#:联合c#进行简易二次开发_第5张图片

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Cognex.VisionPro;
using Cognex.VisionPro.ID;
using Cognex.VisionPro.ToolBlock;

namespace IDRead
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            LoadVPP();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            RunOnceJob();
            SaveImg(cogRecordDisplay1,"D:\\images\\");//保存图片
        }

        #region VisionPro
        public CogToolBlock cogToolBlock;
        public string path = Application.StartupPath + @"\\VPP\\IDRead.vpp";

        /// 
        /// 加载vpp
        /// 
        public void LoadVPP()
        {
            if (File.Exists(path))
            {
                cogToolBlock = (CogToolBlock)CogSerializer.LoadObjectFromFile(path);
            }
        }

        /// 
        /// 单次运行Job
        /// 
        public void RunOnceJob()
        {
            cogToolBlock.Run();
            CogIDTool cogIDTool = (CogIDTool)cogToolBlock.Tools["CogIDTool1"];
            //获取组里面LastRunRecord的第一项
            cogRecordDisplay1.Record = cogIDTool.CreateLastRunRecord().SubRecords[0];// cogToolBlock.CreateLastRunRecord().SubRecords[0];
            cogRecordDisplay1.Fit(true);
        }
        #endregion
        
        /// 
        /// 窗体关闭前
        /// 
        /// 
        /// 
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            //释放资源(使用了相机)
            CogFrameGrabbers frameGrabbers = new CogFrameGrabbers();
            foreach (ICogFrameGrabber fg in frameGrabbers)
                fg.Disconnect(false);
        }
       
        /// 
        /// 保存图像
        /// 
        /// vision pro 显示窗体
        /// 图片存入路径
        private void SaveImg(CogRecordDisplay cogRecordDisplay, string path)
        {
            if (cogRecordDisplay.Image == null)   //判断是否有图片
                return;
            if (!Directory.Exists(path))    //如果没有同名文件夹,就创建一个文件夹
            {
                Directory.CreateDirectory(path);
            }
            //保存图片至文件(24位位图)
            Image image = default(Image);
            image = cogRecordDisplay.CreateContentBitmap(Cognex.VisionPro.Display.CogDisplayContentBitmapConstants.Image, null, 0);
            image.Save(path + DateTime.Now.ToString("yyyyMMddhhmmssff") + ".bmp", ImageFormat.Bmp)//路径、时间、格式
        }
    }


        
       //保存vpp
       //CogSerializer.SaveObjectToFile(cogToolBlockEditV21.Subject, "path");

}

三、展示

VisionPro + C#:联合c#进行简易二次开发_第6张图片

四、可能出现的问题

1、加载的vpp的类型不一致

VisionPro + C#:联合c#进行简易二次开发_第7张图片

2、平台运行时32位(加载Vpp是需要平台位64位运行)

VisionPro + C#:联合c#进行简易二次开发_第8张图片

你可能感兴趣的:(vision,pro脚本,c#联合开发,c#)