Программирование для карманных компьютеров
Шрифт:
Можно набрать в строке приглашения 2+3, а затем нажать клавишу Enter. На экран будет выведен результат. Убедившись, что обещанная мощная математика на месте, можно отправиться на сайт www.python.ru и загрузить книгу «Язык программирования Python», Г. Россум, Ф. Л. Дж. Дрейк, Д. С. Откидач и др.
Scheme
А это совсем другой язык и совсем другое программирование. В отличие от большинства привычных алгоритмических языков программирования, scheme (урезанный диалект языка Lisp) относится к языкам функционального программирования. Pocket Sheme, так же как и Pocket Python, вряд ли найдет применение непосредственно на Pocket PC, но идеален, как учебное пособие для желающих изучить этот язык.
Сайт разработчика располагается по адресу www.mazama.net/scheme/pscheme.htm.
Со страницы Download нужно загрузить соответствующий cab-файл, скопировать его на Pocket PC и установить.
После установки в каталоге \Program Files\Pocket Scheme будут размещены файлы pscheme.exe и pscmedit.exe. Файл pscheme.exe запускает интерпретатор sсheme в интерактивном режиме (рис. 7.14).
Файл pscmedit.exe запускает простой редактор текстов scheme-программ с элементарной поддержкой некоторых особенностей синтаксиса этого языка.
Запустив scheme, и, возможно, выполнив пару-другую функций, подсмотренных на рисунке, вы захотите разработать более содержательную программу. В рунете крайне мало информации о sсheme, но начальное представление можно получить, прочитав перевод руководства по адресу www.shounen.ru/docs/guile-ref. А если
DSForth
Форт – еще один «странный» язык. Если вам очень нравится программировать на очень низком уровне, если вы до судорог в пальцах хотите научиться создавать программы, при взгляде на которые программистов на других языках будет пробивать холодный пот, – Форт как раз для вас. В Форте почти все делается при помощи стека. Все введенные числа попадают в стек, чтобы сложить два числа их надо поместить в стек, результат операции тоже помещается в стек. Форт похож на очень сложный макроассемблер, а синтаксис его больше, чем у какого-либо еще языка схож с логикой организации машинных кодов.
Найти Форт для Pocket PC можно на сайте разработчика www.delosoft.com. Нужно загрузить файл ds2.ARM.CAB, скопировать его на устройство и запустить. После этого Форт будет установлен.
Запускать Форт придется в два этапа.
1. Сначала в каталоге \Program Files\Dsforth нужно запустить файл dsforth2.exe. Он выдаст одно сообщение (щелкните на кнопке OK), а затем через некоторое время он выдаст сообщение о том, что все сохранено успешно. Второе сообщение можно ждать долго. Если оно не появится примерно через минуту, нужно активировать список настроек, запустить инструмент управления распределением памяти, в списке запущенных программ найти сообщение от Forth и активизировать его.
2. После того как dsforth2.exe отработает, в папке Dsforth появится файл ds2c.exe. Это, собственно, и есть сам Forth. После запуска этого файла на экран будет выведен Forth в интерактивном режиме (рис. 7.15).
Сейчас самое время остановиться и вспомнить, что в Forth все операции описываются при помощи стека и обратной нотации, и если вы попытаетесь взаимодействовать с этой программой, как с любой другой средой в интерактивном режиме, ничего кроме сообщений об ошибках вы не получите.
Нужно зайти на сайт www.forth.org.ru, открыть раздел Литература и скачать все учебники. После этого нужно скопировать с Pocket PC на настольный компьютер файл ds2c.str. Это словарь. Читайте книги, сравнивайте те команды, которые находите в книгах со словами в словаре, и таким образом осваивайте этот странный, но увлекательный язык. Если вас не затрудняет чтение на английском, то стоит обратить внимание на страницу www.forth.org/tutorials.html.
К сожалению, встроенной справки для этого языка не существует. Разработчики отправляют программистов читать стандарт на английском языке, но на сайте www.forth.org.ru этот же стандарт есть на русском языке.
Утилиты с сайта www.rainer-keuchel.de
На этом сайте расположено множество утилит и языков программирования, портированных в Pocket PC из соответствующих программ GNU (свободного программного обеспечения). Соответственно, они бесплатны (это плюс) и обновляются тогда, когда у автора до них доходят руки (это минус).
Все программы, которые будут рассмотрены в этом разделе, загружаются либо из списка, расположенного на странице www.rainer-keuchel.de/wince/dirlist.html, либо из списка www.wince-devel.org/wince/dirlist.html.
Работа всех программ основана на библиотеках celib и cedialogs. Кроме этого, большинство программ требует некоторой конфигурации и записи ключей в реестр. По этой причине мы начнем знакомство с программами сайта с установки данных библиотек и описания некоторых утилит, используемых на рабочей станции для отладки и конфигурации Pocket PC.
celib и cedialogsНеобходимо загрузить файлы cedialogs-1.05-all-platforms.tar.gz, celib-3.13-dll-bin-all-platforms.tar.gz и распаковать их. С этой задачей прекрасно справляется WinZip. В каталог \Windows на устройстве Pocket PC нужно скопировать файл celib.dll из каталога wince-arm-pocket-wce300-release и файлы cedialogs.dll и cedialogsx.dll из каталога wince-arm-pocket-wce300.
Desktop toolsТеперь нужно загрузить и распаковать файл wince-desktop-tools.tar.gz. Поскольку эти утилиты будут использоваться на настольном компьютере, их надо скопировать в каталог, который будет доступен из интерпретатора команд Windows. Затем нужно запустить интерпретатор команд Windows. Для этого следут выполнить команду Пуск ? Выполнить, затем набрать cmd и нажать клавишу Enter.
Назначение и использование утилит расшифровывается в следующем списке.
? Файл cecopy.exe копирует файлы между Pocket PC и рабочей станцией. Формат команды достаточно прост: cecopy.exe <источник> <приемник>. Команда cecopy.exe се: \Windows\Alarml.wavрс: с: \ копирует файл Alarml.wav из каталога Windows на Pocket PC в корневой каталог на диске C: рабочей станции.
? Файл cedel.exe удаляет указанный файл на Pocket PC. Формат команды достаточно прост: cedel.exe <имя_файла>. Команда cedel.exe l.txt удалит файл l.txt в корневом каталоге Pocket PC.
? Файл cedir выводит в окно командного интерпретатора на рабочей станции содержимое указанного каталога на Pocket PC. Формат команды достаточно прост: cedir [-1] <имя_каталога>. Ключ -1 включает детализированный вывод. Команда cedir -1 \Temp\ выводит подробный список файлов в каталоге Temp. Корневой каталог нужно обозначать символом \.
? Файл ceexec.exe позволяет удаленно запускать указанную программу. Формат команды: ceexec.exe <имя_программы> <ключи_командной_строки>]. Команда ceexec.exe \Windows\calc.exe запускает калькулятор на Pocket PC.
? Файл cegetinfo.exe выводит на рабочей станции информацию о занятой памяти на рабочей станции.
? Файл cemkdir.exe создает каталог на Pocket PC. Формат команды: cemkdir.exe <имя_каталога>. Команда cemkdir.exe \MyTmp создает папку MyTmp в корневом каталоге Pocket PC.
? Файл cereg.exe вносит одну строку в реестр Pocket PC. Формат команды не так уж и сложен: cereg – к <ключ_реестра> – п <имя> – v <значение>. Команда cereg – k HKLMXEnvironment – n PATH – v \MyProg\bin добавляет в раздел реестра HKLM\ Environment ключ PATH со значением \MyProg\bin.
Утилита cereg.exe понадобится прямо сейчас. Для правильной работы библиотеки celib.dll в реестр необходимо добавить несколько значений. Поскольку cereg.exe добавляет только одну строку, проще всего будет создать выполняемый файл, который будет содержать вызовы cereg.exe для каждой строки. Код соответствующего командного файла приведен в листинге 7.1.
Листинг 7.1@echo off
cereg – k HKLM\Environment – n COMPUTERNAME – v Pocket
cereg – k HKLM\Environment – n EMACSDATA – v «\Storage Card\emacs\etc»
cereg – k HKLM\Environment – n EMACSDIR – v «\Storage Card\emacs»
cereg – k HKLM\Environment – n EMACSDOC – v «\Storage Card\emacs\etc»
cereg – k HKLM\Environment – n EMACSLOADPATH – v «\Storage Card\emacs\lisp»
cereg – k HKLM\Environment – n EMACSPATH – v «\Storage Card\emacs\bin»
cereg – k HKLM\Environment – n HOME – v «\Storage Card\Volkov»
cereg – k HKLM\Environment – n PATH – v «\Storage Card\bin»
cereg – k HKLM\Environment – n SHELL – v cmd
cereg – k HKLM\Environment – n TEMP – v \Temp
cereg – k HKLM\Environment – n TMP – v \Temp
cereg – k HKLM\Environment – n TMPDIR – v \Temp
cereg – k HKLM\Environment – n USERNAME – v Volkov
cereg – k HKLM\Environment – n UNIXROOTDIR – v «\Storage Card»Этот файл нужно сохранить с именем myreg.bat в том же каталоге, в котором находится файл cereg.exe. Теперь нужно запустить этот файл из окна командного интерпретатора. После некоторой паузы в окно вернется приглашение командной строки. Записи внесены в реестр.
ПРИМЕЧАНИЕ.
Конечно, имя пользователя, имя домашнего каталога и расположение других каталогов в вашем случае могут быть иными. Я использую Storage Card, чтобы экономить место в основной памяти.
Редактор EDЗагрузить файл editor-wince-arm-pocket-wce300.tar.gz, распаковать его, и файл editor.exe скопировать в каталог \Storage Card\bin на Pocket PC. Теперь можно его запускать. В вашем распоряжении появился простой и легкий редактор для редактирования текстов программ на разных языках (рис. 7.16).
Рис. 7.16.
Загрузить и распаковать файлы emacs-wince-all-platforms.tar.gz и emacs-wince-arm-xbuild-2.03.tar.gz. Затем нужно скопировать папки emacs, etc, home из emacs-wince-all-platforms в каталог \Storage Card на устройстве. Файл emacs.exe из emacs-wince-arm-xbuild-2.03 нужно скопировать в папку \Storage Card\emacs\bin на устройстве. Поскольку все необходимые данные в реестр уже внесены, то программу можно сразу запускать (рис. 7.17).
Внешний вид редактора тоже непривычен программисту, привыкшему к работе в Windows. Этот редактор тоже пришел на Pocket PC из Unix-систем. Стоит обратиться к документации, расположенной на странице, находящейся по адресу
Кроме этого, Emacs позволяет практически беспредельно расширять свою функциональность, но для этого надо изучить еще один язык программирования Emacs LISP. Он описан на странице http://www.gnu.org/software/emacs/emacs-lisp-intro/htmlmono/emacs-lisp-intro.html.
PerlPerl – один из самых мощных языков обработки информации и программирования для интернет-серверов и информационных систем. Его популярность обусловлена еще и тем, что для Perl существует огромное количество готовых наработок, модулей, скриптов практически на все случаи жизни.
Нужно загрузить файл perl-wince-arm-pocket-wce300.tar.gz, распаковать его и выполнить простую последовательность действий.
? Файл perl.exe нужно скопировать в папку \Storage Card\bin<$]interface> на устройстве.
? Файл perl56.dll нужно скопировать в папку \Windows на устройстве.
? Папку lib нужно скопировать в папку \Storage Card\usr на устройстве.
Теперь нужно открыть блокнот и набрать текст, приведенный в листинге 7.2.
Листинг 7.2@echo off
set perlexe="\Storage Card\bin\perl.exe"
set perllib="\Storage Card\usr\lib\perl5"
cereg – k «HKLM\Environment» – n «PERL5LIB» – v «%perllib%»
cereg – k «HKCR\.pl» – n "" – v «perlfile»
cereg – k «HKCR\perlfile» – n "" – v «Perl Script»
cereg – k «HKCR\perlfile\DefaultIcon» – n "" – v «%perlexe%,-1»
cereg – k «HKCR\perlfile\Shell\open\command» – n "" – v «%perlexe% %%1»Этот файл нужно сохранить с именем perlreg.bat в тот же каталог, где находится файл cereg.exe, после чего его нужно будет запустить.
На Pocket PC следует запустить редактор ED. Нужно создать файл me.pl, код которого приведен в листинге 7.3.
Листинг 7.3#! \bin\perl
$me = 5;
print $me;Этот файл нужно сохранить и скопировать его в корневой каталог устройства. Потом следует запустить командный процессор (cmd.exe в каталоге Windows), набрать в строке приглашения команду cd \Storage Card\bin, а потом команду perl me.pl.
Если перейти в корневой каталог Pocket PC, то можно найти там файл perl-stdout.txt. Если в нем написано число 5, то все установлено правильно и работает. После этого стоит посетить страницу www.perl.org.ru/documentation и прочитать все рекомендации по использованию языка Perl.
KaffeЭта программа представляет больше учебный и исследовательский, нежели практический интерес. Возможно, именно вы сделаете из нее полноценное приложение. Kaffe это Java-система, предназначенная для запуска и компиляции Java-программ.
Нужно загрузить файлы kaffe-common.tar.gz и kaffe-wince-arm-hpc-wce300.tar.gz, распаковать их и скопировать содержимое папок \kaffe-common\kaffe и \kaffe-wince-arm-hpc-wce300\kaffe в папку kaffe, созданную в корневом каталоге устройства.
Теперь нужно открыть блокнот и набрать в нем код, приведенный в листинге 7.4.
Листинг 7.4@echo off
set kaffedir_f=\kaffe
set kaffedir_b=\kaffe
set kaffexe=\kaffe\kaff.exe
cereg – k «HKLM\Environment» – n «KAFFEHOME» – v «%kaffedir_f%»
cereg – k «HKLM\Environment» – n «KAFFELIBRARYPATH» – v «%kaffedir_f%»
cereg – k « HKLM\Environment» – n «KAFFECLASSPATH» – v".; %kaffedir_f%\Klasses.jar"
cereg – k «HKCR\.class» – n "" – v «javaclass»
cereg – k «HKCR\javaclass» – n "" – v «Java Class»Нужно сохранить это файл с именем kaffereg.bat в тот же каталог, где находится файл cereg.exe, после чего можно запустить его.
Теперь о грустном. Сколько я ни пытался запустить хотя бы один jar-файл, это сделать мне не удалось. По этой причине не заработал у меня и OnBoard-компилятор kjc.jar. Тем не менее, java-программы можно запускать в этой среде. Для этого они должны быть скомпилированны с совместимостью java 1.2 и не содержать в себе классов JFC\SWING.
Можно привести соответствующий пример. Для его выполнения на рабочей станции должен быть установлен JDK с версией не меньше 1.2. В Блокноте нужно набрать код, приведенный в листинге 7.5.
Листинг 7.5import java.awt.*;
class Main extends Frame {
Main {
super("Draw Example ");
setBackground(Color.black);
setBounds(20,80,200,200);
show;
}
public void paint(Graphics g) {
Insets insets = this.getInsets;
int x = insets.left, y = insets.top;
int w = getSize. width-insets.left-insets.right;
int h = getSize. height-insets.top-insets.bottom;
g.setColor(Color.red);
while (w > 0 && h > 0) {
g.clearRect(x++, y++, w, h);
g.fillRect(x++, y++, w-2, h-2);
w – = 4;
h – = 4;
}
}
static public void main(String[] args) {
new Main;
}
}Нужно сохранить этот код в файле с именем Main.java в корневом каталоге диска C:. Теперь его нужно скомпилировать. Для этого следует открыть интерпретатор команд, перейти в корневой каталог диска C: и выполнить следующую команду:
javac main.java
Чтобы команда была выполнена, ваш компьютер должен знать путь к файлу javac.exe. Если в переменной PATH этого пути нет, то его надо набрать полностью. При успехе выполнение команды завершится без сообщений, а в корневом каталоге диска C: вы найдете файл Main.class. Это и есть java-программа. Теперь нужно скопировать файл Main.class в каталог kaffe на Pocket PC, запустить cmd.exe и перейти в корневой каталог устройства. Затем нужно выполнить команду:
kaff \kaffe\Main
Эта команда загрузит файл Main.class на выполнение. Результат работы программы показан на рис. 7.18.
Все остальное – в ваших руках. Вы можете писать программы на Java и выполнять их на Pocket PC. Также вы можете взять с сайта www.rainer-keuchel.de код kaffe и усовершенствовать его, добавив в него поддержку всех основных классов Java 2.
PGCC
Это полноценный On-Board С\С++ компилятор для Pocket PC. Как говорили древние римляне – «ничего, кроме хорошего». На самом деле это отлично сделанная российским программистом система. Загрузить сам компилятор можно с одного из указанных в начале главы сайтов.
После загрузки архива и его распаковки вы обнаружите в архиве три файла:
? pgcc.ARM.CAB – сама программа.
? cmd.arm.cab – интерпретатор командной строки от Microsoft.
? pocketconsole.arm.cab – интерпретатор командной строки от SymbolicTools.
Нужно скопировать их на Pocket PC и установить.
В корневом каталоге будет создана папка рдсс, содержащая в себе компилятор, необходимые библиотеки и пример их использования. Пример взят из Pocket PC SDK и практически без изменений компилируется под PGCC. Для того чтобы откомпилировать и запустить пример, надо войти в папку \pgcc\samp, и запустить файл menu.bat. Некоторое время программа будет компилироваться, и в каталоге \pgcc\samp\menu после компиляции можно найти файл menu.exe. После его запуска станет видно, как можно создавать сложное основное меню и разные виды контекстных меню.
Проанализировав файл menu.bat, вы поймете, в какой последовательности компилируется и собирается любой проект. Для дальнейшей работы нужно читать книги по C++ и страничку www.opennet.ru/docs/RUS/gcc. Кроме того, не забудьте оформить членство в группеСделав это, вы получите доступ к большому количеству разных примеров использования рдсс, утилит, а также сможете задать вопросы самому Виталию Пронькину, который и разработал эту среду.Языки и среды работы с Java
Начнем мы с обзора существующих виртуальных Java-машин, позволяющих запускать Java-приложения на Pocket PC.
Mysaifu JVM
Программа бесплатная, и потому недоделанная. Страница этой программы располагается по адресу www2s.biglobe.ne.jp/~dat/java/project/jvm/indexen.html.
Нужно загрузить файл jvm.ARM.CAB и установить его на Pocket PC. В каталоге \Program Files\Mysaifu JVM\jre\bin нужно найти файл jvm.exe и запустить его. На экран будет выведено окно (рис. 7.19).