首页 > 编程语言 >视觉软件 VisionPro 与 C# 对接简单说明(包括常用控件)

视觉软件 VisionPro 与 C# 对接简单说明(包括常用控件)

时间:2024-02-25 22:11:41浏览次数:33  
标签:控件 VisionPro toolBlock ToolBlock C# var

视觉软件 VisionPro 与 C# 对接简单说明(包括常用控件)

C#和VisionPro对接:VisionPro的部分控件是可以直接在C# WinForm里调用的;算法文件在VisionPro平台里编辑好后保存下来也可以通过C#加载调用;下面我们主要说一下C#调用Vpp文件

首先我们要先引用VisionPro平台的dll文件,在项目文件里添加引用,在引用管理器里程序集扩展里找到需要的dll:
img

一般情况下我们都是在VisionPro平台里新建一个ToolBlock工具再添加输入和输出再在ToolBlock里添加一系列工具运算出需要的结果到输出参数,再把ToolBlock整个保存下来,然后用C# 加载给输入参数赋值得到输出参数:

先在CS文件里添加引用:

using Cognex.VisionPro;
using Cognex.VisionPro.ToolBlock;

加载Vpp文件代码:

//加载Vpp文件
var path=@"";
var toolBlock=CogSerializer.LoadObjectFromFile(path);

给输入参数赋值代码:

 toolBlock.Inputs["InputImage"].Value = image;

工具运行代码:

 toolBlock.Run();

运行成功代码:

 if (toolBlock.RunStatus.Result == CogToolResultConstants.Accept)
{
//运行OK
}

获取得到输出参数代码:

var angle = (double)toolBlock.Outputs["Angle"].Value;

C# 和相机拍照获取图片对接有两种写法:

第一种比较简单就和上面调其它ToolBlock Vpp文件一样运行拍照工具CogAcqFifoTool输出图片即可

另一种代码如下:

//TB_Acq是加载在ToolBlock里放一个CogAcqFifoTool工具的ToolBlock
var acqFifoTool = (CogAcqFifoTool)TB_Acq.Tools["CogAcqFifoTool1"];
var acqFifo = AcqFifoTool.Operator;
//拍照完成触发事件
acqFifoTool.Operator.Complete += new CogCompleteEventHandler(Camera1Acq_compeletevent);

下面再介绍下VP在C#里常用的三个控件:
1.图像显示控件(CogRecordDisplay):

CogRecordDisplay1.InteractiveGraphics.Clear();
CogRecordDisplay1.Record = toolBlock.CreateLastRunRecord().SubRecords[0];
CogRecordDisplay1.Fit();

2.Vpp文件编辑控件(CogToolBlockEditV2):

var CogToolBlockEditV21 = new CogToolBlockEditV2();
CogToolBlockEditV21.Dock = DockStyle.Fill;
this.Controls.Add(CogToolBlockEditV21);
this.CogToolBlockEditV21.Subject =(CogToolBlock)CogSerializer.LoadObjectFromFile(ToolBlockPath);

3.相机工具编辑控件(CogAcqFifoEditV2):

var CogAcqFifoEditV2=new CogAcqFifoEditV21();
var cogToolBlock = (CogToolBlock)CogSerializer.LoadObjectFromFile(acqFifoFilePath);
this.CogAcqFifoEditV21.Subject = (CogAcqFifoTool)cogToolBlock1.Tools["CogAcqFifoTool1"];

转载:https://blog.csdn.net/zhangxiangzero/article/details/103343075?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-4.highlightwordscore&spm=1001.2101.3001.4242.3

标签:控件,VisionPro,toolBlock,ToolBlock,C#,var
From: https://www.cnblogs.com/mayishangtaijie/p/18033181

相关文章

  • Vue3学习(十八) - TreeSelect 树选择
    写在前面本以为可以在家学习一天,结果家里来了客人拜年,就没学习上,有点小遗憾吧。昨天完成从分类管理的前后端代码复制出文档管理的前后端代码,遗留问题是只能选择一级父分类。值得说的是,昨晚的遗留的问题修复了,开心。遗留问题点击父文档,弹出警告,从报错来看那意思就是parent应该......
  • 使用`react-hooks写法`对`antd的Upload.Dragger上传组件`进行二次封装
    使用react-hooks写法对antd的Upload.Dragger上传组件进行二次封装预期对antd的Upload.Dragger组件进行二次封装,让它的使用方法和Upload.Dragger组件保持一致。让该组件能自动把数据放到对应后端服务器中。让该组件能的value值如果没上传,为数组形式。如果没有值,为空数组。如......
  • C#异常
    C#异常解决转载:https://www.cnblogs.com/txwtech/p/11836139.html右键项目--》属性--》生成--》高级--》语言版本选择你配置文件所对应的版本。或者:右键项目---》管理nuget程序包--》查找安装或者更新Microsoft.Net.Compilers......
  • mysql access denied for root ... mysqld –skip-grant-tables 命令失效 ... Failed
    <!--密码突然登录不上MySQL了,久了也不晓得是不是密码不正确...只能改密码...一年难得碰一次,感觉每次总有莫名其妙的问题--><!--修改方案只找到一个,就是无密码验证开启mysql服务,然后登录,设置新密码--><!--mysql版本不同有些命令无效,大概分高低两版本--><!--低版命令我......
  • 文心一言 VS 讯飞星火 VS chatgpt (201)-- 算法导论15.2 6题
    六、用go语言,证明:对n个元素的表达式进行完全括号化,恰好需要n-1对括号。文心一言,代码正常运行:在Go语言中,证明对n个元素的表达式进行完全括号化恰好需要n-1对括号,可以通过数学归纳法和递归思考来实现。首先,我们可以明确一个基本的观察:一个单独的元素不需要括号。将两个元素......
  • C#无标题栏窗体的移动
    C#无标题栏窗体的移动转载于:https://www.cnblogs.com/magicianlyx/p/4918153.html首先C#无标题栏窗体的实现代码在load时实现无工具栏+无窗口标题privatevoidForm1_Load(objectsender,EventArgse){this.ControlBox=false;this.Tex......
  • C# 根据坐标获取句柄
    C#根据坐标获取句柄//获取窗口标题[DllImport("user32",SetLastError=true)]publicstaticexternintGetWindowText(IntPtrhWnd,//窗口句柄StringBuilderlpString,//标题intnMaxCount//最大值);//获取类的名字[DllImport("user32.dll")]priv......
  • C# 理解Thread.Sleep()方法
    C#理解Thread.Sleep()方法转载:https://www.cnblogs.com/nzbbody/archive/2012/03/06/2381359.html我们可能经常会用到Thread.Sleep函数来使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题:1、假设现在是2008-4-712:00:00.000,如果我调用一下......
  • docker使用btrfs存储驱动
    ubuntu22环境1.ddif=/dev/zeroof=btrfs.imgbs=1mcount=20002.losetup/dev/loop16btrfs.img3.aptinstallbtrfs-progs4.mkfs.btrfs-f/dev/loop165.mount-tbtrfs/dev/loop16/var/lib/docker6.root@nmx-virtual-machine:/home/nmx#df-TFilesystemType1K......
  • docker-compose更新镜像
    实现方式通过环境变量的方式实现,docker-compose.yaml文件中image段指定的镜像通过变量方式引入,以下是示例:docker-compose.yaml文件内容如下:version:'3'services:svc-new-pro:image:${SVC_NEW_PRO}environment:TZ:Asia/Shanghaiports:-"80......