Введение в Symbian OPL: Статьи о Psion

Введение в Symbian OPL

Автор: Игорь Новиков

За мобильными устройствами, бесспорно, будущее. Представляете - возможности современного ПК внутри устройства, умещающегося в кармане пиджака. Но, простите, - возразит скептик, - соглашусь, что можно добиться соответствующего быстродействия и нарастить объем памяти, но размеры экрана никогда физически не удастся "втиснуть" в спичечный коробок. Ответ прост, все дело в технологиях. Ведь можно же представить, что повсюду установлены специальные просмотровые экраны, как сейчас банкоматы, и любой желающий сможет, подключив к ним свой смартфон или коммуникатор по связи Bluetooth, загрузит свой карманный ПК "на полном экране".
Мы стоим на пороге появления новой, нарождающейся ниши для программных разработок. Мобильное чтение электронной почты, просмотр новостей, репертуаров театров и кино, заказ билетов, экскурсии по городу, поиск оптимального маршрута, индивидуальная настройка интерфейса с учетом языка, цвета и т.д. и т.п. - это только первое, что приходит на ум.
Одним из лидеров этой технологии является компания Symbian. Ее операционная система EPOC - это платформа, созданная "с нуля" и специально предназначенная для применения на мобильных устройствах - коммуникаторах и смартфонах. С точки зрения программных интерфейсов в ней предусмотрена поддержка для трех языков: Java, C++ и OPL. В этой статье будут рассмотрены основные возможности Symbian OPL (Organiser Programming Language) - языка для быстрой разработки программ из клона BASIC. Исторические корни OPL берут начало в 1986 г., когда и была выпущена модель Symbian Organiser II. Начиная с этого устройства, поддержка OPL традиционно предоставляется в остальных выпускаемых моделях. Помимо этого, создано и успешно применяется огромное множество общедоступных и коммерческих OPL-программ.
Средства разработчика программ на языке OPL можно получить с сайта Symbian в виде инструментального пакета EPOC Release 5 OPL SDK. Он содержит системные компоненты, средства разработки, эмулятор EPOC-машины для платформы Windows, документацию и большой набор необходимых примеров.

OPL-программы

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

Типы переменных

В языке OPL могут использоваться переменные следующих типов: integer (например, 32768), long integer (10000000), floating-point (15.4), string ("текстовая строка"). Тип конкретной переменной указывается с помощью соответствующего символа, расположенного в конце имени переменной: % - integer, & - long integer, $ - string, без дополнительного символа - floating-point.
Минимальные и максимальные значения для всех числовых типов задаются в специальном системном файле Const.oph, где представлены основные константы, используемые в системе. В этом же файле заданы константы, играющие роль логических переменных:

const KTrue%=-1
const KFalse%=0
Выбор разработчиком конкретного типа, который лучше подойдет для того или иного случая, зависит от специфики данных, которые предполагается сохранять в этих переменных, а также от операций, производимых над ними.

Построение OPL-программ

Любая программа на OPL строится по модульному принципу. Она состоит из главного файла (модуля), с которого начинается процедура выполнения программы, и нескольких дополнительных, в большинстве случаев, стандартных файлов, вызываемых из главного в соответствии с логикой программы.
Структурно программа подразделяется на процедуры, выполняющие определенные специфические функции. Для их задания используется пара из ключевых слов PROC и ENDP. Выполнение программы всегда начинается с первой строки модуля. Поэтому если в модуле присутствует несколько процедур, то первая среди них по порядку будет головной в модуле, вне зависимости от ее имени.

PROC proc$:(name$)
    ...
    RETURN "Hello"
ENDP
Вслед за ключевым словом PROC указывается имя процедуры (оно должно оканчиваться двоеточием) и список передаваемых параметров (с указанием типа переменных). Если после завершения процедуры возвращается некоторое значение с помощью команды RETURN, то его тип должен быть указан в имени процедуры (proc$:).
Выполнение программы производится построчно, от первой строки к последней, вплоть до ключевого слова ENDP. Каждая команда помещается на отдельной строке. Можно также расположить несколько команд на одной строке, если отделить их друг от друга пробелом с последующим знаком двоеточия.

