Владимир Борисович Волков
Программирование для карманных компьютеров

http://msdn.microsoft.com/mobility/downloads/updates/default.aspx.
   2. На открывшейся странице Products & Updates найти ссылку на средство разработки eMbedded Visual Tools 3.0 – 2002 Edition и щелкнуть мышью на ней.
   3. Перейдя по этой ссылке, нужно нажать кнопку Download, располагающуюся в правой части страницы. Через некоторое время на ваш компьютер будет загружен файл с наименованием evt2002web_min.exe. Это самораспаковывающийся архив. При запуске этого файла будет отображено диалоговое окно, в котором нужно будет указать путь для распаковки архива. Каталог, в который вы хотите распаковать файлы, необходимо указать в поле Unzip To Folder, после чего следует нажать кнопку Unzip.
   4. После распаковки необходимо найти в соответствующем каталоге файл setup.exe и запустить его. После этого останется лишь следовать инструкциям программы установки, выбирая пункт Установить все.
 
   ПРИМЕЧАНИЕ.
   Поскольку файл evt2002web_min.exe достаточно объемный, а доступ в Интернет не всегда позволяет за один раз быстро выкачать большой файл, кажется логичным скачать этот файл при помощи какого-нибудь менеджера закачек. Но на веб-странице нет прямой ссылки на этот файл. Однако получить ее достаточно легко. В браузере нужно открыть исходный код страницы, на которой расположена кнопка Download. После этого нужно просто отыскать в исходном коде прямую ссылку на файл evt2002web_min.exe.
 
   После установки комплекта разработчика для Pocket PC 2002 необходимо загрузить и установить такой же комплект для более поздней версии Pocket PC 2003. Для этого нужно на странице Products & Updates найти ссылку на пакет eMbedded Visual C++ 4.0. После этого нужно произвести те же действия, что и для предыдущей версии пакета.
   Эти два комплекта позволят разрабатывать полноценные приложения для Pocket PC. Но у компании Microsoft есть еще одна новая технология, которая позволяет разрабатывать приложения для Pocket PC 2003. Эта технология носит наименование. NET. Чтобы создавать приложения, работающие на этой платформе. NET, необходимо использовать среду Visual Studio 2003. Увы, эту среду невозможно загрузить бесплатно с сайта Microsoft, однако ее можно купить у дилеров этой компании.
   Если вы не можете приобрести Visual Studio 2003, то это не значит, что программирование для. NET на Pocket PC закрыто для вас. Есть и другие средства разработки для этой платформы, о которых будет рассказано в следующих главах книги.

comp@piter.com (издательство «Питер», компьютерная редакция).
   Мы будем рады узнать ваше мнение!
   Подробную информацию о наших книгах вы найдете на веб-сайте издательства: http://www.piter.com.

http://www.msembedded.ru/processors.aspx.

Pocket PC с точки зрения программиста

Windows CE и Pocket PC

   Для программиста общение с устройством – это прежде всего общение с его операционной системой. Даже те программисты, которые пишут драйверы на языке ассемблера, машинных кодах или языке C, все равно пишут их для определенной операционной системы.
   Но ознакомившись с историей развития Pocket PC мы можем обнаружить, что с этими компьютерами связывают очень уж много названий операционных систем. В списке находятся Windows CE 2.11, Windows CE 3.0, Windows CE 4.0, Windows CE 4.1, Windows CE 4.2, Windows CE 5.0, Windows CE.NET, Pocket PC 2000, Pocket PC 2002, Windows Mobile 2003, Windows Mobile 2003 SE и Windows Mobile 5.0.
   Дело в том, что Windows CE – это модульная, настраиваемая в очень широком диапазоне операционная система, которая в своем чистом виде нигде не используется. Когда производитель создает устройство, то после окончательной компоновки всех комплектующих, определения установленных и подключаемых устройств, органов управления и всего спектра выполняемых функций, наступает этап сборки операционной системы. Из выбранной версии Windows CE создается операционная система для конкретного устройства. Эта операционная система практически собирается из модулей Windows CE как конструктор. В качестве отдельных деталей к ней добавляются модули, которые разрабатывает сам производитель устройства и, возможно, дополнительные приложения. Такая операционная система для Pocket PC в ее современном исполнении называется Windows Mobile for Pocket PC, а первые ее варианты назывались Microsoft Pocket PC. Версии Windows Mobile обычно меняются вместе с версиями Windows CE, из которых они собираются.
   В таблице 1.1 показано, как соответствуют друг другу поколения устройств и версии соответствующих операционных систем.
