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)); * } */ }
/// <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); }