CLS : PRINT "hello" : GET
В начале процедуры или программного модуля обычно даются определения используемых переменных. Предусмотрены следующие варианты ключевых слов: LOCAL - эти переменные доступны только в текущей процедуре; GLOBAL - эти переменные доступны для текущей и всех процедур, вызываемых из нее (для всех уровней вложенности); CONST - глобальные переменные доступны для всех процедур проекта.

LOCAL x,str$,z% 
Для подключения дополнительных программных средств используется команды INCLUDE (ввод определений для прототипов процедур и константы) и EXTERNAL (задание определений для внешних процедур). Например,

INCLUDE "const.oph"
EXTERNAL ExtnProc:(long&)
Основные алгоритмические конструкции языка OPL

В OPL имеются разнообразные средства для реализации различных алгоритмов вычислений:
- организация циклов;
- ветвление процедуры вычислений;
- принудительный переход по метке.

Организация циклов

С помощью структурных команд DO...UNTIL и WHILE...ENDWH можно управлять цикличностью выполнения команд.
- DO...UNTIL осуществляет повтор команд до тех пор, пока сохраняется истинность заданного условия;
- WHILE...ENDWH осуществляет повтор команд, пока истинно заданное условие.
Например,

a%=10     REM граница для числа повторов
DO
    ...
    a%=a%-1
UNTIL a%=0    REM проверка истинности условия

Организация ветвления в процедуре вычислений

Ветвление в процедуре вычислений - это одна из широко используемых форм организации алгоритмов Она встречается, когда требуется произвести один из имеющихся вариантов вычислений в зависимости от текущих условий. В OPL для этих целей используется структура IF...ENDIF.

IF condition1    REM проверка истинности условия1
     ...
ELSEIF condition2   REM проверка истинности условия2
     ...
        :
ELSEIF conditionN   REM проверка истинности условияN
     ...
ELSE    REM в остальных случаях
     ...
ENDIF
Управление графикой

Современная программная платформа немыслима без графических средств. Однако для их реализации требуется привлечение значительных программных и аппаратных ресурсов. Поскольку EPOC-машины относятся к мобильным системам, применение мощных графических редакторов и использование многочисленных форматов графических файлов пока не настолько актуально для этой платформы. Тем не менее, по мере развития этой платформы количество предоставляемых графических инструментов неуклонно растет. К примеру, в версии OPL 5 были добавлены средства для работы с цветом.
В составе языка OPL имеются инструменты для создания графических примитивов и функции для обслуживания стандартных композиционных графических элементов: меню, диалоговых окон и панели инструментов.

Простая графика
OPL предоставляет в пользование разработчику функции для рисования линий и прямоугольников, изменения цвета областей, средства для отображения текста в графическом режиме с использованием стилей, возможность скроллинга рабочей области экрана и т.д. Перечень этих функций изложен в справочном руководстве по OPL.
Все размерности на экране выражаются в точках (points); часто называемых пикселями (pixels). Положение каждой точки на экране определяется двумя координатами: dx% (расстояние вправо от левого края экрана) и dy% (расстояние вниз от верхнего края экрана). Также в OPL реализовано понятие текущей точки на экране, что позволяет выводить линии и фигуры координировано между собой.

PROC lines:
    gAT 180,80     REM задать текущую точку на экране
    gLINETO 300,80     REM отобразить линию из текущей точки 
    GET         REM до точки со смещением (300,80)