Таблица 1.1. Соответствие поколений устройств Pocket PC, версий Windows Mobile и Windows CE
   Нельзя не признать, что Microsoft остается верной своей давней традиции обратной совместимости. Начиная с версии Windows CE 3.0, подавляющее большинство программ, созданных для более ранних версий, запускается и на более свежих версиях OS. Практически все программы, предназначенные для Pocket PC 2002, без особых проблем запускаются на Pocket PC 2003 без перекомпиляции, если при их создании были использованы обращения только к документированным возможностям программных интерфейсов.
   Название Windows CE.NET является общим для всех версий Windows CE 4.x. Дело в том, что начиная с версии Windows CE 4.0, Microsoft объявила о включении в состав Windows CE своей новой технологии. NET в виде специального исполнения для встраиваемых устройств Compact Framework (CF). В версию Windows CE 4.0 CF была включена со статусом Beta, в версию 4.1 включалась окончательная реализация, а в версию 4.2 вошла уже. NET Framework service pack 2.
   Несмотря на то, что Pocket PC – маленький компьютер и выглядит почти как детская игрушка, программирование для него является вполне серьезным делом. Операционная система Windows Mobile (Windows CE) предоставляет программисту подмножество функций Win32 API и других программных интерфейсов, с которыми программисту приходится взаимодействовать на настольном компьютере.
   Достаточно простая схема, отображающая архитектуру операционной системы, приведена на рис. 1.1.
   Рис. 1.1. Схема архитектуры Windows Mobile для Pocket PC.
 
   Расшифровка терминов, использованных в этой схеме, приведена в следующем списке.
   OAL (OEM Adaptation Layer) – минимальное программное обеспечение, необходимое для того, чтобы стандартное ядро операционной системы начало взаимодействовать с устройством. Обычно OAL включает в себя код загрузки ядра и набор нестандартных драйверов.
   GWES (Graphics, Windowing, and Events Subsystem) включает в себя графический интерфейс устройства (GDI, Graphics Device Interface) и компоненты пользовательского интерфейса.
   Windows CE предоставляет программисту богатейший набор разнообразных API, позволяющий взаимодействовать со всеми устройствами и подсистемами OS.
   Core OS Interface отвечает за базовые операции операционной системы по управлению объектами ядра, памятью системы, сообщениями, системным временем, вызовами отладки, динамическими загружаемыми библиотеками.
   Блок DLL содержит процедуры управления загрузкой и выгрузкой динамических библиотек, а также вызовом функций из них. Интерфейс Fiber предназначен для создания потоков, управляемых «вручную». В блок Memory Management входят процедуры и функции для управления распределением памяти. Интерфейс Power Management предназначен для управления потреблением электропитания. Интерфейс Message Queue Point-to-Point позволяет с минимальным использованием ресурсов осуществлять обмен сообщениями между окнами, устройствами и ядром. Блок Process and Thread отвечает за создание процессов и потоков, реализацию и управление многопоточной моделью.
   Интерфейс Time обслуживет все системные потребности в определении времени, от получения и установки текущего системного времени до миллисекундного измерения временных интервалов. API ToolHelp используется для отладки, а API Pointer обеспечивает управление графическим курсором. Блок Stylus занимается организацией взаимодействия программы с командами, подаваемыми пользователем при помощи стилуса. Блок Authentication отвечает за управление безопасностью системы и занимается защитой от неавторизованного доступа. Он поддерживает механизмы авторизации и аутентификации, отвечающие протоколам NTLM и Kerberos. Блок Cryptography содержит механизм шифрования информации. Механизм опознавания систем, пользователей, приложений и сервисов, с которыми устанавливается контакт через сеть, управляется блоком Сertificates. Блок RAS API и Dial-Up Networking занимается установкой подключения к удаленному компьютеру, а через него к локальной или глобальной сети при помощи протокола PPP. В блоке Fonts содержится интерфейс управления системными шрифтами, а блок MLang отвечает за определение и преобразование текстовых ресурсов одной кодировки в другую. Интерфейс к функциям программно-организованной клавиатуры Pocket PC организован при помощи API Software-Based Input Panel (SIP API).
   Блок JScript 5.5 отвечает за поддержку одноименного скриптового языка общего назначения. Организация доступа к Active Directory Service реализована при помощи технологии Lightweight Directory Access Protocol (LDAP). Блок Multilingual User Interface (MUI) отвечает за многоязычный интерфейс пользователя. Он позволяет создавать приложения, которые могут переключать свой интерфейс с одного языка на другой. Очередь сообщений Message Queuing (MSMQ) позволяет приложениям обмениваться сообщениями в распределенных сетях. При помощи блока Network User Interface (NetUI) производится определение конфигурации сетевых и модемных подключений. В API Object Exchange Protocol (OBEX) входит набор функций, позволяющий устройствам обмениваться данными в упрощенном порядке через IrDA или Bluetooth.
   Набор интерфейсов для работы с хранилищем данных и реестром содержит в себе дополнительные функциональные блоки. В блоке Database реализована работа со встроенной базой данных Windows CE, представляющей собой легкую файловую базу данных. Она позволяет использовать элементарную функциональность по созданию, хранению, сортировке и доступу к полям записей. Блок File I/0 содержит набор функций и процедур доступа к файлам и каталогам, а также методы для их создания, удаления и переименования. API File Mapping позволяет связывать виртуальное адресное пространство процесса с определенной частью файла или целым файлом, давая возможность процессу получить доступ к содержимому файла через указатели, а также позволяя разделять доступ к файлу между несколькими процессами.
   При помощи File System Driver (FSD) файловая структура хранилища данных (например, карты памяти) встраивается в общую структуру файловой системы устройства. В API Registry содержится набор функций для работы с реестром. Информационная модель Pocket Outlook Object Model (POOM) позволяет использовать интерфейсы Pocket Outlook для организации пользовательской информации, которая имеет сходную структуру. Разработчик может использовать эту модель для хранения информации об адресх, контактах и расписании пользователя. API Windows Networking API/Redirector обеспечивает доступ к файловой системе на удаленном компьютере. Блок Virtual Private Networking позволяет объединять Pocket PC и настольный компьютер в единую сеть, а блок Waveform Audio отвечает за воспроизведение звуков. Поддержка протоколов HTTP и FTP и высокоуровневые функции работы с WinSock реализуются при помощи API Windows Internet Services (WinInet), в то время, как API Windows Sockets предоставляет доступ к разнообразным сетевым транспортным протоколам.
   Легко заметить, что Windows CE с точки зрения богатства интерфейсов программирования мало в чем отличается от настольного компьютера. Можно сказать, что, программируя для Pocket PC, вы будете работать практически со всеми интерфейсами, с которыми можно работать, создавая приложения для полноценной операционной системы Windows. Разница состоит лишь в том, что количество функций, макросов, COM-интерфейсов и структур в Windows CE меньше, чем в полновесной операционной системе. Это и понятно. Какие-то функции оказались лишними из-за разницы в наборе управляющих компонентов компьютера, а другими пришлось пожертвовать для того, чтобы обеспечить работу операционной системы и приложений в оперативной памяти размером 32 Мбайта.
   На самом деле разработчики Microsoft проделали большую работу, создавая Windows CE и заставляя ее работать в условиях ограниченных ресурсов. Невольно закрадывается мысль о том, что если бы такая же работа была проделана с десктопными и серверными моделями, то нам долго не пришлось бы беспокоиться об апгрейте наших компьютеров.

