Eungene's Imaginations...

Innoace WIPI SDK 기본 사용법 본문

Programming/WIPI Clet

Innoace WIPI SDK 기본 사용법

Eungene's 2007. 11. 29. 23:23
728x90
반응형
현재 필자가 Innoace를 안지 얼마 안 되었다.

거기다가 현재 SK Telecom이나 주변 대학 및 업체에서도 많이 쓰는 것이 이 SK Innoace의 WIPI SDK 이기 때문에, 이제 Aroma-WIPI Emulator 는 버리고, Innoace WIPI SDK써야 하지 않겠는가? 거기다 Innoace WIPI가 더욱더 편리한 환경들을 제공한다.

그럼 지금부터 하나하나 사용법들을 보도록 하자.


Innoace WIPI SDK 는 http://wipi.innoace.com 에 들어가면 다운을 받을 수 있다.

단 회원만 다운을 받을 수 있고, 실행을 시킬 수 있기 때문에 회원가입부터 먼저 하자.

사용자 삽입 이미지

<WIPIGEM 사이트의 SDK 다운 게시판>







SDK를 다운 받으면 압축을 풀고, setup을 하면 다음과 같은 그림과 같이 프로그램 폴더가 생성되어 있을 것이다.

사용자 삽입 이미지






 

그럼 WIPI IDE부터 차근차근 알아보도록 하겠다.

사용자 삽입 이미지

위 그림이 WIPI IDE를 실행시켰을 때 첫 화면이다. 메뉴는 그렇게 많이 있지는 않다.


그럼 첫 번째로 프로젝트를 생성해 볼텐데, 생성방법은 [File]->[New Workspace]를 누르면 된다.

사용자 삽입 이미지


 

그럼 우리는 Project Name 을 설정해 주고, Location을 저장하고 싶은 폴더로 지정을 해준 다음에 Application 을 선택하고 확인을 눌러준다.

사용자 삽입 이미지



 

프로젝트를 생성하면 위 그림과 같이 WORKSPACE WINDOW에 파일들이 생겨나게 되는데, CletModule.c 를 더블클릭하게 되면 WIPI IDE에서 직접 소스를 코딩할 수 있도록 텍스트 박스가 생겨나게 될 것이고, Debug(Emulator)폴더 안에 들어있는 dsp 파일은 VisualC++6.0에서 쉽게 수정하고 컴파일할 수 있도록 만들어 놓았다. 역시 더블클릭을 하게 되면 VisualC++6.0이 실행될 것이다.

나머지 Build(ARM)과 Build(GCC)는 에뮬레이터가 아닌 폰으로 테스트를 하기 위해서 만들어졌지만, CP용이라서 다른 프로그램이 더 필요하다.


그럼 dsp 파일을 더블클릭해서 VisualC++6.0을 실행시켜 보자.

사용자 삽입 이미지

<dsp를 더블클릭하여 실행한 Visual C++6.0>




여기서 우리들이 굉장히 편한 부분이 있다.

기존에 Aroma-WIPI 에서는 Visual C++에서 설정을 해줬어야 했다. 하지만 Innoace SDK는 따로 설정을 안 해주어도, dsp를 더블클릭해서 실행을 시켜주면 저절로 셋팅이 된다. 그래서 컴파일만 해주면, 기존 Aroma WIPI에서 Warning이 뜨던 요소들은 모두 없어지고, 깔끔한 컴파일을 할 수 있다. 

그럼 우리들이 소스코드들을 자세히 살펴보면 다음과 같은 소스들이 들어있다.

/*

** ===========================================================================

**

** Project:

**     WIPI

**

** File:

**     CletModule.c

**

** Description:

**     Application Skeleton

**

** ===========================================================================

*/




/*

**----------------------------------------------------------------------------

**  INCLUDE FILES FOR MODULE

**----------------------------------------------------------------------------

*/


//For Using WIPI API

#include       "WIPIheader.h"




/*

**----------------------------------------------------------------------------

**  VARIABLES FOR MODULE

**----------------------------------------------------------------------------

*/



/*

**----------------------------------------------------------------------------

**  FUCTION PROTOTYPES

**----------------------------------------------------------------------------

*/



/*

**----------------------------------------------------------------------------

**   LAYOUTS FOR MODULE

**----------------------------------------------------------------------------

*/



/* 이벤트를 처리하는 함수이다.*/

void handleCletEvent( int type, int param1, int param2 )

{

        switch( type )

        {

                // Key press

                case MV_KEY_PRESS_EVENT:

                        {

                                switch ( param1 ) {

                                        case '1' :

                                                break;

                                }

                        }

                        break;

        }

        MC_knlPrintk( "param1 = %d, param2 = %d\n", param1, param2 );

}


/* 프로그램이 시작될 때 불리는 함수이다. */

void startClet( int argc, char *argv[] )

{

        MC_GrpContext GC;

        MC_GrpFrameBuffer screenBuffer;

        screenBuffer = MC_grpGetScreenFrameBuffer(0);

        MC_grpInitContext( &GC );

        MC_grpSetContext( &GC, MC_GRP_CONTEXT_FG_PIXEL_IDX, (void*)MC_grpGetPixelFromRGB(255,255,255) ); // set white color

        MC_grpFillRect( screenBuffer, 0,0,

                MC_GRP_GET_FRAME_BUFFER_WIDTH( screenBuffer ),

                MC_GRP_GET_FRAME_BUFFER_HEIGHT( screenBuffer ),

                &GC

                );

        MC_grpSetContext( &GC, MC_GRP_CONTEXT_FG_PIXEL_IDX, (void*)MC_grpGetPixelFromRGB(0,0,0) ); // set black color

        MC_grpDrawString( screenBuffer, 30, 30, (const char *)"Hello WIPI 1.2!", strlen("Hello WIPI 1.2!"), &GC );

        MC_grpFlushLcd( 0, screenBuffer, 0, 0, MC_GRP_GET_FRAME_BUFFER_WIDTH( screenBuffer ), MC_GRP_GET_FRAME_BUFFER_HEIGHT( screenBuffer) );

}