ENDP
Перечислим некоторые из реализованных функций для рисования:
- gBUTTON: отображение кнопки с надписью и изображением в одном из ее возможных состояний;
- gBORDER, gXBORDER: рисование 2-х/3-х мерных границ с выбранными атрибутами;
- gINVERT: переворот указанной области экрана;
- gCOPY: копирование прямоугольной области на экране в новое положение;
- gSCROLL: скроллинг заданной области экрана в выбранном направлении;
- gPOLY: отображение многоугольников произвольной формы;
- gCIRCLE, gELLIPSE: рисование окружности или эллипса с заполнением выбранным цветом;
- gSETPENWIDTH: изменение толщины пера для рисования.

Обслуживание графического интерфейса программ

Разработчик имеет возможность реализовать в OPL-программах графический интерфейс управления, аналогичный по стилю стандартным программным компонентам EPOC-машин. К этим инструментам относятся:
- создание меню для запуска команд и настройки параметров;
- использование диалоговых окон для ввода типовых данных: числа, имена файлов, даты, время и т.д.;
- обслуживание экранных сообщений текущего статуса обработки, например: вывод сообщения "Busy".

Создание меню

Меню служит удобным инструментом для вызова команд в OPL-программах. Его реализация требует последовательного выполнения следующих операций:
1) Инициализация нового меню с помощью команды mINIT;
2) Задание отдельных пунктов меню с помощью команд mCARD и mCASC;
3) Вызов созданного меню для отображения на экране с помощью функции MENU.

После этого пользователь сможет выбирать нужные команды для запуска с помощью клавиш управления курсором или пера. При отказе от работы с меню путем повторного нажатия клавиши Menu или Esc будет происходить автоматическое удаление выведенного меню с перерисовкой расположенной под ним области экрана. Технология меню, созданного средствами OPL, ничем не отличается от того, что предоставляется стандартными программами.
Приведем пример для иллюстрации процедуры использования меню:

PROC start%:
    LOCAL k%,h$(9),a$(5)
    h$="octa"              REM "горячие" клавиши меню
    WHILE 1
        k%=GET       REM ожидание ввода
        IF k%=$122    REM нажата клавиша Menu
            mINIT
            mCARD "File","Open",%o,"Close",%c
            mCARD "Help","Content",%t,"About",%a
            k%=MENU
            IF k% AND (LOC(h$,CHR$(k%))<>0)    REM проверка нажатия "горячей" клавиши
                a$="proc"+CHR$(k%)    REM построение имени функции
                @(a$):    REM запуск proco:, procc:, ...
            ENDIF            
        ELSE            REM нажата другая клавиша
            RETURN k%
        ENDIF
    ENDWH
ENDP
Создание диалогового окна

Обслуживание диалоговых окон в OPL во многом похоже на работу с меню. Для их применения также требуется последовательно выполнить следующие операции:
1) Инициализировать с помощью команды dINIT новое диалоговое окно;
2) Последовательно задать каждую строку диалогового окна, выбрав соответствующую команду для ее обработки. Например, dEDIT предоставляет возможность редактировать строку ввода, dDATE - отображать даты и т.д.;
3) Отобразить диалоговое окно на экране, вызвав функцию DIALOG. Возвращаемым результатом является число, указывающее на текущую строку в момент нажатия Enter, или 0 при нажатии клавиши Esc.

PROC login:
      LOCAL n$(30),pw$(16)
      dINIT "Вход в систему"    REM Инициализация диалогового окна 
      dEDIT n$,"Name:",15     REM Поле ввода для имени пользователя
      dXINPUT pw$,"Password:"    REM Защищенное поле ввода для пароля
      RETURN DIALOG              REM Отображение диалогового окна
ENDP
Также предоставлены команды для реализации других стандартных элементов управления: переключатели (dCHOICE), флажки (dCHECKBOX), метки (dTEXT) и др.

Панель инструментов