Инструменты программирования для Pocket PC

   Компания Microsoft предлагает разработчикам приложений для Pocket PC множество разных инструментов, полностью покрывающих все потребности в создании приложений самого разного назначения, размера и функциональности. В этом разделе будут кратко описаны средства разработки и их предназначение. Естественно, основным источником сведений в этом случае будет сайт Microsoft, в частности опубликованная там в мае 2005 года статья Introduction to Development Tools for Windows Mobile-based Devices.
   Мы обсудим следующие инструменты программирования:
   ♦ eMbedded Visual Tools 3.0;
   ♦ eMbedded Visual C++ 4.0;
   ♦ Visual Studio.NET 2003;
   ♦ Visual Studio.NET 2005.

eMbedded Visual Tools 3.0 и Pocket PC 2002 SDK

   Этот набор инструментов включает в себя четыре составные части:
   ♦ eMbedded Visual Basic;
   ♦ eMbedded Visual C++ 3.0;
   ♦ Pocket PC 2002 SDK;
   ♦ Smartfone 2002 SDK.
   Все четыре части устанавливаются из одного установочного файла.
eMbedded Visual Basic
   В этой среде вы можете создавать приложения, которые будут работать на Pocket PC 2002, Pocket PC 2003 и Pocket PC 2003 SE, то есть приложения для наиболее распространенных сегодня платформ.
   Несмотря на то, что Microsoft настоятельно рекомендует отказаться от этого инструмента, я считаю, что он отлично подходит для тех, кто хочет освоить программирование для Pocket PC. Преимущества среды eVB заключаются в быстроте и легкости освоения как языка, так и среды разработки, в огромном количестве примеров кода и приложений в Интернете, в простоте и понятности кода. К недостаткам можно отнести лишь ограниченное число встроенных элементов управления, медлительность приложений, вызванная интерпретирующей природой языка, необходимость иметь на устройстве run-time библиотеку, и некоторую ограниченность применения. Например, в этой среде нельзя создавать компоненты ActiveX.
   Среда разработки eVB дает возможность быстро создавать приложения с несколькими экранными формами, которые позволяют работать чаще всего с текстовой информацией. Это могут быть всякого рода тестировщики знаний, маленькие обучающие программы, записные книжки или игры, к которым можно отнести шашки и логические головоломки.
