一个集成各个品牌相机的demo(海康、大恒和巴斯勒相机)

首先还是官方一下,哈哈!
本文是我开发的一个小demo,我将多种相机集成到该demo中,方便链接调试各个厂家的相机。
主要添加了海康、大恒和巴斯勒相机,整个程序的设计框架不外乎也就接口与继承的技术。如果你需要添加其他的相机进来,可以直接添加对应厂家的库,写好自己的类就行了。
下面是软件的部分程序内容和软件展示:
在这里插入图片描述软件运行效果
部分程序:
namespace MyCamCtrl
{
public class CamFactory
{
public CamFactory() { if (CameraList == null) CameraList = new List(); }

    private static List<ICamera> CameraList { get; set; } = new List<ICamera>() { };

    /// <summary>
    /// 按相机品牌获取相近SN枚举
    /// </summary>
    /// <param name="brand"></param>
    /// <returns></returns>
    public static List<string> GetDeviceEnum(CameraBrand brand)
    {
        ICamera camera = null;
        switch (brand)
        {
            case CameraBrand.DaHeng:
                camera = new DHCamera();
                break;
            case CameraBrand.HaiKang:
                camera = new HaiKCamera();
                break;
            case CameraBrand.Basler:
                camera = new BaslerCamera();
                break;
            default: break;
        }
        return camera?.GetListEnum();
    }

    /// <summary>
    /// 按品牌创建相机
    /// </summary>
    /// <param name="brand"></param>
    /// <returns></returns>
    public static ICamera CreatCamera(CameraBrand brand)
    {
        ICamera returncamera = null;
        switch (brand)
        {
            case CameraBrand.DaHeng:
                returncamera = new DHCamera();
                break;
            case CameraBrand.HaiKang:
                returncamera = new HaiKCamera();
                break;
            case CameraBrand.Basler:
                break;
            default:
                break;
        }
        CameraList.Add(returncamera);
        return returncamera;
    }

    /// <summary>
    /// 获取对应SN的相机实例
    /// </summary>
    /// <param name="CamSN"></param>
    /// <returns></returns>
    public static ICamera GetItem(string CamSN)
    {
        ICamera cameraStandard = null;
        if (CameraList.Count < 1) return cameraStandard;

        foreach (var item in CameraList)
        {
            if ((item as BaseCamera).SN.Equals(CamSN))
            {
                cameraStandard = item;
                break;
            }
        }
        return cameraStandard;
    }

    /// <summary>
    /// 注销相机
    /// </summary>
    /// <param name="decamera"></param>
    public static void DestroyCamera(ICamera decamera)
    {
        CameraList?.Remove(decamera);
        decamera?.CloseDevice();
    }

    /// <summary>
    /// 注销所有相机
    /// </summary>
    public static void DestroyAll()
    {
        if (CameraList.Count < 1) return;
        foreach (var camereaitem in CameraList)
        {
            camereaitem?.CloseDevice();
        }
        CameraList?.Clear();
    } 
}

}

如果有需要,可以下载源代码:
https://download.csdn.net/download/weixin_43311534/89578017

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷酷的小明1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值