Все OPL-программы могут использовать модуль Z:\System\Opl\Toolbar.opo, расположенный в постоянной системной памяти. Он служит для обслуживания стандартного окна панели инструментов, содержащего заголовок, четыре кнопки и пиктограмму часов.
Symbian OPL - язык для быстрой разработки программ для мобильных устройств: картинка #1 (22598 байт)
Спецификация этого интерфейса содержится в файле Z:\System\Opl\Toolbar.oph. Поэтому в начале исходного текста многих OPL-разработок вставляется строка
INCLUDE "toolbar.oph"
Более подробное описание по обслуживанию панели инструментов дано в справочном руководстве.

Управление базами данными

В OPL предоставлена возможность хранить информацию в организованном виде - базах данных (аналогичных той, которую использует программа Data). Также имеются специальные инструменты для эффективного извлечения и обработки сохраненной в них информации. Это реализуется с помощью системы управления реляционными БД (СУБД), поддерживающей стандартизированный язык SQL для выполнения запросов.
Реляционные данные хранятся в виде таблиц, содержащих наборы записей из одного или нескольких полей с данными. Все поля имеют уникальные имена, одинаковые для всех записей в пределах таблицы. OPL позволяет:
- создавать новый файл БД или таблицу (команда CREATE), открывать (OPEN, OPENR), копировать (COPY), удалять (DELETE) и изменять название (RENAME) существующего файла;
- добавлять новые записи в БД (INSERT), изменять ее содержимое (MODIFY) и удалять записи (ERASE).
Сервис обслуживания БД поддерживает интерфейс доступа к данным через выборки (views). Допускается одновременное открытие до 26 различных выборок, каждая из которых определяется своим логическим именем - от A до Z.

OPEN "people SELECT name,number FROM phoneBook ORDER BY name ASC, number DESC",D,nm$,num%
В этом примере показано, как открыть таблицу phoneBook, расположенную в базе данных people и получить выборку D, содержащую строковое поле name (D.nm$) и числовое поле number (D.num%). Записи в выборке D будут упорядочены в возрастающем порядке по значению поля name, а для записей с одинаковым значением поля name - в убывающем порядке значений number.
Мощность реализованного механизма обслуживания баз данных проявляется также в наличии реализованной технологии транзакций. Она предоставляет возможность вносить изменения в базу данных поэтапно с возможностью отката в случае возникновения ошибок или с учетом алгоритма обработки. Кроме того, использование механизма транзакций позволяет повысить быстродействие работы с базами данных.
Для осуществления транзакций используются следующие команды:
- команда BEGINTRANS начинает транзакцию по текущей выборке. Перенос всех изменений в базу данных осуществляется только после выполнения команды COMMITTRANS.
- Команда COMMITTRANS инициирует процесс завершения транзакции и перенос всех внесенных изменений в БД;
- Команда ROLLBACK отменяет запущенную транзакцию над текущей выборкой. Все изменения, внесенные в нее после выполнения команды BEGINTRANS, отменяются;
- Для проверки, является ли текущая выборка в состоянии начатой транзакции, используется команда INTRANS.

Другие возможности обслуживания баз данных, реализуемые в языке OPL, а также спецификация языка SQL могут быть изучены по справочному руководству.

Обработка ошибок

Как любой современный язык, OPL предоставляет специальные программные средства для обработки ошибок, возникающих на стадии выполнения. Если эти средства не используются, то при обнаружении ошибки подключается встроенный механизм OPL. Выполнение программы прерывается и на экран выводится соответствующее сообщение.
Symbian OPL - язык для быстрой разработки программ для мобильных устройств: картинка #2 (10353 байт)

Для того чтобы избежать такого развития событий, в программу вставляются специальные команды, позволяющие предупреждать о появлении ошибок или осуществляющие заданные действия для их предотвращения. Для этих целей в OPL имеются следующие инструменты:
1) TRAP - отключает встроенный механизм обработки ошибок для той команды, перед которой он вставлен. Например, прервать обработку файла в случае возникновения ошибки при его открытии можно следующим образом:

TRAP OPEN "TestFile",A,a$     REM Открытие файла с запретом вывода сообщений 
e%=ERR                         REM встроенного механизма обработки ошибок
IF e%                             REM Проверка отсутствия ошибок при открытии файла
    ...
