当前位置: 首页 > 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;}
http://www.lryc.cn/news/440183.html

相关文章:

  • dedecms——四种webshell姿势
  • GO GIN 推荐的库
  • YOLOv9改进策略【卷积层】| GnConv:一种通过门控卷积和递归设计来实现高效、可扩展、平移等变的高阶空间交互操作
  • 如何在Linux下升级R版本和RStudio
  • npm安装时候报错certificate has expired
  • CSP-J_S第一轮复习资料1·计算机硬件
  • oracle 表的外键
  • 加密与安全_优雅存储二要素(AES-256-GCM )
  • 【C++高阶】解锁C++的深层魅力——探索特殊类的奥秘
  • Vue学习记录之三(ref全家桶)
  • 第二十六篇——九地篇:九种形势的应对之道
  • 学习记录:js算法(三十七): 搜索二维矩阵
  • 拥控算法BBR入门1
  • [Python数据可视化]Plotly Express: 地图数据可视化的魅力
  • windows C++ 并行编程-PPL 中的取消操作(四)
  • 【数据结构】字符串与JSON字符串、JSON字符串及相应数据结构(如对象与数组)之间的相互转换
  • LeetcodeTop100 刷题总结(一)
  • Next-ViT: 下一代视觉Transformer,用于现实工业场景中的高效部署
  • C++知识点示例代码助记
  • Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 垃圾回收算法
  • 苍穹外卖Day01-2
  • 软考中级软件设计师——数据结构与算法基础学习笔记
  • 虚幻引擎 | (类恐鬼症)玩家和NPC语音聊天(中)
  • 整流电路的有源逆变工作状态
  • Android 签名、空包签名 、jarsigner、apksigner
  • java基础(小技巧)
  • Android Studio 安装配置教程(Windows最详细版)
  • Cesium绘制可编辑线
  • 【算法】差分思想:强大的算法技巧
  • 微软开源项目 Detours 详细介绍与使用实例分享