Windows CE Interface/ko

From Lazarus wiki
Jump to: navigation, search

English (en) | français (fr) | 한국어 (ko) | português (pt) | русский (ru) | 中文(台灣)‎ (zh_TW)

소개

Windows CE Interface는 Felipe Monteiro de Carvalho에 의해 시작되었고 이후 Roozbeh와 다른 공헌자에의해 확장되었다. 인터페이스는 아직도 개발중인 Windows CE FPC 컴파일러와 함께 2006년 시작되었다. 안정된 컴파일러는 2007년에 릴리즈 되어 0.9.24 Lazarus 릴리즈와 함게 WinCE 애드-온 인스톨러를 릴리즈 할 수 있게 하였다.

과거 gtk/gtk2 인터페이스를 유사한 인터페이스간에 코드공유했을 때의 나쁜 경험이 있었기 때문에, WinCE에서는 새로운 코드로 시작 하기로 결정하였다. API들은 매우 유사하기 때문에 WinCE 인터페이스상의 많은 코드는 Win32/64 인터페이스에서 복사해 왔다.

Other Interfaces

Platform specific Tips

Interfaces Development Articles

윈도우즈 CE 인터페이스 설정

윈도우즈 CE 인터페이스를 설정하기휘해서는 애드-온 인스톨러를 사용하거나 직접 인터페이스를 설정하여야 한다. 두가지 옵션이 아래에 자세히 설명되어 있다. 물론 애드-온 인스톨러를 사용하는 것이 편리하다.

안정된 애드-온 인스톨러 사용

윈도우즈 CE를 위한 첫번째의 안정된 프리파스칼에서 WinCE 개발환경을 설치하는 것는 결코 쉽지 않았다. 아레에 있는 각 단계를 따라 하기만 하면 설치할 수 있고 WinCE 응용프로그램을 컴파일 할 수 있도록 라자루스를 구성해준다.

단계별 가이드:

  • 애드-온 인스톨러(cross-arm-wince)를 다운로드하여 설치한다. 방금 설치한 라자루스 버전과 동일한 버전으로 한다. 소스포지 다운로드 페이지에 같이 있다.
  • arm-wince 응용프로그램을 컴파일러 옵션을 변경 한 후 라자루스에서 컴파일 할 수 있다:
    • Environment -> Environment Options... -> Files -> Compiler Path: ppcrossarm으로 경로를 설정(eg C:\lazarus\fpc\2.2.2\bin\i386-win32\ppcrossarm.exe)
    • Projects -> Compiler Options... -> Paths -> LCL Widget Type: wince
    • Projects -> Compiler Options... -> Code -> Target OS: wince
    • Projects -> Compiler Options... -> Code -> Target CPU Family: arm
  • 빌드 파일 크기를 줄이기 위해 Projects -> Compiler Options... -> Debugging section에서 Strip 심볼을 체크하고 나머지는 모두 체크 해제 한다.

스냅샷 애드-온 인스톨러 사용

안정된 릴리즈를 사용하는 대신, 최신의 윈도우즈 CE 인터페이스 개발 버전을 사용할 수 있다. 이것은 테스트되지 않았으나 최신판이 릴리즈 된 후 어떤 것들이 추가되었는지에 따라 추가 설치하고자 할 때와 모든 것을 스스로 빌드하기에는 너무 어렵거나 많은 작업이 필요할 때 유용하다.


단계별 가이드:

  • 최신의 윈도우즈용 리자루스 스냅샷을 이곳에서 받아 설치한다. Win32 스냅샷을 정확히 WinCE 스냅샷 버전과 같은이 확인한다: http://www.hu.freepascal.org/lazarus/
  • 방금 다운로드한 프리파스칼 버전과 같은 애드-온 인스톨러를 받아 설치한다.같은 페이지에 있다.
  • 나머지 단게는 안정된 애드-온 인스톨러를 사용하는 단계별 가이드와 유사하다.

윈도우즈 CE 인터페이스를 수작업으로 설정하기

0.9.24 릴리즈가 안정된 윈도우 CE FPC 컴파일러 버전이 2.2.0 으로 만들었지만 현재의 라자우스 개발 버전은 2.2.1 또는 상위 버전을 필요로 한다. 다음에 이 환경을 설정할 수 있는 지침이 있다:

