示例#1
0
 public ReconnectDemo()
 {
     InitializeComponent();
     DeviceListAcq();
     Control.CheckForIllegalCrossThreadCalls = false;
     pCallBackFunc = new MyCamera.cbExceptiondelegate(cbExceptiondelegate);
 }
示例#2
0
 public HikCamera()
 {
     try
     {
         Image                   = new HImage();
         ImageCallback           = new MyCamera.cbOutputExdelegate(ImageCallbackFunc);
         CameraReconnectCallback = new MyCamera.cbExceptiondelegate(ReconnectCallbackFunc);
     }
     catch (Exception e)
     {
         WriteErrorLog(e.ToString());
     }
 }
示例#3
0
 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);
        }
示例#5
0
        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();
        }