Example #1
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //수정 :
        //목적 : StartSingleGrab
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public override bool HLStartSingleGrab()
        {
            bool bReturn = false;

            do
            {
                if (null != m_objCallback)
                {
                    if (0 == m_lstImageData.Count)
                    {
                        break;
                    }
                    CImageData objImageData = m_lstImageData[m_iImageIndex].Clone() as CImageData;
                    objImageData.iImageWidth = objImageData.bitmapImage.Width;
                    objImageData.iImageWidth = objImageData.bitmapImage.Height;

                    m_objCallback(( CImageData )objImageData.Clone());
                }
                m_iImageIndex++;

                if (m_iImageIndex >= m_lstImageData.Count)
                {
                    m_iImageIndex = 0;
                }

                bReturn = true;
            } while(false);

            return(bReturn);
        }
Example #2
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //수정 :
        //목적 :
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void OnImageReadyEventCallback()
        {
            try {
                CDeviceCameraImageProviderBasler.Image objImage = null;// m_objImageProvider.GetCurrentImage();

                if (null != objImage)
                {
                    if (BitmapFactory.IsCompatible(m_objBitImage, objImage.Width, objImage.Height, objImage.Color))
                    {
                    }
                    else
                    {
                        // 비트맵으로 호환 가능한 경우 비트맵 이미지 생성
                        BitmapFactory.CreateBitmap(out m_objBitImage, objImage.Width, objImage.Height, false);
                    }

                    BitmapFactory.UpdateBitmap(m_objBitImage, objImage.Buffer, objImage.Width, objImage.Height, objImage.Color);

                    // 멀티그랩에서 사용될 인덱스
                    // 하이브 소스코드를 참고함
                    if (m_iMultiGrabIndex >= m_iMaxCountMultiGrab)
                    {
                        m_iMultiGrabIndex = 0;
                    }

                    if (null != m_objCallback)
                    {
                        CImageData objData = new CImageData();
                        objData.bGrabComplete        = true;
                        objData.bitmapImage          = m_objBitImage;// ( Bitmap )m_objBitImage.Clone();
                        objData.iImageWidth          = m_objBitImage.Width;
                        objData.iImageHeight         = m_objBitImage.Height;
                        objData.iMultiGrabImageIndex = m_iMultiGrabIndex;
                        m_objCallback(objData);
                    }

                    iGCCollectCount++;

                    if (4 < iGCCollectCount)
                    {
                        GC.Collect();
                        iGCCollectCount = 0;
                    }
                }
            }
            catch (System.Exception ex) {
                if (null != m_objCallbackTraceMessage)
                {
                    m_objCallbackTraceMessage(ex.Message + "->" + ex.StackTrace);
                }
            }
        }
            public object Clone()
            {
                CImageData objImageData = new CImageData();

                objImageData.bGrabComplete        = bGrabComplete;
                objImageData.bitmapImage          = ( Bitmap )bitmapImage.Clone();
                objImageData.iImageWidth          = iImageWidth;
                objImageData.iImageHeight         = iImageHeight;
                objImageData.iMultiGrabImageIndex = iMultiGrabImageIndex;
                objImageData.objCameraData3D      = objCameraData3D;

                return(objImageData);
            }
Example #4
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : 이미지로딩 검사
        //설명 :
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public override bool HLSetImageFile(string strPath)
        {
            bool bReturn = false;

            do
            {
                var pDocument = DeepSight.CDocument.GetDocument;

                try {
                    m_lstImageData.Clear();
                    m_iImageIndex = 0;
                    // 프로젝트 bin 폴더
                    // 수정 - 타입 & 카메라별 시뮬레이션 이미지 폴더 따로 관리
                    string strImagePath = strPath;
                    // 폴더 내 파일 목록 불러오기
                    string[] arFileNames = System.IO.Directory.GetFiles(strImagePath + "\\");
                    // 폴더 내의 파일 수만큼 루프
                    for (int iLoopCount = 0; iLoopCount < arFileNames.Length; iLoopCount++)
                    {
                        if (-1 != arFileNames[iLoopCount].IndexOf("Origin_VIDI"))
                        {
                            CImageData objImageData = new CImageData();
                            objImageData.bitmapImage   = new Bitmap(arFileNames[iLoopCount]);
                            objImageData.bGrabComplete = true;
                            m_lstImageData.Add(objImageData);
                        }
                    }

                    arFileNames = System.IO.Directory.GetFiles(strImagePath + "\\");
                    // 폴더 내의 파일 수만큼 루프
                    for (int iLoopCount = 0; iLoopCount < arFileNames.Length; iLoopCount++)
                    {
                        if (-1 != arFileNames[iLoopCount].IndexOf("Origin_Measure"))
                        {
                            CImageData objImageData = new CImageData();
                            objImageData.bitmapImage   = new Bitmap(arFileNames[iLoopCount]);
                            objImageData.bGrabComplete = true;
                            m_lstImageData.Add(objImageData);
                        }
                    }
                } catch (System.Exception ex) {
                    System.Diagnostics.Trace.WriteLine(ex.ToString());
                    break;
                }
                bReturn = true;
            } while(false);

            return(bReturn);
        }