1단계 - 컴파일러를 윈도우상에서 재컴파일하여 윈도우 CE - ARM 크로스 컴파일러를 만들어 시작을 한다. 이곳에 셜명이 있다: WinCE port.

  • 그리고 나서 다음과 같이 배치 스크립트를 만들어, 설치된 FPC 2.2.1(또는 라자루스나 별도로 설치된 것으로부터)에서 컴파일러를 빌드한다.
cd compiler
PATH=C:\Programas\lazarus220\fpc\2.2.0\bin\i386-win32
make cycle CPU_TARGET=arm OS_TARGET=wince
cd ..
pause

2단계 - 새롭게 빌드한 컴파일과 함께 FCL(Free Component Library)을 컴파일 할 필요가 있다. 설명 이곳.

  • 이 똑똑한 배치 스크립트는 이 일들을 쉽게 만들어 준다(패스를 각자의 컴퓨터세 맞게 고치는 것을 꼭 기억하라). OPT="-FU...는 코든 컴파일된 유닛을 같은 위치에 넣어줄 것이고, 이는 매우 편리하다.(그러나 문제를 일으킬 수 있다). 모든 install 대신 make clean을 사용하는 것이 좋다:
cd packages
PATH=C:\Programas\lazarus220\fpc\2.2.1\bin\i386-win32
make clean all CPU_TARGET=arm OS_TARGET=wince PP=ppcrossarm.exe OPT="-FUC:\Programas\lazarus220\fpc\2.2.1\units\arm-wince"
cd ..
pause

3단계 - 아래에 있는 배치파일을 서브버전의 라자우스 디렉토리의 루트에 넣고 실행하라

PATH=C:\Programas\lazarus22\fpc\2.2.1\bin\i386-win32;c:\Programas\arm
make lcl LCL_PLATFORM=wince PP=ppcrossarm.exe CPU_TARGET=arm OS_TARGET=wince
pause

이것은 LCL을 윈도우 CE로 컴파일한다.

4단계 - LazarusPackageIntf를 크로스-컴파일하면 써드파티 비쥬얼 컴포넌트를 사용할 수 있다. lazarus\packager\registration으로 가서 실행하라:

PATH=C:\Programas\lazarus22\fpc\2.2.1\bin\i386-win32;c:\Programas\arm
make PP=ppcrossarm.exe CPU_TARGET=arm OS_TARGET=wince
pause

노트: $(LazarusDir)\packager\units\$(TargetCPU)-$(TargetOS)\를 당신의 프로젝트의 유닛 경로에 지정을 해야한다(요구사항이 한것처럼 FCL을 추가)

5단계 - 이제 라자루스 IDE를 사용하여 프로그램을 디자인, 컴파일하고 디버그 할 수 있다.

  • 스크립트를 사용하여 당신의 프로그램을 컴파일하는 것과 비슷하게 사용할 수 있다.
PATH=C:\Programas\lazarus22\fpc\2.2.1\bin\i386-win32;c:\Programas\arm
ppcrossarm.exe -Twince -FuC:\Programas\fpc\rtl\units\arm-wince -FDC:\Programas\arm -XParm-wince- test.pas
ppcrossarm.exe -Twince -FuC:\programas\lazarus\lcl\units\arm-wince -FuC:\programas\lazarus\lcl\units\arm-wince\wince -FuC:\Programas\fpc\rtl\units\arm-wince -FDC:\Programas\arm -XParm-wince- windowtest.pas
pause

라자루스 IDE에서 윈도우CE 프로젝트 파일 컴파일하기

노트: 최근 "wincemenures.or"파일이 링크시에 누락된다는 보고가 있다. 이 파일을 "lazarus/lcl/interfaces/wince"에서 "lazarus/lcl/units/arm-wince"로 복사하기만 하면 모든 것이 잘 될 것이다.

모든 것이 다른 인터페이스와 OS에서 되듯이 잘 될 것이다. 위젯 셋으로 Compiler Options->PathsCode탭 페이지 선택에서 WinCE를 타겟 OS로 타겟 CPU는 arm으로 선택하여 WinCe를 선택했음을 명심하라. Environment options에 있는 compiler path를 ppcrossarm.exe 컴파일러가 있는 곳으로 변경해야 한다.

