当前位置: 首页 > news >正文

c#visionpro开发 方法统计

toolblock开发
vpp第二种简单加载方式
public Cognex.VisionPro.ToolBlock.CogToolBlock ToolBlock1;//初始化后实例化一个方法

//窗口运行程序内部
ToolBlock1 = (CogToolBlock)CogSerializer.LoadObjectFromFile(“tjjc.vpp”);
MessageBox.Show(“算法加载成功”);//复制一个vpp到程序内部 并将属性选择为始终复制。
第一步引用
引用
using System.Net.Sockets;
using System.Net;
using System.Threading;
using Cognex.VisionPro.ToolBlock;
using Cognex.VisionPro.ImageFile;
using Cognex.VisionPro;
using System.IO;
第二步
在初始化步骤之后
public string VppPath = System.Windows.Forms.Application.StartupPath;//读取软件启动地址 自动读取文件在盘中的位置
实例化一个工具
Public static Cognex.VisionPro.ToolBlock.CogToolBlock ToolBlock1 = new Cognex.VisionPro.ToolBlock.CogToolBlock();//实例化toolblock工具
vpp名称
string CogToolBlock1Name = “CogToolBlock1.vpp”;//创建一个字符串vpp名称备用
实例化所需要的工具 例如 相机
public CogImageFileTool gImageFileTool = new CogImageFileTool();//实例化图片打开
public static Cognex.VisionPro.CogAcqFifoTool CamTool1 = new CogAcqFifoTool();//实例化相机工具
string CamtoolName1 = “cogAcqFifoTool1.vpp”;
string SaveImagesPath = “D:\SaveImages\CAM1”;
获取时间
DateTime now = DateTime.Now;now变量存储当前时间 使用方式
yyymmmdddsss;

第三步
private void Form1_Load(object sender, EventArgs e)//创建一个任务
Try 试着去运行一段程序
{
textBox1.Text = iniFile.IniReadValue(“设置”, “IP地址”, ConfigPath + “设置.ini”);
textBox2.Text = iniFile.IniReadValue(“设置”, “端口号”, ConfigPath + “设置.ini”);
comboBox1.Text = iniFile.IniReadValue(“设置”, “类型”, ConfigPath + “设置.ini”);
Pixlength.Text = iniFile.IniReadValue(“设置”, “像素当量”, ConfigPath + “设置.ini”);
InitialX.Text = iniFile.IniReadValue(“设置”, “机械手初始位置X”, ConfigPath + “设置.ini”);
InitialY.Text = iniFile.IniReadValue(“设置”, “机械手初始位置Y”, ConfigPath + “设置.ini”);

            //SP.showLoadMessage("正在算法程序!");string fileName1 = VppPath + "\\IVS\\" + CogToolBlock1Name;

ToolBlock1 = (Cognex.VisionPro.ToolBlock.CogToolBlock)(CogSerializer.LoadObjectFromFile(fileName1)); ToolBlock1=(Cognex.VisionPro.ToolBlock.CogToolBlock)(CogSerializer.LoadObjectFromFile(fileName1));//加载路径把VPP给toolblock1
this.cogToolBlockEditV21.Subject = ToolBlock1;//把toolblock给界面的工具

string fileNameCam1 = VppPath + “\IVS\” + CamtoolName1;
CamTool1=(Cognex.VisionPro.CogAcqFifoTool)(CogSerializer.LoadObjectFromFile(fileNameCam1));//加载路径把相机设置给CamTool1
cogAcqFifoEditV21.Subject = CamTool1;
listboxmessage(“算法加载成功”, Brushes.Green);
listboxmessage(“相机加载成功”, Brushes.Green);
}
catch (Exception ex)
{
listboxmessage(“算法加载失败”, Brushes.Red);
listboxmessage(“相机加载失败”, Brushes.Red);
}
加载工作完成;
进入下一步;
触发运行阶段;
this.openFileDialog1.FileName = “”;
openFileDialog1.Filter = “Image Files(.BMP;.JPEG;.TIF;.PNG)|.BMP;.JPEG;.TIF;.PNG”;

            openFileDialog1.ShowDialog();string strFileName = openFileDialog1.FileName;Bitmap BitmapAR = (Bitmap)Image.FromFile(strFileName);Bitmap Bitmap;Bitmap = (Bitmap)Image.FromFile(strFileName);CogImage24PlanarColor cogImage24PlanarColor = new CogImage24PlanarColor((Bitmap)Bitmap);//彩色图像//CogImage8Grey cogImage8Gray = new CogImage8Grey((Bitmap)Bitmap);//黑白图像//iCogImage = (ICogImage)cogImage8Gray;

