赞
踩
简介
由于工作关系,本人最近使用到了海康的网口及USB3.0接口的工业相机。现将相关内容进行整理记录。
开发环境
64位VS2013 +C#
Halcon12
海康MVS3.0.0
引用海康相机动态库(MvCameraControl.Net.dll)
在VS项目文件中添加添加引用,如下图
引用MVS安装目录下MVS\Development\DotNet\MvCameraControl.Net.dll这个文件。
创建相机类
鼠标右键单击工程项目–添加–类,选择“类”,输入类的名称,例如Hikvision,点击右下角的“添加”。
在项目中使用海康相机时,为便于程序编写,可引入如下的命名空间:
using MvCamCtrl.NET;
创建需要用到的全局变量
public MyCamera myCamera;//相机对象
private MyCamera.MV_CC_DEVICE_INFO_LIST deviceList;//设备列表
private MyCamera.MV_CC_DEVICE_INFO deviceInfo;//设备对象
private string seriesStr;//接收相机序列号
private MyCamera.MVCC_INTVALUE stParam;//用于接收特定的参数
//为读取、保存图像创建的数组
UInt32 m_nBufSizeForDriver = 4096 * 3000;
byte[] m_pBufForDriver = new byte[4096 * 3000];
UInt32 m_nBufSizeForSaveImage = 4096 * 3000 * 3 + 3000;
byte[] m_pBufForSaveImage = new byte[4096 * 3000 * 3 + 3000];
创建相关函数
1.创建构造函数
//在构造函数中实例化设备列表对象
public Hikvision()
{
deviceList = new MyCamera.MV_CC_DEVICE_INFO_LIST();
}
2.创建改变相机IP的函数
//成功返回0失败返回-1 //调用函数时可以传入需要改变的目标IP,如过没有传入则将相机IP设置为其所连接的网卡地址+1或-1 public int changeIP(string IP = "") { try { //获取相机相关信息,例如相机所连接网卡的网址 IntPtr buffer = Marshal.UnsafeAddrOfPinnedArrayElement(deviceInfo.SpecialInfo.stGigEInfo, 0); MyCamera.MV_GIGE_DEVICE_INFO gigeInfo = (MyCamera.MV_GIGE_DEVICE_INFO)Marshal.PtrToStructure(buffer, typeof(MyCamera.MV_GIGE_DEVICE_INFO)); IPAddress cameraIPAddress; string tempStr = ""; if (IP.Trim().Equals("") || !(IPAddress.TryParse(IP, out cameraIPAddress))) { //当前网卡的IP地址 UInt32 nNetIp1 = (gigeInfo.nNetExport & 0xFF000000) >> 24; UInt32 nNetIp2 = (gigeInfo.nNetExport & 0x00FF0000) >> 16; UInt32 nNetIp3 = (gigeInfo.nNetExport & 0x0000FF00) >> 8; UInt32 nNetIp4 = (gigeInfo.nNetExport & 0x000000FF); //根据网卡IP设定相机IP,如果网卡ip第四位小于252,则相机ip第四位+1,否则相机IP第四位-1 UInt32 cameraIp1 = nNetIp1; UInt32 cameraIp2 = nNetIp2; UInt32 cameraIp3 = nNetIp3; UInt32 cameraIp4 = nNetIp4; if (nNetIp4 < 252) { cameraIp4++; } else { cameraIp4--; } tempStr = cameraIp1 + "." + cameraIp2 + "." + cameraIp3 + "." + cameraIp4; } else {
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。