Example #5
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //수정 :
        //목적 : 특정 폴더 이미지를 로딩하여 가상 모드에서 사용
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private bool InitializeImage()
        {
            bool bReturn = false;

            do
            {
                var pDocument = DeepSight.CDocument.GetDocument;

                try {
                    // 프로젝트 bin 폴더
                    // 수정 - 타입 & 카메라별 시뮬레이션 이미지 폴더 따로 관리
                    string strImagePath = string.Format(@"{0}\{1}\{2}\{3}{4:D}",
                                                        System.IO.Directory.GetCurrentDirectory(),
                                                        DeepSight.CDefine.DEF_SIMULATION_IMAGE_PATH,
                                                        pDocument.m_objConfig.GetSystemParameter().eMachineType.ToString(),
                                                        DeepSight.CDefine.DEF_SIMULATION_IMAGE_PATH, m_iCameraIndex);
                    // 폴더 내 파일 목록 불러오기
                    string[] arFileNames = System.IO.Directory.GetFiles(strImagePath + "\\");
                    // 폴더 내의 파일 수만큼 루프
                    for (int iLoopCount = 0; iLoopCount < arFileNames.Length; iLoopCount++)
                    {
                        CImageData objImageData = new CImageData();
                        objImageData.bitmapImage   = new Bitmap(arFileNames[iLoopCount]);
                        objImageData.bGrabComplete = true;
                        m_lstImageData.Add(objImageData);
                    }
                }
                catch (System.Exception ex) {
                    if (null != m_objCallbackTraceMessage)
                    {
                        m_objCallbackTraceMessage(ex.Message + "->" + ex.StackTrace);
                    }
                    break;
                }

                bReturn = true;
            } while(false);

            return(bReturn);
        }
Example #6
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //수정 :
        //목적 : StartSingleGrab
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public override bool HLStartMultiGrab()
        {
            bool bReturn = false;

            do
            {
                if (null != m_objCallback)
                {
                    if (0 == m_lstImageData.Count)
                    {
                        break;
                    }

                    for (int iLoopCount = 0; iLoopCount < DEF_COUNT_MULTI_GRAB; iLoopCount++)
                    {
                        CImageData objImageData = m_lstImageData[m_iImageIndex].Clone() as CImageData;
                        objImageData.iImageWidth          = objImageData.bitmapImage.Width;
                        objImageData.iImageHeight         = objImageData.bitmapImage.Height;
                        objImageData.iMultiGrabImageIndex = iLoopCount;
                        m_objCallback(( CImageData )objImageData.Clone());

                        m_iImageIndex++;

                        if (m_iImageIndex >= m_lstImageData.Count)
                        {
                            m_iImageIndex = 0;
                        }
                    }
                }


                bReturn = true;
            } while (false);

            return(bReturn);
        }
