[SCH-M490]모션센서인터페이스

Download Report

Transcript [SCH-M490]모션센서인터페이스

[SCH-M490] 모션센서 인터페이스
1. 모션센서 On/Off 방법
2. 각도 및 에티켓 동작 정보 획득 방법
3. 모션 센서 X,Y,Z 값 획득 방법
4. 설정 옵션과 레지스트리 값
1. 모션 센서 ON/OFF 방법


모션센서 ID 란 ?
: 어플에서 모션센서를 사용하기 위하여 모션센서를
ON 시킬때 사용하는 ID
: 어플에서 ID를 사용하여 ON 시킨 이후 종료시는
반드시 Off를 시켜주어야 된다.
사용가능 ID
* ID : 200번 ~250번
1. 모션 센서 ON/OFF 방법


모션센서 On
: 모션센서가 On상태가 아닌경우는 필요한 정보를
얻을 수가 없으므로 모션 정보를 얻고자 하는 경우는
모션센서 드라이버가 동작되도록 모션센서 On을 호
출해 해주어야 한다.
모션센서 Off
: 모션센서 On을 한 이후 모션센서를 사용하지 않는
경우 반드시 Off를 호출하여 모션센서가 불필요하게
동작되지 않도록 정지 시켜야 한다.
1. 모션 센서 ON/OFF 방법


일반 사용자가 사용가능한 ID
: 자신의 어플에 모션센서를 사용하기 위하여 사용
가능한 ID는 200~250번이다.
모션센서 정보 획득 방법
1. 모션센서 On을 호출한다. (ID는 200으로 설정함)
2. 모션센서 정보를 얻어 온다. (2장, 3장에 설명함)
3. 어플에 적용하여 사용한다.
4. 모션센서 Off를 호출한다. (ID는 200으로 설정함)
1. 모션 센서 ON/OFF 방법

모션센서 On 사용 예제
#define IOCTL_ACS_ON
BOOL ACCOnRot()
{
DWORD In = 0;
DWORD Out = 0;
BOOL fStatus = FALSE;
HANDLE handle = NULL;
1102
handle = CreateFile(TEXT("ACS1:"), 0, 0, NULL, OPEN_EXISTING, 0, NULL);
// 이 부분에 사용하고자 하는 어플의 고유 아이디를 넣어준다. 예) 어플 200번
In = 200;
fStatus = DeviceIoControl(handle, IOCTL_ACS_ON, (LPVOID)&In,sizeof(DW
ORD), (LPVOID)&Out,sizeof(DWORD), NULL, NULL);
CloseHandle(handle);
return TRUE;
}
1. 모션 센서 ON/OFF 방법

모션센서 Off 사용 예제
#define IOCTL_ACS_OFF
BOOL ACCOffRot()
{
DWORD In = 0;
DWORD Out = 0;
BOOL fStatus = FALSE;
HANDLE handle = NULL;
1103
handle = CreateFile(TEXT("ACS1:"), 0, 0, NULL, OPEN_EXISTING, 0, NULL);
// 이 부분에 사용하고자 하는 어플의 고유 아이디를 넣어준다. 예) 어플 200번
In = 200;
fStatus = DeviceIoControl(handle, IOCTL_ACS_OFF, (LPVOID)&In,sizeof(D
WORD), (LPVOID)&Out,sizeof(DWORD), NULL, NULL);
CloseHandle(handle);
return TRUE;
}
2. 각도 및 에티켓 동작 정보 획득 방법


각도 정보란?
: 모션센서가 동작중인 경우 현재 단말기의 각도 상
태를 레지스트리에 0, 90, 180, 270 의 값으로 표현
하여 알려주는 정보로서 반시계 방향으로 0->90>180->270 으로 표기한다.
에티켓 동작 정보란?
: 모션센서가 동작중인 경우 단말기가 LCD가 밑으
로 향하며 수평으로 되어 있는 경우인지를 알려주는
정보이다.
2. 각도 및 에티켓 동작 정보 획득 방법
각도 저장 위치
: 현재의 각도를 변경되는 시점에 레지스트리에 저장
을 하여 알려준다. 저장되는 각도는 DWORD로 기입
된다.
#define
ANGLE_MODE_ROOT
HKEY_CURRENT_USER