实例化图像格式;

下一步;如果收到触发信号 取图工具准备 运行 加载图像到toolblock 运行。
if (strFileName != “”)
{
gImageFileTool.Operator.Open(strFileName, CogImageFileModeConstants.Read);
gImageFileTool.Run();
//cogRecordDisplay1.Image = cogImage8Gray;
ToolBlock1.Inputs[0].Value = gImageFileTool.OutputImage as Cognex.VisionPro.CogImage24PlanarColor;//把加载后的图像给toolblock的图像输入
ToolBlock1.Run();

            }

另一种运行方式

string imageName = “CAM1.bmp”;
SaveSouceImage(SaveImagesPath, imageName, CamTool1.OutputImage);//保存图像到那个位置
//display.AddTextOnImage(display.cogRecordDisplay1, “OK”, 300, 300, CogColorConstants.Green, 70, false);
ToolBlock1.Inputs[0].Value = CamTool1.OutputImage as Cognex.VisionPro.CogImage24PlanarColor;//此处为黑白图像输入图像为取图工具输出图像
ToolBlock1.Run();//运行
cogRecordDisplay1.Image = null;//运行前清除画面
cogRecordDisplay1.StaticGraphics.Clear();
cogRecordDisplay1.InteractiveGraphics.Clear();//运行前清除画面
cogRecordDisplay1.Record = ToolBlock1.CreateLastRunRecord().SubRecords[3];//处理后图像显示
cogRecordDisplay1.Fit();//自适应
string Xpix = ToolBlock1.Outputs[0].Value.ToString();//结果获取
string Ypix = ToolBlock1.Outputs[1].Value.ToString();//结果获取
double count = Convert.ToDouble(ToolBlock1.Outputs[2].Value);//结果获取
string X1pix = ToolBlock1.Outputs[3].Value.ToString();//结果获取
string Y1pix = ToolBlock1.Outputs[4].Value.ToString();//结果获取
string X2pix = ToolBlock1.Outputs[5].Value.ToString();//结果获取
string Y2pix = ToolBlock1.Outputs[6].Value.ToString();//结果获取
运行完成;

跨窗体调用参数
public Form2(Form1 mform1)
{
InitializeComponent();

        mform = mform1;}Form1 mform = null;

读取复选框中的数据
if (comboBox1.SelectedItem.ToString()“管理员”&& textBox3.Text"123456")
{
button6.Enabled = true;
}
else if (comboBox1.SelectedItem.ToString() == “工程师” && textBox3.Text == “123456”)
{
button6.Enabled = true;
button7.Enabled = true;//按钮=true可以选择
}

调用窗体程序
Form2 f = new Form2(this);

        f.ShowDialog();//打开新窗体

private void button9_Click(object sender, EventArgs e)//占用主线程示例
{
Thread.Sleep(3000);
MessageBox.Show(“第一步完成”);
Thread.Sleep(5000);
MessageBox.Show(“第二步完成”);
}

    private void button10_Click(object sender, EventArgs e)//thread开线程示例{Thread t = new Thread(()=> {Thread.Sleep(3000);MessageBox.Show("第一步完成");Thread.Sleep(5000);MessageBox.Show("第二步完成");});t.Start();}private void button11_Click(object sender, EventArgs e)//task开线程示例(常用){Task.Run(()=>{Thread.Sleep(3000);MessageBox.Show("第三步完成");Thread.Sleep(5000);MessageBox.Show("第四步完成");});

