refera (Карманные ПК, Операционная система PalmOS), страница 7

2016-07-31СтудИзба

Описание файла

Документ из архива "Карманные ПК, Операционная система PalmOS", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "refera"

Текст 7 страницы из документа "refera"

Меню создается в файле ресурсов как и формы, а при описании формы можно указать какое меню использует форма. Каждая строка меню представлена текстом и командой(номер) которая будет послана приложению

- для быстрого доступа к командам из меню приложение может использовать Command Toolbar для того чтобы вставить туда пиктограммы наиболее частых команд

Ограничения Palm GUI:

  1. Для элементов интерфейса отсутствует такое понятие как Disabled.

  2. Меню не всегда видно на экране.

  3. Отсутствуют: StatusBar, TAB control, Контекстные меню (нужно делать самому),

  4. Нет контекстной помощи , подсказок (ToolTips). В PalmOS каждый диалог может иметь свой HELP диалог, который открывается поверх старого если кликнуть на ?

Интерфейс можно создавать динамически , а также создавать нестандартные элементы, но это довольно сложная задача.

При работе с fields (editBox) приходится сталкиваться с непривычными моментами, например: многострочному полю можно установить текст по FldSetTextHandle(filed , Handle) после этого о Handle можно «забыть» т.к. им управляет сам editBox. Получить его обратно можно по FldGetTextHandle но чтобы он стал полностью вашим нужно еще сделать FldSetTextHandle(filed , NULL). Иначе Handle нельзя удалять. Аналогичная комбинация действий в Windows выглядит по другому , SetWindowText копирует текст к себе в буфер, и после этого оригинальный буфер ни как не привязан к editBox‘у – его можно удалять, а получение текста обратно не накладывает никаких ограничений.

Подобные тонкости являются частью стратегии управлением памяти, к ним быстро можно привыкнуть (после WinAPI).

Графика

В PalmOS также существует набор функций для работы с простейшей графикой : точки, линии, круги, прямоугольники, заливка, инверсия, картинки. Функции из группы Window Manager также позволяют следить за состоянием Графики – устанавливать цвет пера, заливки, текущий шрифт. Для быстрой графики можно писать прямо в видео буфер.

PalmOS 4.0 поддерживает 1-, 2-, 4- 8 и 16-битовые цвета и оттенки а PalmOS 3.0 – 4 градации серого.

4.8.Сервис ОС

В этой главе я перечислю некоторые возможности PalmOS которыми пользуются все приложения.

В начале следует сказать о Системных Менеджерах ( Managers ) это компоненты ОС которые выполняют различные задачи, например DataBase Manager, Memory Manager.

Для программиста, менеджер это группа функций относящиеся к нему, первые 2ве-3 буквы имени функции - это абривиатура имени менеджера, например DmOpen, MmAloc. Если знать все префиксы то удобно читать исходный код программ .

Имя Manager

Префикс имени функций

Alarm Manager

Alm

Time Manager

Tim (Date*)

Sound Manager

Snd

System Manager

Sys

Form Manager

Frm

Для более детального изучения Менеджеров обязательно нужно прочитать соответствующий раздел в «Palm OS® Programmer's Companion vol. 1» (на сайте palm.com) , документация написано хорошо , также я рекомендую всем программистам которые перешли на PalmOS с др. системы прочитать 2 главу «Good Design Practices », это обзор наиболее важных моментов для PalmOS приложения, эту главу нужно читать несколько раз.

Итак «Good Design Practices» - must read всем программерам под Палм.

(1)System Features

Аналог переменных окружения в ДОС (типа PATH, SET значения ), т.е. глобальное значение (только 4 байта )которое можно установить и до полного ресета они будут установлены. В PalmOS есть системные значения типа версии ОС - sysFtrNumROMVersion, или версии библиотеки

при написании приложений нужно проверять версию ОС , т.к. программа может использовать функции которых нет в старых верисиях.

Устанавливается или считывается Feature с помощью CrID (кто создал этот фтр). Для получения системных Feature в качестве CrID используется sysFtrCreator. Этим сервисом удобно пользоваться если необходимо хранить какие ни будь 2-3 числовых настройки, или если функции доступа к файлам временно недоступны (например из хаков)

Preferences

Аналог реестра в Windows. Это общий файл для хранения настроек приложения( PrefGetAppPreferences). так-же Есть системные Preferences - там хранятся значения типа формата даты, времени ед. измерения PrefGetPreference(prefTimeFormat )

(2)Звук

SoundManager позволяет генерировать простые сигналы, разной частоты и длительности.

PalmOS, начиная с версии 3.5 поддерживает воспроизведение стандартных MIDI-звуков.

(3)Notifications

Используя Notification Feature Set приложение может получать различные уведомления о системных событиях. Notifications это те-же launch code. Уведомления могут получать не только приложения но и библиотеки и хаки (см. хаки).

вставка/извлечение доп. Модуля, удаление файла, изменение настроек экрана, сети, времени, подключение/откл. от сети, спячка, ресет, синхронизация.

(4)A ttentions and alarms

Приложения может поставить «будильник» для себя, когда время подойдет то Palm сообщит приложению что время пришло, если приложение закрыто то PalmOS запустит его. Attention Manager может не запускать приложение, а только показать диалог с сообщением от этого приложения, и если пользователь захочет то может отложить это событие на пару минут.

Reset, и Жесткий Reset

Приложение может самостоятельно делать 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

#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

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5168
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее