海康威视相机C#二次开发环境配置

文章目录

安装

首先,下载MVS,安装完成之后,其【Development】文件夹即用于二次开发,该路径下【Documentations】提供了多种语言的二次开发教程,其中C#教程是chm格式,其版本号为文档版本号,查阅最新版即可;【Samples】则提供了各种编程语言的示例,其中,C#的示例程序包含两组,旧版基于.Net Framework 3.5 开发,V2版本基于.NET5,官方推荐使用V2版本。

【Development/Donet】下即为C#开发所需的SDK,本文采用【AnyCpu/netstandard2.0】,进行开发。.NetStandard其实是一个挺古老的概念了,当年.net生态比较混乱,既有Core,又有Framework。.Net Standard最后一个版本的版本号是2.1,在.NET Core3.0中被引入,但并不支持.NET Framework4.8,从而2.0成了Framework和Core最后的桥梁。

后来.NET的数字版本一统天下,Core和Framework都很少见了,Standard就更没什么人提了,但.Net Standard2.0可以兼容.NET5以上版本。官方V2版本的示例程序,就是基于.NET5开发的。

新建项目和相机初始化

下面用VS新建一个WPF项目,框架使用.NET 10.0,在右侧【解决方案资源管理器】选项卡中,右键【依赖项】,选择【添加项目引用】,找到安装路径中的【...\Development\DotNet\AnyCpu\netstandard2.0】,添加【MvCameraControl.Net.dll】。

添加完成后,在【依赖项/程序集】下面,可以找到【MvCameraControl.Net】,选中后,更改下方属性,将复制本地改为是。然后就可以在C#代码中引用其命名空间了

cs 复制代码
using MvCameraControl;

为了使用海康威视的SDK,需要对其进行初始化,以便于提前申请和分配所必须的系统资源,在WPF项目中,可以放在窗口组件初始化之后

cs 复制代码
public MainWindow()
{
    InitializeComponent();
    SDKSystem.Initialize();
}

在退出程序时,可对其反初始化,释放海康SDK占用的资源。在xaml设计窗口,在中添加

xml 复制代码
<Window 
    Closed="Window_Closed">

对应C#代码为

cs 复制代码
private void Window_Closed(object sender, EventArgs e)
{
    SDKSystem.Finalize();
}

扫描相机

下面实现扫描相机的功能,示例如下

在xaml中创建一组ComboBox和Button,内容如下

xml 复制代码
<StackPanel Orientation="Horizontal">
    <ComboBox x:Name="cbList" Width="150" Margin="5"/>
    <Button Content="扫描设备" Margin="5" Click="btnGetDeviceName_Click"/>
</StackPanel>

其扫描按钮的点击操作为

csharp 复制代码
private void btnGetDeviceName_Click(object sender, RoutedEventArgs e)
{
    List<IDeviceInfo> devInfoList = null;
    int ret = DeviceEnumerator.EnumDevices(DeviceTLayerType.MvGigEDevice, out devInfoList);
    if (ret == MvError.MV_OK)
    {
        cbList.Items.Clear();
        cbList.ItemsSource = devInfoList;
    }
}

【DeviceEnumerator.EnumDevices】就是海康威视提供的设备枚举函数,其输入参数分别是设备类别和输出的设备信息列表。

设备类别可选项如下,可用或运算符叠加。

cs 复制代码
DeviceTLayerType.MvGigEDevice
DeviceTLayerType.MvUsbDevice
DeviceTLayerType.MvGenTLCXPDevice
DeviceTLayerType.MvGenTLXoFDevice
相关推荐
小羊没烦恼!3 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
神仙别闹3 天前
基于C#+MySQL实现(WinForm)个人聊天室软件
c#
FLJwu3 天前
存储与固件量产实战01:运动相机TF卡量产翻车实录!V30≠4K可用,90%OEM踩中的隐形售后坑
经验分享·数码相机·相机
kybs19913 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
Polevne3 天前
C# SFTP客户端实现文件传输
c#·ssh
samble3 天前
从零搭建灌装监控系统(四):深色主题与样式系统,ResourceDictionary 统一管理
c#·wpf·mvvm·样式·工业控制
_Jonas3 天前
.net framework开发环境正式环境配置文件的切换
.net·wpf
cjp5603 天前
024 . WPF MVVM类封装优化
c#
淡海水3 天前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp