Реферат: Карманные ПК, Операционная система PalmOS
Приложение может самостоятельно делать Reset - это отчистка Dynamic RAM памяти, проверка целостности Storage RAM , потом дефрагментация памяти ,
Жесткий Reset это обнуление всей памяти (уничтожение всей файловой системы) и создание файловой системы заново, потом туда копируются приложения.
(5) Комуникации
Infra Red, Serial Port, Network – это 3 основных типа коммуникаций в PalmOS ,
InfraRed и SerialPor - приложение может пользоваться инфракрасным портом на нескольких уровнях – высокий уровень это например - пересылка файлов, низкий уровень эта работа с портом напрямую.
Network – можно используя TCP/IP протокол работать с интернетом или локальной сетью, присутствует Berkley Sockets функции. Можно работать в Асинхроном или Синхроном режимах (неблокируемые вызовы и блокируемые)
4.9. Совместимость версий
Этот вопрос очень важный для PalmOS, сейчас самые распространенные версии 3.0 – 4.0. Концептуальной разницы в них нет, главное отличие это сревис ОС для приложений (так называемый Feature Set – наборы сервисов). Palm OS SDK содержит главу Compatibility Guide – в которой объясняется различие версий. , Приложение должно проверять версию чтобы быть уверенным что необходимый сервис присутствует в данной версии Palm OS, и не запускаться в случае неподдерживаемой версии. Например Alarm Manager присутствует не во всех версиях.
4.10. Расширения PalmOS
Как уже ранее говорилось все приложения вызывают функции PalmOS для выполненеия каких либо действий ( в Windows такой набор функций называется WinAPI ), например открытие файла, вывод на экран, ввод/вывод. Но PalmOS так устроена что в ней можно переопределять поведение этих функций.
в Windows тоже можно подменить любую API функцию, но в PalmOS этот механизм упрощен и офиально поддерживается на уровне системы.
Рассмотрим на пример что происходит при открытии файла:
при вызове DmOpenDatabase (открытие файла) вызывается функция с номером sysTrapDmOpenDatabase в специальной таблице указателей. Этот механизм называется - Palm OS trap dispatch mechanism – т.е. когда вызывается функция то на самом деле приложение обращается к trap dispatch механизму и просит его вызвать такой-то номер функции (а параметры передаются в стеке). Эту таблицу указателей можно спокойно изменять с целью подмены функций.
Подменить системную функцию может любое приложение (например CyrHack, оно видно в системе как приложение но подменяет ряд функция для русификации PalmOS). Но есть еще специальный вид приложений для PalmOS – это Хаки (от слова hach, а фициальное название System Extention), это проложения которые созданы по спецификации HackMaster API (независимый стандарт). Это стандарт который облегчает создание Хаков, а так-же делает более безопасным их присутствие в системе. Согласно этому стандарту за всеми хаками в системе следит Менеджер Хаков. Это обычное приложение в котором можно посмотреть сисок всех хаков, настроить их, и активизировать.
Программирование хаков требует более глубокого знания системы.
5. Пример Разработки Приложения для PalmOS
Рассмотрим пример простого приложения - example1.prc(1,5кб) оно состоит из одной формы. На Форме расположена кнопка , надпись, и текстовое поле, к форме прикреплено меню . При нажатии на кнопку появляется сообщение. Проект приложения состоит из 3х файлов:
Example1.c – исходный код на языке С.
Example1.h – имена и номера елементов формы
Example1.rcp – описание ресурсов приложения (форма, меню, кнопка, диалог сообщения).
файл example1.c
#include <PalmOS.h>
#include "hw.h"
static FormPtr gpForm;
Boolean Form1_HandleEvent(EventPtr event)
{
switch(event->eType) {
case ctlSelectEvent:
if ( event->data.ctlEnter.controlID == Button1)
FrmCustomAlert(Alert1, "MessageBox !", "", "");
break;
case menuEvent:
if ( event->data.menu.itemID == IDM_about)
FrmCustomAlert(Alert1, "This is Example", "", "");
break;
case frmOpenEvent:
gpForm=FrmGetActiveForm();
FrmDrawForm(gpForm);
break;
case frmCloseEvent:
FrmEraseForm(gpForm);
FrmDeleteForm(gpForm);
break;
default:
return false;
}
return true;
}
static Boolean ApplicationHandleEvent(EventPtr event)
{
FormPtr frm;
Boolean handled=false;
switch(event->eType) {
case frmLoadEvent:
frm = FrmInitForm (event->data.frmLoad.formID);
FrmSetActiveForm (frm);
FrmSetEventHandler(frm , Form1_HandleEvent);
handled = true;
break;
}
return handled;
}
UInt32 PilotMain(UInt16 launchCode, void *cmdPBP, UInt16 launchFlags)
{
EventType event;
UInt16 error;
if(launchCode==sysAppLaunchCmdNormalLaunch) {
FrmGotoForm(Form1);
do {
EvtGetEvent(&event,evtWaitForever);
if(!SysHandleEvent(&event))
if(!MenuHandleEvent(0,&event,&error))
if(!ApplicationHandleEvent(&event))
FrmDispatchEvent(&event);
}
while(event.eType!=appStopEvent);
FrmCloseAllForms();
}
return 1;
}
файл example1.rcp
#include "hw.h"
FORM ID Form1 AT (0 0 160 160) FRAME USABLE
MENUID MenuBar1
BEGIN
TITLE "Example 1"
LABEL "This is an example" AUTOID AT (10 10+5) FONT 1
LABEL "of small GUI programm" AUTOID AT (PREVLEFT PREVBOTTOM+5) FONT 2
FIELD ID IDB_Edit1 AT (PREVLEFT PREVBOTTOM+5 110 20) MAXCHARS 50 UNDERLINED FONT 2
BUTTON "Hello" ID Button1 AT (10 80 AUTO AUTO)
END
MENU ID MenuBar1
BEGIN
PULLDOWN "Help"
BEGIN
MENUITEM "About" ID IDM_about "A"
END
END
ALERT ID Alert1
INFORMATION
BEGIN
TITLE "Example 1"
MESSAGE "^1 ^2 ^3"
BUTTONS "Ok"
END
Файл example1.h
#define Form1 1000
#define Button1 1003
#define Edit1 1006
#define MenuBar1 1000
#define Alert1 1102
#define IDM_about 1001
#define IDB_Edit1 1002
6. Литература:
История ( калькуляторов, ноутбуки, КПК, перья )
http://www.geocities.com/SiliconValley/1061/calcolle.htm - история калькуляторов в СССР
http://www.taswegian.com/MOSCOW/soviet.html - история калькуляторов в СССР
http://www.geocities.com/oldcalculators/timeline.html
http://www.pencomputing.com/palm/
http://www.rskey.org/master.html
http://www.i-m.de/home/compmuseum/taschcom/index.htm
http://amug.org/amug/sigs/newton/nanug/PenReport/NewPenCom.html - очень класный сайт по истории ПДА ,
http://www-2.cs.cmu.edu/~amulet/papers/uihistory.tr.html
http://users.erols.com/rwservices/biblio.html
http://www.cadcamcae.lv/arch/n3.htm
http://www.rulabinsky.com/cavd/text/chap09-4.html
http://www.osp.ru/os/1995/05/33.htm
http://www.cross-edu.ru/proect/Inf/erchov.html
http://educate.si.edu/scitech/carbons/1980.html
КПК ( в основном Palm)
http://www.palmq.ru/ | Таблица по моделям Palm, Visor |
www.handy.ru , http://palm.v-lazer.com, www.hpc.ru , www.palm.com.ua , www.palm.km.ru , http://www.enlight.ru/pilot/ , www.pda1.ru , www.mypalm.ru, | Обзорные сайты, софт, конференции, факи … книги |
http://www.handspring.com/products/sbmodules/ | Модули расширения для КПК Visor/ |
http://www.opennet.ru/palm.shtml | На русском инфо о КПК палм. |
http://directory.google.com/Top/Computers/Systems/Handhelds/Palm_OS/ | Раздел ссылок по PlamOS в каталоге Google. |
Таблицы по устройствам:
http://www.enlight.ru/pilot/info1.html -
http://palm.v-lazer.com/text.phtml?fl=compare
http://www.palmos.com/dev/tech/hardware/compare.html
http://www.enlight.ru/pilot/choose.html - cool table on rus
http://palm.v-lazer.com/text.phtml?fl=acquaint - znakomstvo s PPC
http://www.airport.sakhalin.ru/ospru/pcworld/1998/11/38tab.htm - keyb PDA and non keyb
http://computorg.ixbt.com/computers/hpc.shtml
http://www.ixbt.com/portopc/pda-describ/descriptions.shtml - models of firms
http://www.palmy.ru/ - wince psion palm
http://www.palmq.net/sections.php?op=viewarticle&artid=21 - Springoard devs
(1) Программирование
http://goanna.cs.rmit.edu.au/~winikoff/palm/dev.html
http://www.cyberport.com/~tangent/palm/faq/
http://www.palmopensource.com/ - много исходников по разным темам
http://www.massena.com/darrin/pilot/tanda.htm
http://www.pdaprogramming.com/old/palmos/sources.html
http://spider.macomnet.ru/docs/PalmOS/palm_developers_guide/
http://home.hetnet.nl/~tonicor/palm/tutorial/uk/index.htm
http://www.multimania.com/pbriol/palmos/gcc.html
http://oasis.palm.com/dev/kb/browse.cfm?type=1
http://www.kadak.com/html/kdkp1010.htm - ядро PALMOS !!
http://pdasecurity.chat.ru/main.html - взлом софта под палм
http://palm.x-a-o-c.ru
все информация была найдена с помощью www.google.com