#define ANGLE_MODE_PATH
#define ANGLE_MODE
#define ANGLE_MODE_0
#define ANGLE_MODE_90
#define ANGLE_MODE_180
#define ANGLE_MODE_270
TEXT("ControlPanel\\MotionSensor")
TEXT("ACCSAngle")
0
90
180
270
2. 각도 및 에티켓 동작 정보 획득 방법
에티켓 저장 위치
: 모션센서가 동작중에 LCD가 밑으로 향하게 동작
하는 경우 레지스트리에 DWORD로 값을 써준다. 설
정에서 에티켓 모드가 셋팅되어 있다면 소리 출력 여
부로 확인가능하다.
#define ETIQUETTE_MODE_ROOT
HKEY_CURRENT_USER

#define ETIQUETTE_MODE_PATH
#define ETIQUETTE_RUN
#define ETIQUETTE_RUN_OFF
#define ETIQUETTE_RUN_ON
TEXT("ControlPanel\\MotionSensor")
TEXT("EtiquetteRun")
0
// 정상적으로 소리가 출력된다.
1
// 소리가 차단 된다.
3. 모션 센서 X,Y,Z 값 획득 방법
모션센서 X,Y,Z 값
: 모션센서 칩자체에서 X,Y,Z의 3축 값을 측정 하여
알려주고 있으며 이 정보를 이용하는 방법은 아래와
#define
IOCTL_ACS_GET_X
1011
같다.
#define IOCTL_ACS_GET_Y
1012

#define
IOCTL_ACS_GET_Z
1013
DWORD GetXValue()
{
DWORD dwIn=0;
DWORD dwX=0;
BOOL fStatus = FALSE;
HANDLE handle = NULL;
handle = CreateFile(TEXT("ACS1:"), 0, 0, NULL, OPEN_EXISTING, 0, NULL
);
fStatus = DeviceIoControl(handle, IOCTL_ACS_GET_X, (LPVOID)&dwIn,si
zeof(DWORD), (LPVOID)&dwX, sizeof(DWORD), NULL, NULL);
CloseHandle(handle);
return dwX;
}
3. 모션 센서 X,Y,Z 값 획득 방법
static TCHAR sX[128]={0,0};
static TCHAR sY[128]={0,0};
static TCHAR sZ[128]={0,0};
DWORD dwX=0;
DWORD dwY=0;
DWORD dwZ=0;
// 모션센서를 ID 200으로 On 시킨다.
ACCOnRot();
// 모션센서의 X, Y, Z 의 값을 얻는다.
dwX = GetXValue(); wsprintf(sX,_T("X %3d"),dwX);
dwY = GetYValue(); wsprintf(sY,_T("Y %3d"),dwY);
dwZ = GetZValue(); wsprintf(sZ,_T("Z %3d"),dwZ);
RETAILMSG(1, (TEXT("[ACS] X=%d Y=%d Z=%d \r\n"),dwX,dwY,dwZ)
);
// 모션센서를 ID 200으로 Off 시킨다.
ACCOffRot();
4. 설정 옵션과 레지스트리 값
#define ACS_ROOT HKEY_CURRENT_USER
#define ACS_PATH
TEXT("ControlPanel\\MotionSensor")
// 모션센서 화면전환 기능사용
#define ACS_SELECT_SENSOR
TEXT("MotionSensor")
#define ACS_EXECUTE_OFF
#define ACS_EXECUTE_ON1
// 화면전환시 진동 발생
#define ACS_VIBFEEDBACK
TEXT("VibrationFeedback")
#define ACS_VIBFEEDBACK_OFF
#define ACS_VIBFEEDBACK_ON
0
0
1
4. 설정 옵션과 레지스트리 값
#define ACS_ROOT HKEY_CURRENT_USER
#define ACS_PATH
TEXT("ControlPanel\\MotionSensor")
// 에티켓모드
#define ACS_ETIQUETTE_MODE
TEXT("EtiquetteMode")
// 에티켓모드 OFF
#define ACS_ETIQUETTE_MODE_OFF
// 에티켓모드 ON
#define ACS_ETIQUETTE_MODE_ON
0
1