C#与halcon混合编程(4)

主界面窗口

**    1、  去除主窗口边框(FormBorderStyle)并更改主窗口颜色(BackColor) ;

**    2、  创建 label 显示检测结果 ,并更改显示颜色(ForeColor); 以及其他 label 显示其他信息 ;

**    3、  创建 groupcontrol (devexpress类)  ,修改 text 并居中 ;在其中添加 hwindowcontrol 控件进行窗口显示 ;

**    4、  创建 panel 并在其中放置多个小的 panel ,在每个小 panel 中添加 hwindowcontrol 控件显示每个相机状态 ,并将滚动条 autoscroll 开启;

**    5、  创建相关功能的 button 按钮;(检测设定就是前几节课的 form 窗口)

**    6、  创建 gridcontrol 控件用于显示相关各个相机的检测项以及检测配置,并通过该控件实时修改控件中相关检测参数,并立即生效;

**    7、  创建启动停止功能的 simplebutton ;

**    8、  创建速度设定的 trackbar ; 同时创建速度设定的 labelcontrol ;

配置加载

**    1、  添加相机类;配置mainform;添加新函数进pathtool;C#中xml文件操作相关;C#中dat文件操作(序列化)相关;

//  mainform.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HalconDotNet;
using System.Xml;//实现XML文件的创建,子元素的添加,修改,删除。

namespace vision
{
    public partial class mainform : Form
    {
        public List<Camera> cameras;//将相机放入列表中
        public static string CurrentCCD;//当前相机
        public Dictionary<string, Camera> CCD;//创建字典,将相应CCD相机名称与Camera类进行对应

        Dictionary<string, HWindowControl> findhwin = new Dictionary<string, HWindowControl>();//将相应CCD相机名称与HalconwindowControl进行对应;

        public DataSet posdata;//相机位置参数

        //旧配置加载
        public mainform()
        {
            InitializeComponent();
            //初始化相机与Hwin间对应关系;
            findhwin.Clear();//清除键值对
            findhwin.Add("CCD1", hWindowControl2);//添加键值对
            findhwin.Add("CCD2", hWindowControl3);
            findhwin.Add("CCD3", hWindowControl4);
            findhwin.Add("CCD4", hWindowControl5);
            findhwin.Add("CCD5", hWindowControl6);
            posdata = new DataSet();//实例化相机位置参数
            cameras = new List<Camera>();//实例化相机列表
            CCD = new Dictionary<string, Camera>();//实例化相机对应关系字典

            CurrentCCD = "CCD1";//初始化当前相机
            loadCamera();//加载相机参数

            foreach (Camera c in cameras)//读取每个相机的控件工具
            {
                c.toollist = pathtool.ReadFromdat(pathtool.currentProductPath + @"\" + c.logicName + ".dat");
            }
            label6.Text = pathtool.currentProduct;//当前显示相机的名称更改到大窗口名称中
            posdata.ReadXml(pathtool.currentProductPath + @"\Posdata.xml");//读取位置设定参数【每个相机位置;吹气工位位置;吹气宽度设置;默认启动速度;相机曝光参数;相机增益参数;其他参数】

       //这里可以检查控制方面的连接是否正常,相机是否正常,如果不正常就提示

            this.ShowDialog();//弹出窗体:弹出来的窗体永远是被置顶的,如不关闭,不能使用别的窗体。
        }

        //新配置新建
        public mainform(int a)
        {
            InitializeComponent();
            //初始化相机与Hwin间对应关系;
            findhwin.Clear();//清除键值对
            findhwin.Add("CCD1", hWindowControl2);//添加键值对
            findhwin.Add("CCD2", hWindowControl3);
            findhwin.Add("CCD3", hWindowControl4);
            findhwin.Add("CCD4", hWindowControl5);
            findhwin.Add("CCD5", hWindowControl6);

            posdata = new DataSet();//实例化相机位置参数
            cameras = new List<Camera>();//实例化相机列表
            CCD = new Dictionary<string, Camera>();//实例化相机对应关系字典

            CurrentCCD = "CCD1";//初始化当前相机
            loadCamera();//加载相机参数
            //相机配置见 camset.xml【名字;帧率;畸变校正类型;增益;曝光时间;单个像素对应尺寸;内部名称】
            
            foreach (Camera c in cameras)//读取每个相机的控件工具
            {
                string cpath = pathtool.currentProductPath + @"\" + c.logicName + ".dat";//获取当前相机的dat文件
                pathtool.SaveTodat(c.toollist, cpath);//生成空的序列化后的文件
            }

            label6.Text = pathtool.currentProduct;//当前显示相机的名称更改到大窗口名称中

            InitPos();//创建位置信息文件

            MessageBox.Show("是新建配置!");

            this.ShowDialog();
        }
        private void loadCamera()//加载相机函数;
        {
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值