새로운 IDE는 당신의 새로운 파일을 컴파일할 준비가 되어있다.

라자루스 IDE에서 왼도우 CE 소프트웨어를 디버깅하기

라자루스 IDE에서 만들어진 어플리케이션을 디버그 할 수 있다.

1단계 - 라자루스 IDE에서 Environment->Debugger Options 메뉴로 가서, 디버거 패스를 WinCE를 위한 gdb가 있는 디렉토리로 변경하라. gdb는 이곳에서 얻을 수 있다. ftp://ftp.freepascal.org/pub/fpc/contrib/cross/gdb-6.4-win32-arm-wince.zip

그리고 gdb로 작업하기 위해서는 ActiveSync 를 설치해야만 한다. ActiveSync를 이곳에서 구할 수 있다: http://www.microsoft.com/windowsmobile/en-us/help/synchronize/activesync45.mspx

2단계 - Microsoft Device Emulator Preview를 사용하고 있다면, 그것을 시작(또는 복구)할 수 있다. 128M의 램을 가지고 있는 에뮬레이터로 시작했다는 것을 명심해라. 에뮬레이터에서 공유 폴더를 위한 경로를 선택하고, copy 명령어를 .bat 파일에 추가하여 당신의 어플리케이션을 컴파일 된 exe 파일을 당신의 공유 패스에 복사할 수 있도록 한다.(나의 .bat 파일을 볼 수가 있다). 여기에 128 램을 가진 에뮬레이터에서 시작할 수 있는 .bat 파일이 있다.

start deviceemulator.exe ".\ppc_2003_se\PPC_2003_SE_WWE_ARMv4.bin" /memsize 128 /skin 
".\ppc_2003_se\PocketPC_2003_Skin.xml"

