프로젝트/주차관리시스템
PVS :: [MCAM] 카메라 가운데 오게 하기
appHunter
2009. 5. 7. 10:26
글을 다 날려서 다시 적는다. !! (2009-05-06에 날림)
2007/06/19 16:53 원본보기
참고 문서 및 파일 :
참고 링크 : 없음.
DLL 파일 불러오기
필요 변수 초기화
함수 포인터 변수 선언
DLL 에서 제공하는 함수를 사용하기 위해 함수 포인터 변수를 선언한다
함수 포인터 변수 초기화
디바이스 갯수 알아내기
디바이스 이름 알아내기 ( 생략 )
다른 장치가 연결 될 시 해당 이름과 비교한 후 연결 해야 함.
디바이스 연결
시리얼 연결 ( PanTilt 제어 )
카메라 가운데 및 제어
시리얼 닫기
해당 프로그램 :
웹에서의 구동 테스트는
PVS :: [PHP] 웹에서 서버 프로그램 실행하기 다음 문서를 참고하기 바란다.
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] 웹에서 서버 프로그램 실행하기 다음 문서를 참고하기 바란다.