主界面窗口
** 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()//加载相机函数;
{