private void prepareCamera()
        {
            res = pCamera.getDataAccessMode(ref state, ref listint, ref intNumberofbuffer);
            ReturnError(res, "getDataAccessMode");

            /*
             * if (res != BGAPI.Result.OK)
             * {
             * MessageBox.Show(string.Format("getDataAccessMode returned with errorcode {0}\n", res));
             * }*/

            for (i = 0; i < listint.length; i++)
            {
                //MessageBox.Show(string.Format("{0} select DataAccessMode {1}\n", i, ((BGAPI_DataAccessMode)listint.array[i]).ToString()));
                //externppSystem[i].releaseCamera( ref externppCamera );
            }

            do
            {
                inputVal = 0;
                //inputVal = Convert.ToInt32(Console.ReadLine(), 10);
            }while (inputVal < 0 || inputVal > listint.length);
            if (((BGAPI_DataAccessMode)listint.array[inputVal]) == BGAPI_DataAccessMode.BGAPI_DATAACCESSMODE_NORMALEXTERN ||
                ((BGAPI_DataAccessMode)listint.array[inputVal]) == BGAPI_DataAccessMode.BGAPI_DATAACCESSMODE_QUEUEDEXTERN)
            {
                MessageBox.Show(string.Format("DataAccessMode {0} is not supported by this example!\n", ((BGAPI_DataAccessMode)listint.array[inputVal]).ToString()));
                res = release_systems(system_count, ref ppSystem);
                ReturnError(res, "release_systems");

                /*
                 * if (res != BGAPI.Result.OK)
                 * {
                 * MessageBox.Show(string.Format("release_systems Errorcode: {0}\n", res));
                 * }
                 */
                return;
            }
            res = pCamera.setDataAccessMode((BGAPI_DataAccessMode)listint.array[inputVal], intNumberofbuffer.current);
            ReturnError(res, "setDataAccessMode");

            /*
             * if (res != BGAPI.Result.OK)
             * {
             * MessageBox.Show(string.Format("setDataAccessMode returned with errorcode {0}\n", res));
             * }
             */

            res = pCamera.getDataAccessMode(ref state, ref listint, ref intNumberofbuffer);
            ReturnError(res, "getDataAccessMode");

            /*
             * if (res != BGAPI.Result.OK)
             * {
             * MessageBox.Show(string.Format("getDataAccessMode returned with errorcode {0}\n", res));
             * }
             */
            if ((((BGAPI_DataAccessMode)listint.array[listint.current]) == BGAPI_DataAccessMode.BGAPI_DATAACCESSMODE_NORMALINTERN) || (((BGAPI_DataAccessMode)listint.array[listint.current]) == BGAPI_DataAccessMode.BGAPI_DATAACCESSMODE_NORMALEXTERN))
            {
                ppImage = new BGAPI.Image[1];

                //create image object
                res = BGAPI.EntryPoint.createImage(ref ppImage[image_count]);
                ReturnError(res, "createImage for Image 0");

                /*
                 * if (res != BGAPI.Result.OK)
                 * {
                 * MessageBox.Show(string.Format("createImage for Image 0 returned with errorcode {0}\n", res));
                 * }*/
                image_count++;

                if (((BGAPI_DataAccessMode)listint.array[listint.current]) == BGAPI_DataAccessMode.BGAPI_DATAACCESSMODE_NORMALEXTERN)
                {
                    //not yet supported
                }

                res = pCamera.setImage(ref ppImage[image_count - 1]);
                ReturnError(res, "setImage for Image 0");

                /*
                 * if (res != BGAPI.Result.OK)
                 * {
                 * MessageBox.Show(string.Format("setImage for Image 0 returned with errorcode {1}\n", res));
                 * }*/
            }
            if ((((BGAPI_DataAccessMode)listint.array[listint.current]) == BGAPI_DataAccessMode.BGAPI_DATAACCESSMODE_QUEUEDINTERN) || (((BGAPI_DataAccessMode)listint.array[listint.current]) == BGAPI_DataAccessMode.BGAPI_DATAACCESSMODE_QUEUEDEXTERN))
            {
                ppImage = new BGAPI.Image[intNumberofbuffer.current];

                //create image objects
                for (i = 0; i < intNumberofbuffer.current; i++)
                {
                    res = BGAPI.EntryPoint.createImage(ref ppImage[image_count]);
                    ReturnError(res, "createImage for Image");

                    /*
                     * if (res != BGAPI.Result.OK)
                     * {
                     * MessageBox.Show(string.Format("createImage for Image {0} returned with errorcode {1}\n", i, res));
                     * break;
                     * }
                     * */
                    image_count++;

                    if (((BGAPI_DataAccessMode)listint.array[listint.current]) == BGAPI_DataAccessMode.BGAPI_DATAACCESSMODE_QUEUEDEXTERN)
                    {
                        //not yet supported
                    }

                    res = pCamera.setImage(ref ppImage[image_count - 1]);
                    ReturnError(res, "setImage for Image");

                    /*
                     * if (res != BGAPI.Result.OK)
                     * {
                     * MessageBox.Show(string.Format("setImage for Image {0} returned with errorcode {1}\n", i, res));
                     * break;
                     * }*/
                }
            }

            //--------------------------------------

            //this command will set a gainvalue
            res = pCamera.setGain(gainvalue);
            ReturnError(res, "setGain");

            /*
             *
             * if (res != BGAPI.Result.OK)
             * {
             * System.Console.Write("setGain Errorcode: {0}\n", res);
             * }*/

            //this command will set an exposurevalue
            res = pCamera.setExposure(exposurevalue);
            ReturnError(res, "setExposure");

            /*
             * if (res != BGAPI.Result.OK)
             * {
             * System.Console.Write("setExposure Errorcode: {0}\n", res);
             * }
             * */


            //--------------------------------------
            //this command will get the current imageformat
            res = pCamera.getImageFormat(ref state, ref listint);
            ReturnError(res, "getImageFormat");

            /*
             * if (res != BGAPI.Result.OK)
             * {
             * System.Console.Write("getImageFormat Errorcode: {0}\n", res);
             * }
             */

            //this command will set an imageformat
            res = pCamera.setImageFormat(formatindex);
            ReturnError(res, "setImageFormat");

            /*
             * if (res != BGAPI.Result.OK)
             * {
             * System.Console.Write("setImageFormat Errorcode: {0}\n", res);
             * }
             */
            res = pCamera.getPixelFormat(7, ref FeatureState, ref TypeListINT);
            res = pCamera.setPixelFormat(TypeListINT.array[0]);
            //res = formatlist.array[1];

            res = pCamera.registerNotifyCallback(pCamera, imgcallback);
            if (res != BGAPI.Result.OK)
            {
                MessageBox.Show(string.Format("Error {0} while register NotifyCallback.\n", res));
            }

            res = pCamera.setStart(true);
            ReturnError(res, "setStart");

            /*
             * if (res != BGAPI.Result.OK)
             * {
             * MessageBox.Show(string.Format("setStart returned with errorcode {0}\n", res));
             * }
             */
        }
