工业相机 SDK 二次开发-VB.NET 程序示例

本文主要介绍了使用工业相机 SDK(Software Development Kit)开发 VB.NET 程序方法
及过程。在 SDK 开发包目录下,提供了 13 个 VB.NET 示例程序,其中 Form 程序 5 个,分
别为 BasicDemo、ReconnectDemo、SetIODemo、ForceIpDemo、MultipleDemo;控制台程序
8 个,分别为 ConnectSpecCamera、ConvertPixelType、Events、Grab_Callback、GrabImage、
MultiCast、ParametrizeCamera_FileAccess、ParametrizeCamera_LoadAndSave。这些示例程序
分别从不同角度展示了利用 MvCameraControl.Net 进行开发的方法。
本文就这五个 VB Form 示例程序的操作方法和开发流程展开讨论,介绍各个示例程
序的使用步骤和开发流程,方便用户快速入门使用 C# SDK。
【注意】
VB 版示例程序兼容中英文,对关键的程序会有中英文的注释,且界面控件也有中英文
的区分,可通过切换属性的 language 实现。如下所示,根据 form 界面的语言选择来进行转
换。


一.BasicDemo 使用步骤及开发流程
1.1 Demo 软件使用步骤
1.1 软件界面总览
软件一共包括五个控制模块(初始化,设备控制,图像采集,图片保存,参数
控制)、一个下拉设备列表和一个图像显示区域


1.2 使用过程
 点击①进行查找设备,这时②会出现当前在线的设备列表,命名方式为设备
序号+设备名称+设备 IP
 选择其中一个设备


 点击③打开当前选中的设备


 此时,因为相机当前的属性是连续采集,所以⑤被默认选中;用户可以根据
需要切换为连续采集或者触发模式,点击⑤或⑥即可


 在触发模式下,⑨将不再变灰,可以设置为软触发,同时⑩也是可以点击从
而完成触发一次功能


 采用连续模式下,点击⑦进行图像采集,左边的显示区域将会出现实时图像


 此时,若点击⑪或者⑫,将会在当前 exe 目录下出现一个名称为 Image.bmp
或者 Image.jpg 的图片,即为保存的当前图像
 点击⑯将会刷新当前的曝光时间、增益和帧率的数值,而更改⑬⑭⑮的数
值之后点击⑰将会重新设置新的曝光时间、增益和帧率的数值


 在使用过程中有任何异常或错误,都会以弹窗的形式出现提示,若没有任何
提示,则认为一切正常地运行
2 Demo 软件开发步骤
2.1 Dll 环境准备,安装 mvs 会把 dll 打入环境变量。
2.2 导入.NET 库


2.3 创建 MyCamera 类,该类包含了 SDK 中关于相机的各种操作


2.4 用户可以根据每个函数的介绍从而自己安排合适逻辑进行合适地开发
二.ReconnectDemo 使用步骤及开发流程
2.1 Demo 软件使用步骤
2.1.1 界面总体
总体界面如下图。界面类似 BasicDemo,具有查找设备、打开设备、关闭设备、开始采
集、停止采集、设置触发等功能。


2.1.2 使用过程
ReconnectDemo 中,当相机断线时,程序会进入异常回调,异常回调中,会根据当前选
中的相机信息进行不断的尝试连接,当相机在线时则会被连接上。
2.2 Demo 软件开发步骤
关于相机操作的开发流程与 BasicDemo 相似。本节重点介绍回调函数的使用方法。
在 VB 中,用 delegate(代理)的方式代替 C 语言中函数指针。在工业相机 C# SDK 中,
异常断线的回调代理为 MyCamera. cbExceptiondelegate。
首先在 Form1 类中申明一个回调代理成员变量,并创建实例:
Dim cbCallback As MyCamera.cbExceptiondelegate 
= New MyCamera.cbExceptiondelegate(AddressOf cbExceptiondelegateFunc)
其中,cbExceptiondelegateFunc 表示回调处理函数。
其次,在打开相机操作之后,利用 SDK 中注册回调函数接口,注册回调函数。当相机异
常断线时,程序会进入异常回调。用户可在异常回调中进行重新连接相机的操作。注册过程
如下:
dev.MV_CC_RegisterExceptionCallBack_NET(cbCallback, IntPtr.Zero)
在本示例程序中,cbExceptiondelegate 函数先是会对进行 CloseDevice 和 DestroyHandle
操作,之后则会不断的尝试连接相机。
SetIODemo 使用步骤及开发流程
本节介绍的 Demo 主要实现对相机 IO 输入输出的控制。使用用户群体为需要对相机 IO
进行控制的用户。
3.1 Demo 软件使用步骤
3.1.1 界面总体
总体界面如下图所示。


