public ReconnectDemo() { InitializeComponent(); DeviceListAcq(); Control.CheckForIllegalCrossThreadCalls = false; pCallBackFunc = new MyCamera.cbExceptiondelegate(cbExceptiondelegate); }
public HikCamera() { try { Image = new HImage(); ImageCallback = new MyCamera.cbOutputExdelegate(ImageCallbackFunc); CameraReconnectCallback = new MyCamera.cbExceptiondelegate(ReconnectCallbackFunc); } catch (Exception e) { WriteErrorLog(e.ToString()); } }
public HikCamera(IVisionCameraInfo info) : base(info) { try { Image = new HImage(); camera = new MyCamera(); ImageCallback = new MyCamera.cbOutputExdelegate(ImageCallbackFunc); CameraReconnectCallback = new MyCamera.cbExceptiondelegate(ReconnectCallbackFunc); if (camera == null) { WriteErrorLog("It can not recognite the camera of " + UserID); } } catch (Exception e) { WriteErrorLog(e.ToString()); } }
public int OpenCamera() { getonecamera = new MyCamera(); MyCamera.MV_CC_DEVICE_INFO_LIST stDevList = new MyCamera.MV_CC_DEVICE_INFO_LIST(); nRet = MyCamera.MV_CC_EnumDevices_NET(MyCamera.MV_GIGE_DEVICE, ref stDevList); if (MyCamera.MV_OK != nRet) { Console.WriteLine("Can not find device", nRet); return(0); } Console.WriteLine("Enum device count : " + Convert.ToString(stDevList.nDeviceNum)); if (0 == stDevList.nDeviceNum) { return(0); } MyCamera.MV_CC_DEVICE_INFO stDevInfo; // 通用设备信息 // ch:打印设备信息 en:Print device info for (Int32 i = 0; i < stDevList.nDeviceNum; i++) { //赋值结构体的一种方式 stDevInfo = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(stDevList.pDeviceInfo[i], typeof(MyCamera.MV_CC_DEVICE_INFO)); //judge camera is gige if (MyCamera.MV_GIGE_DEVICE == stDevInfo.nTLayerType) { MyCamera.MV_GIGE_DEVICE_INFO stGigEDeviceInfo = (MyCamera.MV_GIGE_DEVICE_INFO)MyCamera.ByteToStruct(stDevInfo.SpecialInfo.stGigEInfo, typeof(MyCamera.MV_GIGE_DEVICE_INFO)); // ch:显示IP | en:Display IP UInt32 nIp1 = (stGigEDeviceInfo.nCurrentIp & 0xFF000000) >> 24; UInt32 nIp2 = (stGigEDeviceInfo.nCurrentIp & 0x00FF0000) >> 16; UInt32 nIp3 = (stGigEDeviceInfo.nCurrentIp & 0x0000FF00) >> 8; UInt32 nIp4 = (stGigEDeviceInfo.nCurrentIp & 0x000000FF); string tempCameraIp = nIp1.ToString() + "." + nIp2.ToString() + "." + nIp3.ToString() + "." + nIp4.ToString(); if (stGigEDeviceInfo.chUserDefinedName == this.Name || tempCameraIp == this.Ip) { nRet = getonecamera.MV_CC_CreateDevice_NET(ref stDevInfo); if (MyCamera.MV_OK != nRet) { Console.WriteLine("Create device failed:{0:x8}", nRet); return(0); } // ch:打开设备 | en:Open device nRet = getonecamera.MV_CC_OpenDevice_NET(); if (MyCamera.MV_OK != nRet) { Console.WriteLine("Open device failed:{0:x8}", nRet); return(0); } //注册掉线事件 MyCamera.cbExceptiondelegate ExCallback; ExCallback = new MyCamera.cbExceptiondelegate(CallOffLineFunction); nRet = getonecamera.MV_CC_RegisterExceptionCallBack_NET(ExCallback, IntPtr.Zero); if (MyCamera.MV_OK != nRet) { Console.WriteLine("Register Exception CallBack failed{0:x8}", nRet); return(0); } // ch:探测网络最佳包大小(只对GigE相机有效) | en:Detection network optimal package size(It only works for the GigE camera) if (stDevInfo.nTLayerType == MyCamera.MV_GIGE_DEVICE) { int nPacketSize = getonecamera.MV_CC_GetOptimalPacketSize_NET(); if (nPacketSize > 0) { nRet = getonecamera.MV_CC_SetIntValue_NET("GevSCPSPacketSize", (uint)nPacketSize); if (nRet != MyCamera.MV_OK) { Console.WriteLine("Warning: Set Packet Size failed {0:x8}", nRet); } } else { Console.WriteLine("Warning: Get Packet Size failed {0:x8}", nPacketSize); } } } } } return(1); }
static void Main(string[] args) { int nRet = MyCamera.MV_OK; MyCamera device = new MyCamera(); bool bDevConnected = false; //whether a device is conncected do { // Enum device MyCamera.MV_CC_DEVICE_INFO_LIST stDevList = new MyCamera.MV_CC_DEVICE_INFO_LIST(); nRet = MyCamera.MV_CC_EnumDevices_NET(MyCamera.MV_CAMERALINK_DEVICE, ref stDevList); if (MyCamera.MV_OK != nRet) { Console.WriteLine("Enum device failed:{0:x8}", nRet); break; } Console.WriteLine("Enum device count : " + Convert.ToString(stDevList.nDeviceNum)); if (0 == stDevList.nDeviceNum) { break; } MyCamera.MV_CC_DEVICE_INFO stDevInfo; // Print device info for (Int32 i = 0; i < stDevList.nDeviceNum; i++) { stDevInfo = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(stDevList.pDeviceInfo[i], typeof(MyCamera.MV_CC_DEVICE_INFO)); if (MyCamera.MV_CAMERALINK_DEVICE == stDevInfo.nTLayerType) { MyCamera.MV_CamL_DEV_INFO stCamLDeviceInfo = (MyCamera.MV_CamL_DEV_INFO)MyCamera.ByteToStruct(stDevInfo.SpecialInfo.stCamLInfo, typeof(MyCamera.MV_CamL_DEV_INFO)); Console.WriteLine(i.ToString() + ": [CamL] Serial Number : " + stCamLDeviceInfo.chSerialNumber); Console.WriteLine("PortID : " + stCamLDeviceInfo.chPortID); Console.WriteLine("chManufacturerName : " + stCamLDeviceInfo.chManufacturerName); } else { Console.WriteLine("Unknown Error."); } } Console.WriteLine("Enum finish."); Int32 nDevIndex = 0; Console.Write("\nPlease input index (0 -- {0:d}) : ", stDevList.nDeviceNum - 1); try { nDevIndex = Convert.ToInt32(Console.ReadLine()); } catch { Console.Write("Invalid Input!\n"); break; } if (nDevIndex > stDevList.nDeviceNum - 1 || nDevIndex < 0) { Console.Write("Input Error!\n"); break; } stDevInfo = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(stDevList.pDeviceInfo[nDevIndex], typeof(MyCamera.MV_CC_DEVICE_INFO)); // Create device nRet = device.MV_CC_CreateDevice_NET(ref stDevInfo); if (MyCamera.MV_OK != nRet) { Console.WriteLine("Create device failed:{0:x8}", nRet); break; } // Open device nRet = device.MV_CC_OpenDevice_NET(); if (MyCamera.MV_OK != nRet) { Console.WriteLine("Open device failed:{0:x8}", nRet); break; } Console.WriteLine("Open finish."); bDevConnected = true; // Register Exception Callback pCallBackFunc = new MyCamera.cbExceptiondelegate(cbExceptiondelegate); nRet = device.MV_CC_RegisterExceptionCallBack_NET(pCallBackFunc, IntPtr.Zero); if (MyCamera.MV_OK != nRet) { Console.WriteLine("Register expection callback failed:{0:x8}", nRet); break; } GC.KeepAlive(pCallBackFunc); /*******************characteristic interfaces for CameraLink device*********************/ // Get supported bauderates of the combined device and host interface uint nBaudrateAblity = 0; nRet = device.MV_CAML_GetSupportBauderates_NET(ref nBaudrateAblity); if (MyCamera.MV_OK != nRet) { Console.WriteLine("Get supported bauderate fail:{0:x8}", nRet); break; } Console.WriteLine("Current device supported bauderate:{0:x8}", nBaudrateAblity); // Set device bauderate nRet = device.MV_CAML_SetDeviceBauderate_NET((uint)MyCamera.MV_CAML_BAUDRATE_115200); if (MyCamera.MV_OK != nRet) { Console.WriteLine("Set device bauderate fail:{0:x8}", nRet); break; } // Get the current device bauderate uint nCurrentBaudrate = 0; nRet = device.MV_CAML_GetDeviceBauderate_NET(ref nCurrentBaudrate); if (MyCamera.MV_OK != nRet) { Console.WriteLine("Get device bauderate fail:{0:x8}", nRet); break; } Console.WriteLine("Current device bauderate:{0:x8}", nCurrentBaudrate); /****************************properties configuration**********************************/ // Get the value of various feature nodes nRet = GetParameters(ref device); if (MyCamera.MV_OK != nRet) { Console.WriteLine("GetParameters failed:{0:x8}", nRet); break; } // Set the value of various feature nodes nRet = SetParameters(ref device); if (MyCamera.MV_OK != nRet) { Console.WriteLine("SetParameters failed:{0:x8}", nRet); break; } // Close device nRet = device.MV_CC_CloseDevice_NET(); if (MyCamera.MV_OK != nRet) { Console.WriteLine("Close device failed{0:x8}", nRet); break; } bDevConnected = false; // Destroy device nRet = device.MV_CC_DestroyDevice_NET(); if (MyCamera.MV_OK != nRet) { Console.WriteLine("Destroy device failed:{0:x8}", nRet); break; } Console.WriteLine("\n Close finish."); } while (false); if (MyCamera.MV_OK != nRet) { // Ensure that the device is closed if (bDevConnected) { device.MV_CC_CloseDevice_NET(); bDevConnected = false; } // Destroy device device.MV_CC_DestroyDevice_NET(); } Console.WriteLine("Press enter to exit"); Console.ReadKey(); }