赞
踩
最近做项目需要对海康相机进行二次开发,现将所学进行整理。
开发环境 VS2012+C#(32位) Halcon12
引用动态链接库
引用Halcon动态链接库(halcondotnet.dll)
引用海康相机动态链接库(MvCameraControl.Net.dll)这个文件在MVS安装目录下MVS\Development\DotNet中,如果你是32位的开发环境就选择win32文件夹下的,如果是64位就选择win64文件夹下的
创建相机类
先在创建的类中编写方法,之后实例化相机类,调用类中的方法。
鼠标右键单击工程项目–添加–类,选择“类”,输入类的名称,例如Hikvision,点击右下角的“添加”。
首先,要引入的命名空间:using HalconDotNet; using MvCamCtrl.NET;
其次,需要用到的全部变量:
- private MyCamera m_pMyCamera;
- MyCamera.MV_CC_DEVICE_INFO_LIST m_pDeviceList;//设备列表
- private MyCamera.MVCC_INTVALUE stParam;//用于接收特定的参数
- //为读取、保存图像创建的数组
- UInt32 m_nBufSizeForDriver = 3072 * 2048 * 3;
- byte[] m_pBufForDriver = new byte[3072 * 2048 * 3];
- UInt32 m_nBufSizeForSaveImage = 3072 * 2048 * 3 * 3 + 2048;
- byte[] m_pBufForSaveImage = new byte[3072 * 2048 * 3 * 3 + 2048];
- //要转成的Halcon图像
- HImage image = new HImage();
(1) 查找设备列表
- //查找设备
- public void DeviceListAcq()
- {
- int nRet;
- // ch:创建设备列表 en:Create Device List
- System.GC.Collect();
- cbDeviceList.Items.Clear();
- nRet = MyCamera.MV_CC_EnumDevices_NET(MyCamera.MV_GIGE_DEVICE | MyCamera.MV_USB_DEVICE, ref m_pDeviceList);
- if (0 != nRet)
- {
- MessageBox.Show("查找设备失败!");
- return;
- }
-
- // ch:在窗体列表中显示设备名 | en:Display device name in the form list
- for (int i = 0; i < m_pDeviceList.nDeviceNum; i++)
- {
- MyCamera.MV_CC_DEVICE_INFO device = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(m_pDeviceList.pDeviceInfo[i], typeof(MyCamera.MV_CC_DEVICE_INFO));
- if (device.nTLayerType == MyCamera.MV_GIGE_DEVICE)
- {
- IntPtr buffer = Marshal.UnsafeAddrOfPinnedArrayElement(device.SpecialInfo.stGigEInfo, 0);

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。