3.1.2 使用过程
相机基本操作与 BasicDemo 相似。打开一个设备后可以对相机的 IO 属性进行获取和设
置。IO 属性主要有 LineSelector 和 LineMode 两个。分别点击获取和设置可以对相应的属性
进行读取和写入。
3.2 Demo 软件开发步骤
3.2.1 IO 属性
有关相机 IO 属性主要有两个:LineSelector 和 LineMode。LineSelector 指输出端口选择,
目前相机主要有三个 IO 端口:Line0,Line1,Line2.其中,Line0 只可配置为输入,Line1
只可配置为输出,Line2 可配置为输入或者输出。LineMode 表示输入或者输出模式。
3.2.2 获取和设置接口
在示例程序中,获取和设置 IO 用到的接口分别为:MV_CC_GetEnumValue_NET(ByVal 
strKey As String, ByRef pstValue As MyCamera.MVCC_ENUMVALUE) , 以 及
MV_CC_SetEnumValue_NET(ByVal strKey As String, ByVal nValue As UInteger)。
在 SDK 中,类似此类 Set 或 Get + 数据类型 + Value 的接口函数成为万能接口函数,
其作用为获取或设置相机任意属性值。万能接口的第一个参数为属性名称,为一个 string 型
字符串,相机属性名称可以通过查找 MvCameraNode.xls 文档查询。第二个参数为获取到的
或者设置的属性值。
3.2.3 IO 操作
在本节示例程序中,主要用到的属性节点为”LineSelector”以及”LineMode”,其属性类型
均为 Enumeration 类型。调用万能接口即可实现对其属性的操作。
获取操作如下:
Dim stLineSelector As MyCamera.MVCC_ENUMVALUE
= New MyCamera.MVCC_ENUMVALUE
 nRet = dev.MV_CC_GetEnumValue_NET("LineSelector", stLineSelector)
Dim stLineMode As MyCamera.MVCC_ENUMVALUE
= New MyCamera.MVCC_ENUMVALUE
 nRet = dev.MV_CC_GetEnumValue_NET("LineMode", stLineMode)
设置操作如下:
nRet = dev.MV_CC_GetEnumValue_NET("LineSelector ", stLineSelector)
nRet = dev.MV_CC_GetEnumValue_NET("LineMode", stLineMode)
三. ForceIpDemo 使用步骤和开发流程
4.1 Demo 软件使用步骤
4.1.1 界面总体
软件界面如下图所示。


界面主要分为两个模块:初始化模块和设置 IP 模块。
4.1.2 使用过程
首先,点击查找设备对网段内的设备进行枚举,软件自动选择列表中第一项。
然后,选择需要配置 IP 的设备。
在设置 IP 模块的提示信息中会提示本机网卡所在的网段并显示建议设置的 IP 范围。在
输入框中输入想要设置的 IP,点击设置。
4.2 Demo 软件开发步骤
设置 IP 调用 SDK 中 MV_GIGE_ForceIpEx_NET(ByVal nIP As UInteger, ByVal 
nSubNetMask As UInteger, ByVal nDefaultGateWay As UInteger)接口。
四.MultipleDemo 使用步骤及开发流程
5.1 Demo 软件使用步骤
5.1.1 界面总体
总览界面,软件界面主要包括三个控制模块(初始化、参数设置、采集图像),四块图像显
示区域以及帧数信息显示区域。


5.1.2 使用过程
打开软件,“在线设备数量”会自行枚举在线相机个数,在“使用设备个数”文本框内
填写需要打开的相机个数 n,单击“初始化相机”,默认以连续方式打开 n 台设备。


在“曝光”和“增益”中填写修改的参数,单击“设置参数”,即可依次修改 n 台设备
参数。
点击“开始采集”,左侧会显示预览图像。同时采集帧数和丢帧数会即时更新数据(1
秒更新一次)。此时若点击“保存图片”,会在当前 exe 目录下出现一个名称为 image1-image4
的 bmp 文件,分别对应 1-4 台设备保存的图片。若希望结束,则点击“停止采集”,“关闭
设备”即可。


当出现异常和错误时,会以弹窗的形式提示。有一些操作成功时也会有提示。
5.2 Demo 软件开发步骤 
5.2.1 多相机的实现
MultipleDemo 在 BasicDemo 基础上,在类中添加 m_bEnabled 数组的成员变量,表示四
台相机的使能,初始化时由“使用数量”和是否成功打开决定 m_bEnabled 为 True 或者 False。
后面的基本操作均由 m_bEnabled 判断是否需要对相应的相机进行操作。
5.2.2 总帧数、丢帧数、保存图片
总帧数在回调函数中计数(成员变量)。回调函数中同时完成保存图片的功能,判断是
否点击保存图片的按钮确定是否保存当前帧为图片,保存完成后,修改相应标志位以免下次
取 流 重 复 保 存 图 片 。 丢 帧 数 由 调 用 MV_GIGE_GetNetTransInfo_NET(ByRef pstInfo As 
MyCamera.MV_NETTRANS_INFO)接口获取。总帧数和丢帧数的更新周期为 1 秒,设置定时器,1 秒
获取一次丢帧数,然后再更新总帧数和丢帧数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

机器视觉小小测试员

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

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

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

打赏作者

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

抵扣说明:

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

余额充值