ENDIF
2) ERR, ERR$ и ERRX$ - позволяют выяснить, какая ошибка произошла. Команда ERR выдает числовой код последней ошибки (или 0, если ошибок не обнаружено). Функция ERR$() позволяет получить строковое описание ошибки с заданным номером. Функция ERRX$() дает развернутое описание (как оно отображается встроенным механизмом обработки ошибок)

3) ONERR - устанавливает собственную процедуру обработки ошибок. Это условие будет действовать до выполнения команды ONERR OFF.

PROC First:
ONERR label    REM Основная процедура
...
RETURN
label::
...     REM Обработка ошибок
ENDP
4) RAISE - искусственное моделирование ситуации возникновения ошибки.

OPX-модули

Возможности создаваемых OPL-программ могут быть расширены за счет использования функций, реализованных в дополнительных opx-модулях. Это - особые библиотеки, разработанные на языке C++ и предоставляющие свои функции во внешние программные файлы через специальные интерфейсы. Благодаря им, OPL-разработчики могут использовать системные механизмы платформы Symbian, не доступные из языка OPL. С точки зрения быстродействия эти процедуры ничем не уступают встроенным функциям OPL.
Многие системные возможности языка OPL также реализованы средствами opx-модулей. Назовем наиболее часто используемые модули: Bmp.opx - графика и спрайты; Contact.opx - механизм Contacts; Date.opx - функции для работы со значениями дат и времени; dBase.opx - управление базой данных; dbUtils.opx - дополнительные функции для работы с БД; Printer.opx - обслуживание форматирования текста и вывода на принтер; SysRam1.opx - дополнительные функциональные возможности языка OPL; System.opx - системные функции EPOC-машин.
Для примера покажем, как осуществить подключение модуля System.opx.
...
const KUidOpxSystem&=&1000025C
const KOpxSystemVersion%=$101
...
DECLARE OPX SYSTEM, KUidOpxSystem&, KOpxSystemVersion%
    BackLightOn&: : 1
    SetBackLightOn:(state&) : 2
    ...
END DECLARE
В заголовке блока DECLARE указывается имя модуля (без расширения ".opx"), его UID-параметр и номер версии. Сам файл сохраняется в системном каталоге \System\Opx\. Поиск файла при компиляции ведется в следующей последовательности просмотра логических дисков: от Y: до A:, а затем на Z:. Благодаря такому алгоритму, решается задача оперативной модернизации системных библиотек, если в них вносятся какие-либо изменения. Размещая исправленную версию файла, например, на съемный диск D:, можно модернизировать EPOC-машину без фактической замены реальных модулей, находящихся в постоянной памяти устройства.
Внутри блока DECLARE построчно перечисляются следующие значения: имя функции с указанием ее параметров и типа возвращаемого значения, а также (через двоеточие) ее порядковый номер внутри библиотеки, по которому производится вызов реальной функции.
Учитывая, что задание подобной спецификации для вызова opx-модулей, требует особого внимания, этот код часто переносится в отдельный файл, имеющий расширение .ohx. Они подключаются в исходном коде программ с помощью инструкции INCLUDE:

INCLUDE "system.oxh"
Взаимодействие EPOC-машины с прикладной OPL-программой

Когда пользователь собирается, например, завершить работу какой-нибудь программы, то он вызывает программу-менеджер System и выбирает там соответствующую команду. В системе инициируется событие, которое направляется этой программе. Та выполняет необходимые действия и завершает свою работу.
Наиболее простым способом для организации проверки появления какого-нибудь события является использование команды TESTEVENT:
...
t%=TESTEVENT
...
Однако применение этой команды не позволяет получить информацию о самом произошедшем событии. Более того, эта команда является обычной проверочной операцией и не переводит машину в режим ожидания. Обратите внимание, что эту специфику необходимо учитывать при проектировании любых программ для EPOC-машин. Ведь эти устройства относятся к разряду мобильных, и в любой момент пользователь может приостановить работу с ним, например, закрыв крышку. Поэтому для экономии ресурса батарей все программы должны находиться в режиме ожидания.
Более часто для отслеживания взаимодействий с EPOC-машиной используют другие команды. GETEVENT32 реализует синхронное ожидание события. Это означает, что программа ожидает получения ответа на отправленный запрос, прежде чем она начнет выполнение следующей команды. Другая команда - GETEVENTA32 - реализует асинхронное ожидание.

