RSS    

   Реферат: Карманные ПК, Операционная система 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 механизму и просит его вызвать такой-то номер функции (а параметры передаются в стеке). Эту таблицу указателей можно спокойно изменять с целью подмены функций.

Подпись: X-master – Менеджер Хаков. ( клон HackMaster’а ,)



Подменить системную функцию может любое приложение (например 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


Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

Обратная связь

Поиск
Обратная связь
Реклама и размещение статей на сайте
© 2010.