Example #7
0
        public void ReceiveData(KObject data)
        {
            // 데이터 들어오면 카메라 시스템 정지
            var pDocument = DeepSight.CDocument.GetDocument;

            //if( CDefine.enumTrigger.TRIGGER_OFF == pDocument.GetTrigger( ( int )CDefine.enumCamera.CAMERA_1 ) ) return;
            m_objCameraSystem.Stop();
            CImageData3D objImageData3D = new CImageData3D();
            // 일단 해상도를 임의로 지정하자

            GoDataSet dataSet = ( GoDataSet )data;

            pDocument.SetUpdateLog(CDefine.enumLogType.LOG_PROCESS, "GOCATOR RECEIVE DATA : " + dataSet.Count.ToString());
            for (UInt32 i = 0; i < dataSet.Count; i++)
            {
                GoDataMsg dataObj = ( GoDataMsg )dataSet.Get(i);
                switch (dataObj.MessageType)
                {
                case GoDataMessageType.Stamp: {
                    GoStampMsg stampMsg = ( GoStampMsg )dataObj;
                    for (UInt32 j = 0; j < stampMsg.Count; j++)
                    {
                        GoStamp stamp = stampMsg.Get(j);
                        Console.WriteLine("Frame Index = {0}", stamp.FrameIndex);
                        Console.WriteLine("Time Stamp = {0}", stamp.Timestamp);
                        Console.WriteLine("Encoder Value = {0}", stamp.Encoder);
                    }
                }
                break;

                case GoDataMessageType.UniformSurface: {
                            #pragma warning disable CS0618 // 형식 또는 멤버는 사용되지 않습니다.
                    GoSurfaceMsg surfaceMsg = ( GoSurfaceMsg )dataObj;
                            #pragma warning restore CS0618 // 형식 또는 멤버는 사용되지 않습니다.

                    objImageData3D.iOffsetZ     = surfaceMsg.ZOffset;
                    objImageData3D.iResolutionX = surfaceMsg.XResolution;        // * DEF_3D_DATA_MULTIPLE;
                    objImageData3D.iResolutionY = surfaceMsg.YResolution;
                    objImageData3D.iResolutionZ = surfaceMsg.ZResolution;
                    int    lWidth        = objImageData3D.iWidth = ( int )surfaceMsg.Width;
                    int    lHeight       = objImageData3D.iHeight = ( int )surfaceMsg.Length;
                    int    bufferSize    = lWidth * lHeight;
                    IntPtr bufferPointer = surfaceMsg.Data;

                    Console.WriteLine("Whole Part Height Map received:");
                    Console.WriteLine(" Buffer width: {0}", lWidth);
                    Console.WriteLine(" Buffer Height: {0}", lHeight);

                    objImageData3D.objHeightDataOrigin = new short[bufferSize];

                    Marshal.Copy(bufferPointer, objImageData3D.objHeightDataOrigin, 0, objImageData3D.objHeightDataOrigin.Length);
                    // SetDataToCsv("d:\\test.csv", objImageData3D.objHeightDataOrigin);
                }
                break;

                case GoDataMessageType.SurfaceIntensity: {
                    GoSurfaceIntensityMsg surfaceMsg = ( GoSurfaceIntensityMsg )dataObj;
                    long   width          = surfaceMsg.Width;
                    long   length         = surfaceMsg.Length;
                    long   bufferSize     = width * length;
                    IntPtr bufferPointeri = surfaceMsg.Data;

                    Console.WriteLine("Whole Part Intensity Image received:");
                    Console.WriteLine(" Buffer width: {0}", width);
                    Console.WriteLine(" Buffer length: {0}", length);
                    objImageData3D.objIntensityDataOrigin = new byte[bufferSize];
                    Marshal.Copy(bufferPointeri, objImageData3D.objIntensityDataOrigin, 0, objImageData3D.objIntensityDataOrigin.Length);

//                             objImageData3D.objBitmapIntensity = CopyDataToBitmap( ( int )length, ( int )width, objImageData3D.objIntensityDataOrigin );
//                             objImageData3D.objBitmapIntensity.Save( "d:\\Intensity.bmp" );
                }
                break;

                default:
                    break;
                }
            }

            if (null != m_objCallback)
            {
                CImageData objData = new CImageData();
                objData.bGrabComplete   = true;
                objData.bitmapImage     = objImageData3D.objBitmapIntensity;
                objData.objCameraData3D = objImageData3D;
                m_objCallback(objData);
            }

            iGCCollectCount++;

            if (1 < iGCCollectCount)
            {
                GC.Collect();
                iGCCollectCount = 0;
            }
        }