[ C# Cognex ] 씨샾 코그넥스 - GigE 카메라 연결 및 프레임 출력

[ C# Cognex ] 씨샾 코그넥스 - GigE 카메라 연결 및 프레임 출력



1. 이더넷 설정

    - 이더넷 IP 설정
    - GigE 카메라 IP 설정
    - 169.254.231.xxx (앞 3 자리 동일)



2. Windows Forms 앱 

    - 새 프로젝트 생성



3. 솔루션 탐색기

    - 프로젝트 [우클릭]
    - 속성 [클릭]



4. 프로젝트 속성

    - 빌드 [클릭]
    - 플랫폼 대상 [선택]
    - x64 [선택]
    - Release 사용 유저는 Release 도 x64 로 변경




5. 도구 상자 CogDisplay

    - CogDisplay [선택]
    - Form1 [추가]



6. 도구 상자 Button

    - Button [선택]
    - Form1 [추가]



7. Form1 속성 이벤트

    - Form1_Load 추가



8. button1 속성 이벤트

    - button1_Click 추가



9. Form1.cs

    - 코드 보기

==========
using System;
using System.Windows.Forms;

// 1 - [ Cognex.VisionPro ] Using 추가
using Cognex.VisionPro;

namespace CogGigEConnection
{
    public partial class Form1 : Form
    {
        // 2 - ICogAcqFifo 생성
        private ICogAcqFifo _icogAcqFifo = null;

        // 3 - 메모리 관리를 위한 인덱스 변수 생성
        private int _nMemoryManagement = 0;


        public static void ConfigureExposure(ICogAcqFifo acqFifo, double exposure)
        {
            // Aca Fifo의 Exposure Params 인터페이스에 대한 참조를 가져옵니다.
            ICogAcqExposure exposureParams = acqFifo.OwnedExposureParams;

            // 항상 "소유" 속성이 지원되는지 확인합니다. (사용 전)

            // 노출 지원을 확인
            if (exposureParams != null)
            {
                // 노출 시간 설정
                exposureParams.Exposure = exposure;
                // 카메라에 속성 적용
                acqFifo.Prepare();
            }
        }


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // 4 - 프레임 그래버 생성
            ICogFrameGrabber iCogFrameGrabber = null;

            try
            {
                // 5 - 연결된 프레임 그래버들 검색
                CogFrameGrabbers mFrameGrabbers = new CogFrameGrabbers();
                if (mFrameGrabbers.Count < 1)
                    MessageBox.Show("No frame grabbers found");

                // 6 - 프레임 그래버가 두 개 이상 있더라도 첫 번째 프레임 그래버를 선택
                iCogFrameGrabber = mFrameGrabbers[0];

                // 7 - 선택한 비디오 형식으로 acq fifo를 만듬
                _icogAcqFifo = iCogFrameGrabber.CreateAcqFifo("Generic GigEVision (Mono)", CogAcqFifoPixelFormatConstants.Format8Grey, 0, true);

                // 8 - 노출 시간 설정 함수 만들기
                ConfigureExposure(_icogAcqFifo, 50);

                // 9 - 프레임 그래버의 GigEAccess 인터페이스에 대한 참조를 가져옵니다.
                ICogGigEAccess gigEAccess = iCogFrameGrabber.OwnedGigEAccess;

                // 10 - GigE 액세스 지원을 확인합니다.
                if (gigEAccess == null)
                    return;  // GigE 지원 없으면 종료
            }
            catch (Exception ex)
            {
                MessageBox.Show("No camera is connected " + ex.Message);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 11 - 획득 이미지 창에 올리기
            cogDisplay1.Image = _icogAcqFifo.Acquire(out int nTriggerNumber);

            // 12 - 메모리 과부하를 막기 위해 가비지 컬렉션 수행
            _nMemoryManagement++;
            if (_nMemoryManagement > 4)
            {
                GC.Collect();
                _nMemoryManagement = 0;
            }
        }
    }
}
==========


10. 결과 출력

    - button1 [클릭]





댓글