在常用的视觉上位机中,我们通常会使用单个上位机匹配多个相机或者多品牌相机,所以在此记录一个可重写的通用相机类,用于后续长期维护开发。
先上代码。
csharp
using HalconDotNet;
using System.Collections.Generic;
namespace WeldingInspection.MyCamer
{
//通用相机类
public abstract class MyBaseCamera
{
public HObject MyImage { get; set; }
public string CamerName { get; set; }
public abstract List<string> FindCamer();//查找相机
public abstract bool OpenCamer(string CamerName);//根据相机序列号开启相机
public abstract bool CloseCamer();//关闭相机
public abstract bool OneGrap();//软触发一次
public abstract bool EncoderGrap();//启动为硬触发
public abstract bool ReconnectCamer(string CamerName);//重连相机
public abstract bool SetExposureTime(int ExposureTime);//设置曝光
//图像委托事件,用于传出参数
public delegate void delegateProcessHImage(HObject Image);
public event delegateProcessHImage EventProcessImage;
//调用图像函数,用于在转换图像格式后将图像传出
public void GetImage(HObject getimage)
{
MyImage = new HObject(getimage);
EventProcessImage(MyImage);
}
}
}
csharp
//如何使用通用相机类
MyBaseCamera _2dCamer=null;//新建虚函数对象
_2dCamer =new HKCamerSDK();//根据我们需要开启的相机品牌去实例化化相机类
_2dCamer.EventProcessImage += _2dImage;//注册委托事件,在拍照成功后会携带图像数据跳转到函数中
public void _2dImage(HObject camerimage)
{
//camerimage,所采集到的图像变量
}
通用的相机类包含我们需要继承和重写的内容,其中方式有很多种,暂定列举现在常用的通用功能。分为:查找相机,根据相机序列号开启相机,关闭相机,软触发一次,硬触发(飞拍),重连相机,设置参数。
如果有新增通用功能在另外编写修改。