Szybki wstęp do programowania PalmOS
Dla młodych, chętnych i niecierpliwych programistów przygotowaliśmy szybki wstęp do programowania PalmOS. W artykule zamieszczamy spis wszystkich potrzebnych narzędzi wraz z ich krótką charakterystyką (do czego mi to potrzebne?) oraz wytyczne od czego zacząć poznawanie sztuki programowania dla systemu PalmOS. Zobacz zaktualizowaną wersję artykułu: Szybki wstęp do programowania PalmOS, AD2003
Uwagi na wstępie
- Poniższy wstęp do programowania dla PalmOS kierujemy do osób, które mają już jakieś pojęcie na temat programowania.
- Programować będziemy w języku ANSI C, choć nie jest to jedyny język jakim można się posługiwać.
- Osobom przyzwyczajonym do C++ przypominam, że w ANSI C nie ma obiektów i metod, ani deklarowania zmiennych w locie.
- Opisywane narzędzia programistyczne dostępne są w Sieci bezpłatnie (poza wyszczególnionymi wyjątkami).
- W artykule podajemy bezpośrednie linki narzędzi, które należy pobrać z Internetu - ponieważ narzędzi jest dużo i zmieniają się bardzo szybko, część linków również może przestać być aktywna. Dlatego w przypadku problemów zaglądaj na strony domowe tych narzędzi (kliknij na nazwie narzędzia).
- PalmOS jest środowiskiem graficznym - interfejsy graficzne (zwane dalej formami) do aplikacji tworzy się programami i traktuje jako zasoby programu, co oznacza, że nie tworzy się ich bezpośrednio w kodzie programu (choć jest to również możliwe).
- Istotne jest by zapoznać się ze stroną http://www.palmos.com/dev - jest to strona producenta, na której znajduje się zawsze świeża porcja plików do ściągnięcia (emulator, SDK, podręczniki oraz linki do innych potrzebnych narzędzi, które na mojej stronie mogą być już zdeaktualizowane).
- Polecamy uwadze również strony Palm OS Programmer's FAQ (Warren Young) i PalmOS GNU SDK FAQ (Aaron Barnett).
- Jest do ściągnięcia podręcznik O'Reilly - Palm Programming (355 stron).
- Z naszej strony możesz ściągnąć również tutorial (256kB), który został wycięty z SDK3.0. Nowy SDK nie zawiera już tego tutoriala, a szkoda. Tutorial przedstawia tworzoną krok po kroku aplikację na kształt MemoPad. W kolejnych odcinkach aplikacja wykorzystuje coraz więcej elementów systemu, a jej źródła zawierają gotowe receptury do wykonania klasycznych zadań. Czytelnie napisane, dobrze pooznaczane. Przydatne. Paczka do ściągnięcia nie zawiera plików z zasobami, które były wykonane pod CodeWarriorem.
- Zajrzyj do serwisu Palm Open Source - źródełko przykładów.
Krok 1
Zaczynamy. Poniżej znajduje się lista programów, w które należy / wypadałoby się zaopatrzyć, przed przystąpieniem do napisania pierwszego programu. Lista nie jest krótka, ani pozycje na niej umieszczone nie są najwdzięczniejsze jeśli chodzi o ściąganie ich z sieci.
Cygnus - Cygnus to w skrócie coś takiego, co robi z Windowsów Linuksa. Pojawia się unixowy shell i wszystkie dobrodziejstwa z nim związane: awk, grep, gzip, make, no i oczywiście KILL :-)
- full Cygwin install (14MB)
- user tools only Cygwin (3MB)
- make (50kB)
albo w uboższej wersji
Prc-tools 2.0 - to strategiczna część naszego downloadu. Kompilator na procesor Motoroli m68k (właśnie taki procesorek kryje się pod obudową Palma). Do działania potrzebne jest mu środowisko Cygnus, a do kompilowania jeszcze SDK, o którym będzie za chwilę.
Palm OS SDK 4.0 SDK to jakby klucz do programowania PalmOS. Zawiera podręcznik, w którym fachowo zostały opisane wytyczne, jak programować Palma oraz za pomocą jakich funkcji. A żeby kompilator też wiedział coś o tych funkcji SDK zawiera od groma plików nagłówkowych z ich definicjami.
Uwaga! Żeby móc ściągnąć te pliki najpierw musisz zaakceptować warunki umowy na stronie: http://www.palmos.com/cgi-bin/sdk40.cgi
PilRC - kompiluje formy (ze skryptów - skrypty można generować w aplikacjach do graficznego projektowania interfejsu), które później są linkowane do reszty kompilatów, w wyniku czego tworzone są pliki PRC. PilRC jest dołączony do pakietu GCC, z tym że ten podany na liście jest świeższy (żeby używać starej wersji, trzeba jeszcze pamiętać o zaznaczeniu tego w środowisku programistycznym).
Środowisko programistyczne (IDE) - pozwala tworzyć formy, tworzy szkielet kodu, generuje pliki pośrednie dla kompilatora PilRC (do kompilacji form, a szerzej mówiąc zasobów - 'resources') oraz zarządza kompilatorami. Innymi słowy: w tym programie pisze się i projektuje aplikacje PalmOS, po czym IDE wysyła utworzone pliki do kompilatorów - jedno kliknięcie i otrzymujemy pliczek z rozszerzeniem ".prc" (wykonywalny na Palmie).
Przykładowe środowiska programistyczne:
Emulator
- składa się zasadniczo z dwóch części. Emulator plus programik do ściągania ROMu z Palma (bez ściągniętego ROMu nie ruszy). Emulator oprócz tego, że działa jak normalny Palm (reaguje tak samo na wszystkie zachowania użytkownika), to jeszcze ma parę procedur ułatwiających testowanie świeżych programów - np. Gremlin, który zachowuje się jak użytkownik o niskim ilorazie inteligencji - wciska wszystko, co się da i wykonuje takich operacji ponad 3000 na minutę :-), więc jeśli ma się coś wywalić, szybko się o tym dowiesz. Emulator wskazuje również przypadki używania niedozwolonych funkcji/zachowań.
Emulator jest dostępny również na platformy UNIXowe - dostępny na stronie emulatora.
Emulator upomina się o skiny, ale można je pominąć (bez nich pracujemy na skinie z PalmPilotem).
No i wszystko. Masz co ściągać.
Jeśli będziesz mieć problemy z instalacją, co zdarza się głównie za sprawą nie ustawionych ścieżek dostępu w AUTOEXEC.BAT (PATH=) z pomocą przyjdzie Ci strona PilotMag Install Steps .
A teraz w skrócie dla lepszego zrozumienia, po co tyle softu: Program piszesz i projektujesz jego interfejs w środowisku programistycznym, a testujesz na emulatorze. Program powstaje przez złączenie skompilowanego kodu ze skompilowanymi zasobami programu (interfejs graficzny, etc.). Zasoby programu kompilowane są przez PilRC, a kod programu przez kompilator GCC (Prc-tools). Kompilator GCC z natury potrafi jedynie kompilować programy na procesor m68k, taki jak jest w Palmie. SDK jest potrzebne kompilatorowi po to, żeby wiedział, że na tym procesorze będzie działał PalmOS i żeby mógł skompilować aplikacje właśnie pod ten system (wiadomo, że linuksowa aplikacja nie zadziała w Windowsach, mimo że oba systemy działają na procesorze Intela ). A ponieważ kompilator też ma swoje upodobania co do środowiska, w którym działa, do tego zestawu dochodzi Cygnus, który sprawia, że Windowsy zaczynają mieć coś wspólnego z porządnymi systemami takimi jak UNIX.
Krok 2
Jak już to wszystko będziesz miał to zacznij od odnalezienia dokumentacji (Palm OS Companion i Palm OS Reference.pdf upakowane w sdk40-docs.zip) i sobie ją poczytaj - z naciskiem na rozdział "Event Loop". Każda, nawet najprostsza aplikacja, musi żyć w pewnej pętli, w której generowane są i obsługiwane zdarzenia (szkoda, że w obecnej dokumentacji zabrakło graficznego diagramu, jak to wszystko działa). Dlatego, też Twój pierwszy program, mimo, że z natury ma być prosty na początek, musi zawierać sporo linii kodu, który będzie organizował taką pętle zdarzeń. Na pocieszenie od razu mówię, że utworzeniem kodu-szkieletu zajmie się środowisko programistyczne (IDE).
Później odpal np. PilotMAGa: wygeneruj szkielet programu i skompiluj go. To będzie Twój pierwszy program, który niczego nie będzie musiał robić. Spróbuj odpalić go na emulatorze. Jeśli to Ci się uda, zacznij sukcesywnie rozwijać swoją aplikację, podpierając się dokumentacją zawartą w SDK. Emulator będzie Ci towarzyszył nieustannie - testowanie aplikacji bezpośrednio na Palmie jest opcją tylko dla cierpliwych (wymagany długi czas na synchronizację). Tu od razu wskazówka. Ładowanie programu do emulatora nie polega na zasymulowaniu HotSynca, a jedynie na przeciągnięciu pliku .prc na okienko emulatora. Jednak, gdy w emulatorze będzie uruchomiona Twoja aplikacja, nie będziesz mógł przeciągnąć do niego kolejnej poprawionej wersji. Musisz zamknąć aplikację, ale nie rób tego przez przejście do ekranu Aplikacji, gdyż wtedy przy próbie ponownego odpalenia testowanego programu pojawi się błąd (prawdopodobnie dlatego, że ikonka w oknie aplikacji będzie wskazywała na inny obszar pamięci niż na przeładowaną wersję programu). Dlatego też najlepiej zamykać aplikację przez wejście np. do kalkulatora. Po przeciągnięciu nowej wersji, można przejść do okna aplikacji i ponownie wystartować testowany program.
Powodzenia i miłej zabawy! ;-)
Liczę, że Twoje zmagania zaowocują w postaci jakiegoś sympatycznego programu, który przyda się innym użytkownikom Palm (przed opublikowaniem nie zapomnij zarejestrować Creator ID swojego programu na oficjalnej stronie www.PalmOS.com - to bardzo ważne, szczegóły w podręczniku i na stronie). Kiedy zbudujesz swoją pierwszą aplikację Palm, śmiało pochwal się ją na naszym forum.