그리고 에뮬레이터를 나가고 싶을 때면 'save 하고 exit'를 하기만 하면 되며, 시작 메뉴에 생성된 단축키로 시작하기만 하면 된다(단축은 '(restore)'.

3단계 - Device Emulator Manager를 실행하고 에뮬레이터의 이름에 대로 오른쪽 마우스 버튼으로 사용 가능한 에뮬레이터를 선택하고 크래이들에서 실행한다. Microsoft ActiveSync가 이제 시작 될 것이다. 만약 Micrososft ActiveSync가 아니면 File->Get connected 메뉴로 간다. 그래도 ActiveSync 가 에뮬레이터를 인지하지 못하면 에뮬레이터를 크레이들에서 내리고 다시 올린다.

4단계 - 에뮬레이터에 있는 탐색기에서 파일을 \gdb 디렉토리로 복사한다. 이것이 에뮬레이터를 처음 실행 시키는 것이라면 루트(\)폴에에 있는 'My Pocket PC' 폴더에 gdb 디렉토리를 만들어야 한다. (각 빌드를 더 빨리 하기 위해서는 파일 탐색기에서 공유 폴더로 간 후 실행 파일에서 ctrl+c를 누른 후 매번 어플리케이션을 디버그하기 전에 단지 ctrl+v를 누르기만 하면 된다.

5단계 - 이제 어플리케이션을 안전하게 디버그 할 수 있다. wince용 gdb를 시작하고, arm-wince-pe-stub.exe 를 복사하여 \gdb 폴더에 넣고 당신의 application.exe가 그곳에 있는지 확인하고 프로그램을 실행 할 수 있다. 만약 에러가 난다면 \gdb 폴더가 만들어져 있는지, arm-wince-pe-stub.exe 와 당신의 exe가 그곳에 이는지 확인한다. 또한 대부분의 경우 exe 파일이 커서 \gdb 폴에더 복사할 수 없다면 Microsoft Device Emulator Preview를 디폴트 64M 램에서 128M 램으로 해야한다.

힌트 몇가지 1. 프로그램은 종료 후에서 여전히 메모리에 남아있다. 그러므로 .exe 파일을 겹쳐쓰면 안된다. 마아크로소프트사의 프로세스 뷰어 같은 툴을 사용해야 한다. 이 툴은 원격으로 모든 프로세스를 보여주어 그것들을 강제종료(kill) 할 수 있도록 한다.또는 에뮬레이터에 내장되어 있는 프로세스 킬러를 사용한다. 프로세서 탐색기는 또 다른 좋은 대안이 된다. 이곳에서 그것을 구할 수 있다.http://madebits.com나

2. 당신의 프로그램을 디버깅 할 때마다 프로그램에서 나갈 수 는 없다. 프로그램을 리셋하고 디버거를 리셋하라. 가끔 프로그램이 여전히 메모리상에 남아있다는 것을 기억하고, 역시 그 프로세서를 강제종료 시켜야만 한다.

포켓 PC 에뮬레이터를 설치하고 사용하기

1 - 포켓 PC 에뮬레이터를 마이크로소프트에서 다운로드할 수 있다 이곳. 먼저 V1Emulator.zip를 다운로드하고 설치한다.

2 - 그 다음은, 웹사이트에 잘못된 정보가 있으므로 주의한다. Virtual Machine Network Driver가 필요하다고 말하고 있지만 웹사이트가 제공하는 링크가 깨어져 있다. 대신에, Virtual PC 2007을 이곳에서 다운로드 한다. 이것이 필요한 드라이버를 설치해 줄 것이다.

3 - 이제 첫번째 웹사이트로 가서 dfp.msi를 다운로드하고 설치한다.

이제 완전하게 동작하는 포켓 PC 에뮬레이터를 갖게 된 것이므로 어플리케이션을 개발하기 위해 라자루스와 함께 사용할 수 있다.

에뮬레이터상에서 어플리케이션을 실행하기 위해서는 ActiveSync를 통해 GDB를 사용하던지, 직접 프로그램을 싱행 할 수도 있다.

에뮬레이터상에서 어플리케이션 실행하기

1 - Windows Programs Menu --> "Windows Mobile Emulator Images" --> "PocketPC" 메뉴로 간다.

2 - 에뮬레이터를 위한 공유 폴더를 설정하지 않았다면 지금 File --> Configure 메뉴를 클릭하여 설정하면 에뮬레이터가 열린다. 라자루스가 생성한 윈도우즈 CE 실행파일이 있는 폴더로 설정하라.

3 - 에뮬레이터에서 Start --> Programs을 클릭한다. "File Explorer"를 선택하고, "Storage Card"를 선택한다. 실팽프로그램을 찾아서 더블클릭하여 실행시킨다.

새로운 컨트롤을 추가하는 방법

TButton의 예를 들면.

TButton은 lcl/buttons.pp에 정의되어 있다. 이것은 플랫폼 독립적인 LCL의 일부분으로 정상적인 CLC 프로그래머가 사용할 수 있다.

이 윗젯 클래스는 lcl/widgetset/wsbuttons.pp 로서 모든 위젯(qt, carbon, gtk, win32, ...)의 플랫폼 비종속의 기초가 되는 것이다.

다음은 lcl/interfaces/wince/wincewsbuttons.pp에 있는 wince 인터페이스 클래스이다.

 TWinCEWSButton = class(TWSButton)
 private
 protected
 public
   class function  CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
 end;

각 WS 클래스는 실제적으로 반드시 등록해야 하는 것들을 구현한다. wincewsXXX.pp 유닛의 끝에 있는 initialization 섹션을 보라:

 RegisterWSComponent(TButton, TWinCEWSButton);


DestroyHandle 은 컨트롤이 사용한 메모리를 정리하는데 필요하므로 반드시 구현해아만 한다는 것을 알아라.

갤러리

아래는 라자루스로 윈도우 CE용 어플리케이션을 생성한 프로그래므이 스크린샷이댜:


Virtual Moon Atlas - 달을 관측하거나 탐색 할 수 있는 무료 프로그램 ( http://ap-i.net/avl/en/start ):

Vmap1 west east.jpg


LazCalendar - 간단한 달력 프로그램

Calendar Wince App.png


germesorders - sqlite 와 RxLib를 사용한 간단한 데이터베이스 프로그램

germes2.png


ZzOo, pronounced /'zi:zu:/, 는 무료 Western Zodiac sign finder이다.

zzoo-wince.png

더 볼 것