/* 프로그램이 잠시 멈추어 질때 이 함수를 호출해 준다.*/

void pauseClet( void )

{

}


/* 프로그램이 재개될 때 이 함수를 호출해 준다. */

void resumeClet( void )

{

}



/* 프로그램이 종료될 때 불린다. */

void destroyClet( void )

{

}



/*화면의 일부분을 다시 칠해야 하는 경우에 불리는 함수이다./ */

void paintClet( int x, int y, int w, int h )

{

}





위 소스들은 그렇게 어려운 부분이 없다.

하는 일은 단순히 "HelloWIPI1.2"를 출력을 하는 것이다.

하지만, 우리들이 전에 "HelloWorld" 소스에서는 그림을 그리고 문자를 출력하는 일을 paintClet() 함수에서 처리해주었지만, 이 SDK에서 지원하는 기본 소스에서는 startClet()에서 모두 처리해 주었다.


그럼 우리들이 위 소스들을 Emulator로 실행을 해보기 전에 한 가지 해줘야 할 일이 있다.

우리들이 F7을 누르면, 컴파일이 될 텐데, 컴파일이 되면 자동으로 에뮬레이터가 실행 가능하도록 그 때 그 때 체크를 해주어야 한다.

프로젝트를 생성할 때마다 체크해주어야 하는 단점이 있지만, 우리가 기존 Aroma-WIPI를 해봐서 알겠지만, 프로젝트를 생성할 때마다 오브젝트를 추가해주는 것보다야 훨씬 편하지 않은가?




그럼 하는 방법은 이렇다.

사용자 삽입 이미지



위 그림과 같이 우선 [Project] --> [Settings] 라는 메뉴를 들어간다.

그러면 아래와 같은 윈도우가 생성이 되는데,

사용자 삽입 이미지

파랗게 네모를 그려 놓은 [Auto Run BinMaker]라는 첵크박스를 선택해준 후 [OK]버튼을 눌러준다. 그 후 Visual C++6.0에 가보면, “Do you want to reload it now?" 라는 메시지가 있는 메시지 창이 뜨게 될 텐데, 이 때는 무조건 Yes를 눌러주도록 하자. 이 메시지는 WIPI IDE에서 바뀐 설정을 Visual C++6.0에도 적용을 할까요? 라고 물어보는 것이다.

위처럼 모든 일을 해주면 [F7]키를 눌러 컴파일을 해줄 때마다 Emulator가 실행되게 된다.



그러면 우리들이 기본적으로 Innoace WIPI SDK가 제공해주는 소스를 실행을 해보자.

역시 Visual C++6.0에서 [F7]키. 즉, Compile을 하면 된다. 그러면 아무 오류 없이 Emulator가 실행이 될 것이고, 만에 하나 XP 버전이 Home Edition 이나 SDK와 안 맞는 무엇인가가 있으면 프로그램을 실행 할 때마다 로그인을 해주어야 하는 불상사가 일어날 수도 있다.

이에 대한 이유는 필자(블로그주인)는 잘 모르겠고, Innoace 측에서 알 텐데 사용자들에게 알려주고 있지는 않다. 이 글을 보시는 분들은 Innoace 홈페이지에 가서 항의 글이라도 올려주시길 빈다.


그러면 이어서 우리가 [F7]키를 누르게 되면, 아래와 같은 그림의 윈도우가 생성이 된다.

사용자 삽입 이미지


 

바로 WIPI Binary Maker 라는 프로그램인데, 나중에 더욱더 상세히 살펴보도록 하겠다. 우선 오른쪽 하단에 [Auto Run(Emulator/Serial DL)]첵크박스가 선택이 되어 있는지 확인 후, Make 버튼을 눌러준다.

그러면 여러 메시지 박스들이 뜰 것인데, 모두 확인을 눌러 주면 된다.

그러면 Emulator가 실행이 될 것이다.

사용자 삽입 이미지

그림을 보시다시피 Hello WIPI 1.2! 라는 문구가 출력 된 것을 확인할 수가 있다.

지금 필자가 선택한 스킨과 이 글을 보고 따라하는 분들의 스킨이 다를 수 있는데 스킨은 얼마든지 에뮬레이터 프로그램 안에서 바꾸어 줄 수 있다.

스킨을 바꾸는 부분은 여기서 언급은 하지 않겠다. 어느 다른 스킨 바꾸듯이 바꾸면 되기 때문이다.


어떤가? 기존의 Aroma-WIPI Emulator를 쓰다가 이 Innoace의 WIPI SDK를 쓰시는 분들이라면 편안함의 극치를 느끼실 수 있을 것이다.

현재, 모바일게임 업체에서도 이 Emulator를 쓰고 있고, Innoace에서 3D까지 프로그래밍을 할 수 있는 GIGA라는 SDK도 지원하고 있다. 이 GIGA SDK도 Innoace 홈페이지를 가면 누구나 다운을 받을 수 있다.


이 기본 소스 말고, 다른 도형이나 핸들이벤트를 이용해 가면서 프로그래밍을 해보고 Emulator를 이용해 보시라! 정말~ 괜찮다는 느낌밖에 안 들 것이다.

반응형
Comments