프로젝트/주차관리시스템

PVS :: [MCAM] 카메라 가운데 오게 하기

appHunter 2009. 5. 7. 10:26
글을 다 날려서 다시 적는다. !!  (2009-05-06에 날림)
2007/06/19 16:53  원본보기



MCAM 을 캡쳐하기 전에 정확한 캡쳐위치를 찍기 위해 카메라 위치 보정 ( 카메라 가운데 )을 한다.




참고 문서 및 파일 :
참고 링크 : 없음.



DLL 파일 불러오기

#include <windows.h>
HMODULE m_hMcamPT = LoadLibrary("McamAPPT.dll");

if ( m_hMcamPT == NULL)   
{
      return -1;
}


필요 변수 초기화

int serial_number = atoi(argv[1]);    // 시리얼 번호
int pan_value = atoi(argv[2]);        // 팬 크기 (오른쪽, 왼쪽)
int tilt_value = atoi(argv[3]);        // 틸트 크기 ( 위 , 아래 )



함수 포인터 변수 선언

DLL 에서 제공하는 함수를 사용하기 위해 함수 포인터 변수를 선언한다

UINT(* MCAMPT_GetCountCapDevs)();
BOOL(* MCAMPT_GetCapDevName)(UINT, LPTSTR, int *);
BOOL(* MCAMPT_OpenByIdx)(UINT);
BOOL(* MCAMPT_OpenBySerialPort)(UINT);
BOOL(* MCAMPT_CloseSerialPort)(void);
void(* MCAMPT_GoPTCenter)(void);

BOOL(* MCAMPT_GoPanLeft)(UINT);   // LEFT
BOOL(* MCAMPT_GoPanRight)(UINT);  // RIGHT
BOOL(* MCAMPT_GoTiltUp)(UINT);      // UP
BOOL(* MCAMPT_GoTiltDown)(UINT);   // Down


함수 포인터 변수 초기화

MCAMPT_GetCountCapDevs = (UINT (*)(void))GetProcAddress(m_hMcamPT,"MCAMPT_GetCountCapDevs");
MCAMPT_GetCapDevName = (BOOL (*)(UINT, LPTSTR, int *))GetProcAddress(m_hMcamPT,"MCAMPT_GetCapDevName");
MCAMPT_OpenByIdx = (BOOL (*)(UINT))GetProcAddress(m_hMcamPT,"MCAMPT_OpenByIdx");
       
MCAMPT_OpenBySerialPort = (BOOL (*)(UINT))GetProcAddress(m_hMcamPT,"MCAMPT_OpenBySerialPort");
MCAMPT_CloseSerialPort = (BOOL (*)(void))GetProcAddress(m_hMcamPT,"MCAMPT_CloseSerialPort");

MCAMPT_GoPTCenter = (void (*)(void))GetProcAddress(m_hMcamPT,"MCAMPT_GoPTCenter");
MCAMPT_GoPanLeft = (BOOL (*)(UINT))GetProcAddress(m_hMcamPT,"MCAMPT_GoPanLeft");
MCAMPT_GoPanRight = (BOOL (*)(UINT))GetProcAddress(m_hMcamPT,"MCAMPT_GoPanRight");
MCAMPT_GoTiltUp = (BOOL (*)(UINT))GetProcAddress(m_hMcamPT,"MCAMPT_GoTiltUp");
MCAMPT_GoTiltDown = (BOOL (*)(UINT))GetProcAddress(m_hMcamPT,"MCAMPT_GoTiltDown");
  


디바이스 갯수 알아내기


UINT unCaptureDeivces = MCAMPT_GetCountCapDevs();
if (unCaptureDeivces < 1 )
     return -1;



디바이스 이름 알아내기 ( 생략 )

  다른 장치가 연결 될 시 해당 이름과 비교한 후 연결 해야 함.

디바이스 연결

if( MCAMPT_OpenByIdx(1) != TRUE)
    return -1;


시리얼 연결 ( PanTilt 제어 )
if (MCAMPT_OpenBySerialPort(serial_number) != TRUE)
    return -1;



카메라 가운데 및 제어

MCAMPT_GoPTCenter();    //Pan/Tilt Center

Sleep(6000);               // Center 가 올려면 약 5초 정도 걸림.  그래서 Sleep을 줌.

if(pan_value > 0 )      // 오른쪽
    MCAMPT_GoPanRight(pan_value);
else
    MCAMPT_GoPanLeft(-pan_value);

if(tilt_value > 0 )      // 위로
   MCAMPT_GoTiltUp(tilt_value);
else                    // 아래로
    MCAMPT_GoTiltDown(-tilt_value);



시리얼 닫기

MCAMPT_CloseSerialPort();




해당 프로그램 :


웹에서의 구동 테스트는

PVS :: [PHP] 웹에서 서버 프로그램 실행하기  다음 문서를 참고하기 바란다.