GETEVENT32 ev&()
GETEVENTA32 status%,ev&()
Команда GETEVENTA32 имеет дополнительный параметр, status%, в котором сохраняется код возврата при получении сообщения о событии. Другой параметр идентичен для обоих вариантов.
В массив ev&() помещается описание произошедшего события. Его первое значение - ev&(1) (часто для удобства вместо значения используется константа KEvaType%=1) - характеризует тип события. Значение ev&(2) содержит параметр, где закодировано время происхождения события. Значения остальных элементов массива ev&() зависят от конкретного события.
Для того чтобы узнать, какое именно событие произошло, применяется технология маскирования. Например, для отбора событий, связанных с нажатием клавиши на клавиатуре, задается следующее условие:

IF (ev&(KEvAType%) AND KEvNotKeyMask&)) = 0      rem отбор событий, связанных с 
                                                    rem нажатием клавиши на клавиатуре
    key& = ev&( KEvAType%)    rem код нажатой клавиши
    ...
ENDIF
В тех случаях, когда EPOC-машина требует от программы произвести замену файлов или закрытие самой программы, то она отправляет специальную команду. Это событие распознается в программе следующим образом:

IF evType&=KEvCommand&     rem Отбор команд EPOC-машины
    command$=getcmd$    rem Получение команды, которую необходимо предпринять
    if left$(command$,1)="X"     rem Команда "Закрыть текущий рабочий файл (если 
        stop     rem имеется) и завершить выполнение программы
    endif
ENDIF
Используя константы, предоставленные в файле const.oph, можно настроить алгоритм работы программы на все предусмотренные события, которые инициализируются пользователем или EPOC-машиной в процессе работы.

Общие требования к прикладным программам

Принято считать, что для удобства применения программ в них должны быть реализованы следующие функциональные возможности.
- Все используемые программы должны иметь стандартную реакцию на параметры запуска и команды обслуживания из системного менеджера;
- Все программы должны обеспечивать создание и обслуживание команд собственной версии панели инструментов;
- Все прикладные программы должны сохранять служебные файлы (кроме документов) в "прикладном" каталоге, специально выделенном для каждой из них.

Создание прикладной разработки

Для того чтобы сделать не просто утилиту, а полномасштабную прикладную разработку, необходимо ввести в начале OPL-файла блок APP... ENDA. Например:
...
CONST KUidApp&=&50000000    REM это значение должно быть зарезервировано для этой программы!
APP SampApp, KUidApp&
ICON "OplPrNm.mbm"
CAPTION "OplProgName",1       REM KLangEnglish% английское название
CAPTION "OplProgName",16    REM KLangRussian% русское название
FLAGS 1
ENDA
...
Первый параметр в заголовке блока (SampApp) - имя программы для языка, принятого по умолчанию на рабочей EPOC-машине. Обратите внимание, оно задается без кавычек. Второй параметр (KUidApp&) задает уникальный идентификатор UID для разрабатываемой программы. Необходимо чтобы каждая из используемых на конкретной EPOC-машине программ, имела свой уникальный UID. При личном использовании программы ее параметр UID можно контролировать самостоятельно и использовать любые значения от &10000000 до &0fffffff. Однако для тиражируемых программ потребуется обратиться в соответствующую службу Symbian, чтобы получить официально выделенное значение UID.
Внутри блока APP... ENDA задается следующая информация: название разработки для различных языков (CAPTION); используемые пиктограммы (ICON) и параметр FLAGS. Параметр CAPTION отменяет название, заданное в заголовке блока APP, и задается для тех систем, где планируется использовать данную программу. Параметр ICON указывает на файл, имеющий графический формат MBM (multi-bitmap file, также известный как файл пиктограмм EPOC). Он содержит одну или несколько пиктограмм, а также их маски для учета прозрачности. Эти картинки используются для отображения данной OPL-разработки на панели Extras EPOC-машины, а также как пиктограммы для создаваемых ею документов.
Параметр FLAGS может принимать значение 1 или 2. В первом случае это означает, что данная разработка может создавать собственные файлы, и ее название отныне будет появляться в списке программ, выводимом при создании нового файла из системного приложения-менеджера System. Если параметр равен 2, то данная разработка не будет перенесена на панель Extras.