多线程同时运行 如何一步一步运行;
(添加async属性)(await等待运行)
private async void button12_Click(object sender, EventArgs e)
{
await Task.Run(() =>
{
Thread.Sleep(3000);
MessageBox.Show(“第三步完成”);
});
await Task.Run(() =>
{
Thread.Sleep(5000);
MessageBox.Show(“第四步完成”);
});
MessageBox.Show(“全部完成”);
}

特殊开线程的一种方法timer
using System.Threading;//引用一个类
public System.Threading.Timer timer2;//实例化一个timer
timer2 = new System.Threading.Timer(t, null, 1000, 1000);//定义一个timer数据。T 方法 null这个值可以为空 1000第一次运行的时间 1000往后每次的时间。
private void t (object obj)
{
this.Invoke(new Action(() =>//委托 跨线程访问。
//程序运行区域;
}
手动timer暂停的方法
Timer.change(Timeout.Infinite,Timeout.Infinite)
重新启动的方法
Timer.change(0,1000);//恢复计时器

弹窗确认后继续运行的方法
DialogResult result = MessageBox.Show(“是否确认继续运行程序?”, “提示”, MessageBoxButtons.YesNo);

    if (result == DialogResult.Yes){// 用户选择确认,继续运行程序Console.WriteLine("程序继续运行...");}else{// 用户选择取消,不继续运行程序Console.WriteLine("程序停止运行...");return;}

相关文章:

c#visionpro开发 方法统计

toolblock开发 vpp第二种简单加载方式 public Cognex.VisionPro.ToolBlock.CogToolBlock ToolBlock1;//初始化后实例化一个方法 //窗口运行程序内部 ToolBlock1 (CogToolBlock)CogSerializer.LoadObjectFromFile(“tjjc.vpp”); MessageBox.Show(“算法加载成功”);//复制一个…...

dedecms——四种webshell姿势

姿势一:通过文件管理器上传WebShell 步骤一:访问目标靶场其思路为 dedecms 后台可以直接上传任意文件,可以通过文件管理器上传php文件获取webshell 步骤二:登陆到后台点击【核心】--》 【文件式管理器】--》 【文件上传】将准备好…...

GO GIN 推荐的库

在使用 Go 和 Gin 框架进行 Web 开发时,有许多第三方库可以增强功能和提高开发效率。以下是一些常用的、与 Gin 搭配使用的库: 1. 数据处理与验证 go-playground/validator 用于结构体字段的验证,Gin 默认已经集成了它。它提供了丰富的验证…...

YOLOv9改进策略【卷积层】| GnConv:一种通过门控卷积和递归设计来实现高效、可扩展、平移等变的高阶空间交互操作

一、本文介绍 本文记录的是利用GnConv优化YOLOv9的目标检测方法研究。YOLOv9在进行目标检测时,需要对不同层次的特征进行融合。GnConv可以考虑更高阶的空间交互,能够更好地捕捉特征之间的复杂关系,从而增强特征融合的效果,提高模…...

如何在Linux下升级R版本和RStudio

一、升级R版本 在Linux上,R的安装通常通过包管理器完成。不同的Linux发行版(如Ubuntu、Debian、Fedora等)可能略有不同。下面以Ubuntu为例,介绍如何升级R版本。如果你使用其他发行版,步骤可能类似。 二.更新步骤 2.…...

npm安装时候报错certificate has expired

打开了一个很久没用的电脑,npm和node都装好了,安装包的时候一直报错 request to https://registry.npm.taobao.org/create-react-app failed, reason: certificate has expired而且先报错rollbackFailedOptional 然而npm没什么问题,是ssl过…...

CSP-J_S第一轮复习资料1·计算机硬件

下一章...

oracle 表的外键

表的外键 3.5.1表之间的三种关系 在数据库设计中,工作中经常会分析商业逻辑中的表的设计。在设计表的关系之前,需要先了解关系型数据库特点。关系数据库有如下特点: 关系型数据库采用了关系模型来组织数据的数据库。 关系型数据库的最大特点…...

加密与安全_优雅存储二要素(AES-256-GCM )

文章目录 什么是二要素如何保护二要素(姓名和身份证)加密算法分类场景选择算法选择AES - ECB 模式 (不推荐)AES - CBC 模式 (推荐)GCM(Galois/Counter Mode)AES-256-GCM简介AES-256-GCM工作原理安全优势 应用场景其他模式 和 敏感…...

【C++高阶】解锁C++的深层魅力——探索特殊类的奥秘

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:C 类型转换 🌹🌹期待您的关注 🌹🌹 ❀C特殊类 📒1. 不能被拷贝…...

Vue学习记录之三(ref全家桶)

ref、reactive是在 setup() 声明组件内部状态用的&#xff0c; 这些变量通常都要 return 出去&#xff0c;除了供 < template > 或渲染函数渲染视图&#xff0c;也可以作为 props 或 emit 参数 在组件间传递。它们的值变更可触发页面渲染。 ref &#xff1a;是一个函数&…...

第二十六篇——九地篇:九种形势的应对之道

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 地势的维度重新阐述了懂得人心的重要性&#xff0c;道久其归一为为别人。…...

学习记录:js算法(三十七): 搜索二维矩阵

文章目录 搜索二维矩阵我的思路网上思路 总结 搜索二维矩阵 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; ● 每行中的整数从左到右按非严格递增顺序排列。 ● 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&a…...

拥控算法BBR入门1

拥塞控制算法只与本地有关 一个TCP会话使用的拥塞控制算法只与本地有关。 两个TCP系统可以在TCP会话的两端使用不同的拥塞控制算法 Bottleneck Bandwidth and Round-trip time Bottleneck 瓶颈 BBR models the network to send as fast as the available bandwidth and is 2…...

[Python数据可视化]Plotly Express: 地图数据可视化的魅力

在数据分析和可视化的世界中&#xff0c;地图数据可视化是一个强大而直观的工具&#xff0c;它可以帮助我们更好地理解和解释地理数据。Python 的 Plotly Express 库提供了一个简单而强大的方式来创建各种地图。本文将通过一个简单的示例&#xff0c;展示如何使用 Plotly Expre…...

windows C++ 并行编程-PPL 中的取消操作(四)

并行模式库 (PPL) 中取消操作的角色、如何取消并行工作以及如何确定取消并行工作的时间。 运行时使用异常处理实现取消操作。 请勿在代码中捕捉或处理这些异常。 此外&#xff0c;还建议你在任务的函数体中编写异常安全的代码。 例如&#xff0c;可以使用获取资源即初始化 (RA…...

【数据结构】字符串与JSON字符串、JSON字符串及相应数据结构(如对象与数组)之间的相互转换

前言&#xff1a; 下面打印日志用的是FastJSON依赖库中的 Log4j2。依赖&#xff1a; <!-- Alibaba Fastjson --> <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.80</version> …...

LeetcodeTop100 刷题总结(一)

LeetCode 热题 100&#xff1a;https://leetcode.cn/studyplan/top-100-liked/ 文章目录 一、哈希1. 两数之和49. 字母异位词分组128. 最长连续序列 二、双指针283. 移动零11. 盛水最多的容器15. 三数之和42. 接雨水&#xff08;待完成&#xff09; 三、滑动窗口3. 无重复字符的…...

Next-ViT: 下一代视觉Transformer,用于现实工业场景中的高效部署

摘要 由于复杂的注意力机制和模型设计&#xff0c;大多数现有的视觉Transformer&#xff08;ViTs&#xff09;在实际的工业部署场景中&#xff0c;如TensorRT和CoreML&#xff0c;无法像卷积神经网络&#xff08;CNNs&#xff09;那样高效运行。这提出了一个明显的挑战&#x…...

C++知识点示例代码助记

C语言设计期末知识点附示例代码。 1. 基础语法 变量和数据类型&#xff1a; int a 10; // 整型 float b 5.25f; // 单精度浮点型 double c 5.25; // 双精度浮点型 char d A; // 字符型 bool e true; // 布尔型 const int PI 3.14; // 常量输入输出&…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...