eMbedded Visual C++ 3.0
   Приложения, созданные в eVC 3.0, получают полный доступ ко всей функциональности Pocket PC 2002 и будут работать на Pocket PC 2003 и Pocket PC 2003 SE, если написаны с использованием только документированных функций API.
   Приложения, написанные на eVC 3.0, выполняются гораздо быстрее, чем приложения, написанные на eVB. При помощи eVC разработчик практически не ограничен в своих возможностях. Можно создавать приложения, которые компилируются в «родной» код устройства, динамически загружаемые библиотеки и компоненты ActiveX. Среда eVC позволяет использовать легкую интеграцию с COM и WinAPI, а библиотека MFC предоставляет в распоряжение разработчика шаблоны для создания сложных приложений с функциональностью, которая в eVB была просто недоступна. Но за все надо платить, и сложные многофункциональные приложения потребуют много сил на изучение среды, языка, детального знакомства с вызовами API и внимательного отслеживания правильности использования памяти вашими программами. Это важно и для «большого» компьютера, но на Pocket PC с его ограниченными ресурсами утечки памяти могут иметь весьма плачевные последствия.

eMbedded Visual C++ 4.0 и Pocket PC 2003 SDK

   Пакеты eVC 4.0 и Pocket PC 2003 SDK поставляются как два отдельных комплекта установки. При этом, если вы хотите разрабатывать полноценные приложения для Pocket PC 2003, то вам надо будет еще установить и Service Pack 2. Если же вы собираетесь использовать eVC 4.0 для разработки приложений для Pocket PC 2003 SE c поддержкой VGA-экрана разрешением в 192 dpi и возможностью поворота ориентации экрана с книжной на альбомную, то необходимо установить Service Pack 4, дополнительные образы для эмулятора и загрузить с сайта Microsoft пакеты Mobile Application Development Toolkit и Developer Resources for Windows Mobile 2003 Second Edition. Ссылки на загрузку всех дополнительных ресурсов можно найти в нижней части той же страницы на сайте Microsoft, с которой будет производиться загрузка eVC 4.0.