PDASoft

Programování na Palmu 2. - Nazdar
Publikováno: Čtvrtek, 11.05. 2006 - 00:00:00
Téma: Obecné články


A dnes se na to opravdu vrhneme, protože je tu první faktický programátorský díl, kde se naučíte ono "Hallo World!", obligátní to pokřik začínajících programátorů, kterým oznamují celému světu, že ONI, právě začali programovat.



Nazdar

Palm Tutorial

Cíl

Napsat, zkompilovat a otestovat vaší první aplikaci pro Palm.

Návrhy

Struktura aplikace pro Palm

Nejprve je třeba vložit vaše hlavičkové soubory pro danou aplikaci a pak systémové soubory spojené s API a datovými strukturami z SDK, které použijete.

#include "hello.h"
#include <System/SystemPublic.h>
#include <UI/UIPublic.h>

Ekvivalentní funkcí pro main() v C je PilotMain: UInt32 PilotMain(UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags). Její argumenty jsou trochu podobné argc a argv v C. Říkají, která událost aplikaci spustila. V aplikaci Nazdar se budeme zabývat pouze nejzákladnějším Spouštěcím módem: sysAppLaunchCmdNormalLaunch. Ostatní módy si ukážeme později.

Otevřeme náš hlavní form pomocí FrmGotoForm(Form1) a vložíme "nekonečnou" smyčku, která bude obsluhovat události systému, menu, formu a uživatelské. Tato smyčka se ukončí když uživatel ukončí aplikaci, nebo pokud se vyskytne kritická chyba. Zde je tělo této smyčky:

EvtGetEvent(&e, 100);

if (SysHandleEvent(&e))
continue;

if (MenuHandleEvent((void *)0, &e, &err))
continue;

switch (e.eType)
{
case ctlSelectEvent:...
case frmLoadEvent:...
case appStopEvent:...
case frmOpenEvent:...
case menuEvent:...
default:
}

Když uživatel ukončí aplikaci, zavoláme FrmCloseAllForms() a return 0.

Resources (zdroje)

Dobře napsaná aplikace by neměla obsahovat ve zdrojovém kódu žádné prvky UR (uživatelského rozhraní). Ty by měly být uloženy jinde: v tzv. resource file. PilRC používá soubory s koncovkou .rcp. Jakmile máte jasnou představu jak bude vaše UR vypadat, spusťte svůj oblíbený textový editor (např pozn. blok), popište vaše zdroje (menu, formy, tlačítka, obrázky...), uložte soubor jako .rcp a zkompilujte pomocí PilRC. Když pochopíte jak vytvořit resource soubor, budete možná chtít použít více uživatelsky přívětivější prostředí např. PilRCEdit.

Kompilování

K dispozici máte soubor makefile. Co pro vás udělá:

  • zkompiluje .c do .o pomocí gcc
  • zkompiluje .rcp do sady souborů .bin pomocí pilrc
  • spojí .o a .bin do .prc pomocí build-prc

Testování

Můžete dvakrát kliknout na soubor hello.prc, který jste právě zkompilovali a pak spustit HotSync, který nahraje "Nazdar" do vašeho zařízení. Toto je sice nejlehčí způsob, ale ne nejrychlejší. Když vytváříte nějakou aplikaci, budete ji testovat znova a znova a používání HotSyncu vás bude docela zdržovat. Jinou možností je nahrát aplikaci do Palm OS Emulatoru (POSE). Emuluje jak procesor tak i pamět zařízení. S POSE musíte stahnout i ROM zařízení, které chcete emulovat.

Když jste spustili POSE, jednoduše přetahněte hello.prc a klikněte na ikonu Hello v emulatoru.

Všimněte si, že všechny aplikace z tohoto tutoriálu se budou ukladat do vlastní kategorie v PalmOS Launcheru. Stejně jako máte 'Main', 'System', 'Utilities', 'Unfiled'... budete mít úplně novou složku .... Hádejte jakou? ... 'Tutorial'

Úkol

Stahněte si ZIP soubor.

Protože je to vaše první Palm aplikace, bude váš úkol lehký.

Do resource souboru přidejte:

  • titulek formu
  • label se smajlíkem
  • podmínku ICON, která řekne PilRC, kterou bitmapu má použít v Palm launcheru

V souboru C:

  • vložte hlavičkové soubory .h
  • daklarujte proměnnou "e" typu EventType
  • přidejte volání FrmGotoForm(Form1)
  • přidejte volání EvtGetEvent(&e, 100)
  • přidejte volání FrmSetActiveForm(FrmInitForm(e.data.frmLoad.formID))
  • přidejte volání FrmGetActiveForm() a uložte výsledek do proměnné pfrm
  • přidejte volání FrmDrawForm() s argumentem pfrm
  • Po zavření aplikce ukliďte zavoláním FrmCloseAllForms()

Nakonec nahraďte v makefile všechny "MY_APP" textem "hello.prc".

Řešení

A výsledek je v tomto ZIP souboru.

A takto by měla aplikace vypadat:

Palm Tutorial







Tento článek si můžete přečíst na webu PDASoft
http://www.pdasoft.cz

Tento článek najdete na adrese:
http://www.pdasoft.cz/modules.php?name=News&file=article&sid=1979