Разработка и отладка OPL-программ

Разработку OPL-программ можно осуществлять непосредственно на карманном ПК. Однако этим способом обычно создают только самые простые программы. Например, утилиту для пересчета курса обмена валюты. В остальных случаях более целесообразно использовать эмулятор EPOC. Эмулятор - специальная программа, которая практически полностью воспроизводит рабочую среду EPOC-машин на платформе Windows. Она входит в состав OPL SDK и позволяет осуществлять разработку, отладку и тестирование EPOC-программ, написанных на языке C++, Java или OPL. После завершения разработки в среде эмулятора остается только провести окончательное тестирование программы на целевой EPOC-машине, чтобы убедиться в отсутствии побочных эффектов.
Процесс разработки начинается с того, что исходный код программы вводится как обычный текст в редактор Program. При этом разработчик параллельно имеет под рукой всевозможную документацию, примеры кода, возможность общения с технической службой поддержки разработчиков через Symbian Developer Network и т.д.
Далее следует этап компиляция - находясь в редакторе программе, выбирается в меню команда Translate. Если на этом этапе обнаруживаются ошибки, то на экран выводится соответствующее сообщение, и разработчик должен внести необходимые исправления в исходный текст программы. Если ошибок не обнаружено, то программа транслируется в отмаркированный (tokenized) файл, который может быть интерпретирован как исполняемая программа EPOC-машины. Этот файл получает стандартное расширение .opo. Благодаря тому, что код задан именно с помощью маркеров, а не в специфичных машинных кодах, .opo-программу можно исполнять без дополнительной ретрансляции как на целевой EPOC-машине, так и в режиме эмуляции в Windows.
Symbian OPL - язык для быстрой разработки программ для мобильных устройств: картинка #3 (16510 байт)

Если в исходном тексте программы задан блок APP...ENDA, то вместо .opo-файла в каталоге System\Apps создается отдельный подраздел, содержащий два файла: .app - собственно сама откомпилированная разработка и .aif (application information file) - файл, содержащий информацию из блока APP. Теперь программа становится доступной для запуска непосредственно из сиcтемного меню Extras EPOC-машины.
Symbian OPL - язык для быстрой разработки программ для мобильных устройств: картинка #4 (15903 байт)

Перспективы

В настоящее время зарегистрировано свыше 28 000 разработчиков по всему миру, занимающиеся разработкой на платформе EPOC. Создана сеть поддержки разработчиков Symbian Developer Network с предоставлением услуг технической помощи, поддержки и обучения. В 2000 г. была выпущена новая Технологическая модель версии 6 (Generic Technology) для ведения разработок на платформе Symbian. Это - новый этап в развитии мобильных устройств и создании новых программно-аппаратных решений.

© Игорь Новиков

Дата статьи: 6 апреля 2001 г

« Назад в каталог | Обсудить в конференции »
[На главную] [Обновления] [Новости] [Клуб] [Обзоры программ] [Советы] [Обзоры железа] [SIBO] [Конференция] [Статьи] [Базы] [Ссылки] [Поиск]