Пример #2
0
        /// <summary>
        /// Camera 초기화 진행함
        /// </summary>
        /// <param 카메라 번호="iCamNo"></param>
        /// <param 상위 GigE System="pSystem"></param>
        /// <returns></returns>
        public int Initialize(int iCamNo, BGAPI.System pSystem)
        {
            m_iCamID = iCamNo;
            // System 을 받아옴.
            m_CamSystem = pSystem;

            m_CamDeviceInfo = new BGAPI.BGAPIX_CameraInfo();
            m_CamImage      = new BGAPI.Image();

            // create camera
            m_iResult = m_CamSystem.createCamera(iCamNo, ref m_Camera);
            if (m_iResult != BGAPI.Result.OK)
            {
                //"System create camera failed!"
                return(GenerateErrorCode(ERR_VISION_CAMERA_CREATE_FAIL));
            }

            // get camera device information
            m_iResult = m_Camera.getDeviceInformation(ref m_CamState, ref m_CamDeviceInfo);
            m_cCameraData.m_CamDeviceInfo = m_CamDeviceInfo;
            if (m_iResult != BGAPI.Result.OK)
            {   // "Camera get Device Information failed!"
                return(GenerateErrorCode(ERR_VISION_CAMERA_GET_INFO_FAIL));
            }

            // get camera Image information
            m_iResult = m_Camera.getImageFormatDescription(1, ref m_CamImageInfo);

            if (m_iResult != BGAPI.Result.OK)
            {   // "Camera get Device Information failed!"
                return(GenerateErrorCode(ERR_VISION_CAMERA_GET_INFO_FAIL));
            }
            else
            {
                // Camera Pixel Size을 적용한다.
                m_CamPixelSize.Width  = (int)(m_CamImageInfo.iScaleRoiX * m_CamImageInfo.iSizeX);
                m_CamPixelSize.Height = (int)(m_CamImageInfo.iScaleRoiY * m_CamImageInfo.iSizeY);
            }

            // camera open
            m_iResult = m_Camera.open();
            if (m_iResult != BGAPI.Result.OK)
            {   //"Camera open failed!"
                return(GenerateErrorCode(ERR_VISION_CAMERA_CONNECT_FAIL));
            }

            // image create
            m_iResult = BGAPI.EntryPoint.createImage(ref m_CamImage);
            if (m_iResult != BGAPI.Result.OK)
            {   // Create Image failed
                return(GenerateErrorCode(ERR_VISION_CAMERA_CREATE_IMAGE_FAIL));
            }

            // camera & image connect
            m_iResult = m_Camera.setImage(ref m_CamImage);
            if (m_iResult != BGAPI.Result.OK)
            {   // Camera set Image failed!
                return(GenerateErrorCode(ERR_VISION_CAMERA_GET_IMAGE_FAIL));
            }

            // System Init 결과 저장
            m_iResult = SUCCESS;

            return(SUCCESS);
        }