Windows CE: средства создания платформ, SDK и приложений
Средства разработки для Windows CE
Microsoft Windows CE Toolkit for Visual Basic 6.0 и Microsoft Windows CE Toolkit for Visual C++ 6.0
Microsoft eMbedded Visual Tools
СУБД и механизмы доступа к данным
Как создать свою конфигурацию Windows CE
Несколько слов о других платформах
Не секрет, что разнообразные мобильные устройства и «интеллектуальные» бытовые приборы постепенно становятся частью нашей повседневной жизни, косвенным свидетельством чему являются материалы данного спецвыпуска, да и других номеров нашего журнала. О чем только мы не писали в последнее время — и о цифровых камерах, и о разнообразных «обучаемых» игрушках типа Furby, и о различных электронных органайзерах, и о роботах... Похоже, настало время рассказать о том, откуда же берется программное обеспечение для всех этих замечательных устройств.
Обсуждение вопросов программирования мобильных устройств — тема весьма обширная, и осветить ее полностью в рамках одной статьи невозможно. Поэтому сейчас мы поговорим только о решениях Microsoft для мобильных устройств, а именно: об операционной системе Windows CE, средствах разработки для этой платформы, средствах создания различных конфигураций Windows CE и соответствующих SDK для разных мобильных устройств, а также кратко остановимся на других платформах Microsoft, предназначенных для встраивания в специализированные устройства. О средствах создания приложений для мобильных устройств других производителей мы расскажем в последующих статьях, посвященных этой теме.
Что может Windows CE?
Первая версия Windows CE, появившаяся в 1996 году, представляет собой специальную версию Windows, предназначенную главным образом для «пользовательских» мобильных устройств. В настоящее время существует множество типов устройств, управляемых этой операционной системой (и еще немало их будет создано в ближайшее время), включая игровые компьютеры типа Sega Dreamcast, различные устройства управления и измерительные приборы, применяемые в разных отраслях промышленности и в научных исследованиях, некоторые модели сотовых телефонов, устройства считывания штрих-кода, цифровые камеры. Однако наиболее популярными устройствами, использующими Windows CE, на сегодняшний день являются Pocket PC и Handheld PC (HPC).
Прежде чем говорить о создании приложений для той или иной платформы, нужно знать, что «умеет» делать эта платформа, а именно: какие технологии она поддерживает, как устроено в ней управление памятью, что представляет собой ее API и объекты, какова ее графическая подсистема. Хотя в нашем журнале уже были публикации, посвященные этой платформе, кратко рассмотрим наиболее характерные ее особенности.
Windows CE содержит набор функций и возможностей, типичных для «обычных» версий Windows и специально подобранных так, чтобы удовлетворить требованиям, в определенной степени противоречащим друг другу: с одной стороны, эта платформа должна предоставлять сервисы, наиболее часто применяемые в настольных версиях Windows, а с другой — использовать при этом как можно меньше ресурсов. Именно поэтому Windows CE не поддерживает некоторые из редко используемых или ресурсоемких технологий (например, выполнение 16-разрядных приложений, применение INI-файлов, использование Messaging API, некоторые классы MFC, некоторые функции Win32, некоторые элементы управления ActiveX).
Существенной особенностью Windows CE с точки зрения программирования является то, что эта платформа может в общем случае использовать текстовые данные только в виде Unicode-строк, поэтому любые внешние данные, содержащие ANSI-строки, следует преобразовывать в формат Unicode. Из этого правила есть исключения: во-первых, данные, передаваемые с помощью сокетов, должны содержать ANSI-строки (причина этого заключается в том, что Winsock API не является частью Win32 API); во-вторых, при использовании WinInet API можно пользоваться как ANSI-, так и Unicode-строками, а также функциями WinInet API, оперирующими и тем и другим типом данных. И наконец, третье исключение связано с файловым вводом-выводом в приложениях, созданных с помощью Visual Basic, — в случае Windows CE соответствующие функции Win32 API не поддерживаются, а вместо них используются вызовы метода специально созданного для этой цели компонента ActiveX; последний же позволяет читать и ANSI- и Unicode-данные, но записывать с его помощью можно только ANSI-строки.
Будучи в целом многозадачной операционной системой, Windows CE имеет некоторые ограничения на число одновременно запущенных процессов (не более 32), при этом виртуальное адресное пространство для каждого процесса составляет не 2 Гбайт, а 32 Мбайт. Что касается поддержки многопоточности, то в Windows CE поддерживаются все объекты синхронизации потоков — мьютексы, семафоры (только в Windows CE 3.0), события, критические секции.
Следует отметить, что способы хранения данных в Windows CE несколько отличаются от обычных: эта операционная система позволяет хранить данные в реестре, в файловой системе и в базах данных, при этом все три типа таких хранилищ данных (называемых общим термином object store) содержатся в оперативной памяти и в случае Windows CE 3.0 могут занимать до 256 Мбайт (в случае Windows CE 2.0 — только 16 Мбайт). Структура каталогов файловой системы подобна структуре файловых систем настольных версий Windows, за исключением того, что не поддерживаются имена дисков (A:, C:, D:…). Отметим, однако, что Windows CE может поддерживать и обычные устройства хранения данных, такие как гибкие диски, CD-ROM, жесткие диски, флэш-память.
Внутренние (in-process) серверы (то есть COM-серверы, выполненные в виде DLL и выполняющиеся в адресном пространстве клиентского приложения) поддерживаются Windows CE 2.0 и Windows CE 3.0, тогда как локальные и удаленные (out-of-process) серверы — только Windows CE 3.0.
Как и версии Windows для настольных компьютеров, Windows CE поддерживает графический экран, набор наиболее часто применяемых элементов пользовательского интерфейса (кнопки, флажки и т.д.), минимальный набор диалоговых панелей общего назначения. Однако размер графического экрана в Windows CE может быть существенно меньше, чем у «обычных» версий Windows; так, размер экрана PocketPC составляет всего 240Ѕ350 пикселов. Что касается графических библиотек, то в этой операционной системе поддерживается примерно 1/4 функций GDI, а начиная с версии Windows CE 2.01 поддерживается и библиотека DirectDraw. Поддержки OpenGL в Windows CE пока нет.
Из особенностей организации пользовательского интерфейса следует отметить поддержку этой платформой некоторых специфических устройств ввода, характерных для мобильных устройств, например «чувствительных» экранов (touch screens), интерпретируемых с точки зрения программирования как обычная мышь.
И наконец, несколько слов о поддержке Internet. Все версии Windows CE поддерживают обмен данными с помощью сокетов (и соответственно Winsock API) и по протоколам HTTP и FTP (и соответственно WinInet API). Для Windows CE 3.0 существует Web-сервер, поддерживающий ASP. Что касается применения Windows CE в качестве платформы для Web-браузера, то в качестве пользовательских инструментов применяются Microsoft Pocket Internet Explorer, созданный специально для этой платформы и поддерживающий лишь минимально необходимый набор функций для просмотра Web-содержимого, и Internet Explorer for Windows CE, представляющий собой адаптированную версию Microsoft Internet Explorer 4.0 и поддерживающий фреймы, CSS, DHTML, но не поддерживающий интерпретацию кода на скриптовых языках. Для создания собственных приложений, позволяющих осуществлять просмотр Web-содержимого, имеется элемент управления HTML Viewer (используемый самой Windows CE для отображения файлов справочной системы), который можно применять в приложениях, созданных с помощью C/C++.
Завершив этот более чем краткий обзор возможностей Windows CE и поддерживаемых этой платформой технологий, перейдем к рассмотрению вопросов, связанных с применением средств разработки при создании приложений для нее.
Средства разработки для Windows CE
Поставив перед собой целью создание приложения для Windows CE с помощью визуальных средств, следует отдавать себе отчет в том, что выбор подобных средств ограничен. Многие инструментальные средства, применяемые при создании Windows-приложений, для этой цели не годятся — они не предназначены для создания приложений, функционирующих в условиях перечисленных выше ограничений, накладываемых на Windows API. Исключение здесь составляют средства разработки, созданные производителем платформы, в данном случае Visual C++ и Visual Basic.
Создавать приложения для Windows CE 2.0 можно с помощью Visual C++ 6.0 и Visual Basic 6.0, применяя SDK для соответствующего мобильного устройства. SDK для наиболее популярных устройств, а именно Palm-size PC, Handheld PC и Handheld PC Pro, содержатся в продуктах Microsoft Windows CE Toolkit for Visual Basic 6.0 и Microsoft Windows CE Toolkit for Visual C++ 6.0. Для Windows CE 3.0 можно создавать приложения как с помощью указанных выше инструментов, так и посредством eMbedded Visual Tools 3.0 — версий Visual Basic и Visual C++, предназначенных специально для создания таких приложений. Начнем с рассмотрения Microsoft Windows CE Toolkit for Visual Basic 6.0, а затем перейдем к созданию приложений с помощью eMbedded Visual Tools 3.0.
Microsoft Windows CE Toolkit for Visual Basic 6.0 и Microsoft Windows CE Toolkit for Visual C++ 6.0
Продукты Microsoft Windows CE Toolkit for Visual Basic 6.0 и Microsoft Windows CE Toolkit for Visual C++ 6.0 доступны на рынке программного обеспечения; стоимость каждого из них составляет примерно 200 долл. Эти продукты содержат SDK для наиболее популярных мобильных устройств и набор утилит для управления ими (последние доступны из сред разработки Visual C++ и Visual Basic после установки данных продуктов).
После установки Microsoft Windows CE Toolkit for Visual Basic 6.0 и запуска Visual Basic в диалоговой панели New Project появятся дополнительные пиктограммы для создания проектов приложений, предназначенных для выполнения в Windows CE 2.0 (рис. 1).
При создании одного из таких проектов на экране появится диалоговая панель, позволяющая определить параметры создаваемого приложения, в частности размеры его главной формы и устройство, на котором будет запускаться приложение при отладке — на эмуляторе мобильного устройства или на самом мобильном устройстве, подключенном с помощью USB-порта, локальной сети или параллельного порта к компьютеру, на котором ведется разработка (рис. 2).
Отметим, что, хотя разрабатывать приложения для Windows CE можно в Windows 98, Windows NT и в Windows 2000, эмуляторы мобильных устройств в Windows 98 неработоспособны и просто не будут установлены вместе с соответствующими SDK.
Далее можно создавать приложение примерно так же, как и обычное Windows-приложение. Однако при использовании интерфейсных элементов и объектов, не поддерживаемых Windows CE, поместить их на форму не удастся — в этом случае появится соответствующее диагностическое сообщение.
Создав главную форму приложения и написав код, можно нажать кнопку Start. После этого приложение будет загружено в мобильное устройство или в его эмулятор (который в случае необходимости будет запущен автоматически), где его можно протестировать (рис. 3).
Отметим, что при создании приложений, использующих внешние данные, их также следует переносить на мобильное устройство. Более подробно о способах хранения внешних данных и средствах их использования в приложениях для Windows CE будет рассказано чуть позже.
В комплект Microsoft Windows CE Toolkit for Visual Basic 6.0 и Microsoft Windows CE Toolkit for Visual С++ 6.0 входит несколько утилит, назначением которых является манипуляция операционными системами для мобильных устройств и создаваемыми для них приложениями:
- Heap Walker — средство просмотра областей памяти для динамически размещаемых структур данных («куч»);
- Process Viewer — средство просмотра запущенных процессов на подключенном мобильном устройстве, позволяющее остановить любой из процессов;
- Remote Registry Editor — утилита для редактирования реестров мобильного компьютера и компьютера, на котором производится разработка приложения;
- Spy — средство для слежения за окнами и сообщениями Windows CE на подключенном мобильном устройстве;
- Zoom — утилита для получения «снимков» с экрана мобильного устройства в виде графических файлов;
- Application Install Wizard — средство создания дистрибутивов созданных приложений Visual Basic для переноса их на мобильное устройство;
- Control Manager — средство для установки и конфигурации элементов управления ActiveX для мобильных устройств.
Более подробно о применении Microsoft Windows CE Toolkit for Visual Basic 6.0 можно прочесть в статье «Microsoft Windows CE Toolkit for Visual Basic 6.0 Guided Tour» (msdn.Microsoft.com/library/techart/vbcetour.htm или на нашем CD-ROM).
Microsoft eMbedded Visual Tools
Наиболее часто для создания приложений для Windows CE в настоящее время применяются Microsoft eMbedded Visual Tools 3.0, представляющие собой не дополнение к Visual Studio, а отдельный продукт, в состав которого входят eMbedded Visual C++ 3.0 и eMbedded Visual Basic 3.0, а также утилита API Text Viewer для просмотра объявлений констант, функций и переменных и для копирования их в среду разработки eMbedded Visual Basic.
Оба средства разработки, eMbedded Visual C++ 3.0 и eMbedded Visual Basic 3.0, по своей функциональности сходны с соответствующими средствами разработки из Visual Studio. В частности, eMbedded Visual C++ 3.0 позволяет создавать несколько различных типов приложений, в том числе с использованием MFC и ATL; eMbedded Visual Basic 3.0 дает возможность создать четыре типа приложений: приложения без графического пользовательского интерфейса, а также приложения для трех наиболее популярных типов мобильных устройств (Palm-size PC, Pocket PC, Handheld PC Pro — рис. 4).
В комплект поставки eMbedded Visual Tools 3.0 входят и их эмуляторы, отладка создаваемых приложений с помощью которых нередко оказывается более удобной даже при наличии подключенного мобильного устройства. Напомним, что эмуляторы мобильных устройств работоспособны только в Windows NT и Windows 2000.
Сам процесс создания приложения для одного из перечисленных выше мобильных устройств с помощью eMbedded Visual Basic практически аналогичен созданию обычных VB-приложений — основное различие заключается в том, что готовое приложение запускается на выполнение на мобильном устройстве или его эмуляторе (рис. 5).
Наиболее важной особенностью eMbedded Visual Basic является, пожалуй, то, что это средство разработки, в отличие от Visual Basic 6, не содержит компилятора — приложения, созданные с его помощью, выполняются посредством интерпретатора, загружаемого с помощью Pocket Visual Basic Loader (PBLoad.exe). Само интерпретируемое приложение оказывается не зависящим от типа процессора, используемого в мобильном устройстве, и содержится в файле с расширением *.VB. Для его выполнения требуются библиотеки времени выполнения и другие файлы, уже зависящие от конкретного типа устройства.
Отметим, однако, что среда времени выполнения eMbedded Visual Basic не поддерживает некоторые синтаксические конструкции VB, в частности предложение Type. Это затрудняет доступ к некоторым функциям API, оперирующим указателями на структуры Windows. Решить эту проблему можно только создав DLL, реализующую нужную функциональность, с помощью eMbedded Visual C++.
В комплект поставки Microsoft eMbedded Visual Tools 3.0 входят те же утилиты для удаленного управления операционной системой и приложениями, что и в Microsoft Windows CE Toolkit for Visual Basic 6.0 и Microsoft Windows CE Toolkit for Visual C++ 6.0 — Heap Walker, Process Viewer, Remote Registry, Spy, Zoom, Application Install Wizard, Control Manager.
СУБД и механизмы доступа к данным
Выше мы уже упоминали, что Windows CE может хранить данные в файлах, в реестре и в базах данных, располагающихся в оперативной памяти мобильного устройства. Если говорить об аналоге настольных СУБД (подобных Microsoft Access), то таковой уже встроен в Windows CE. Для доступа к этой встроенной СУБД из приложений, созданных с помощью Visual C++ и Visual Basic, применяется специальный механизм доступа к данным — ADOCE, отличающийся от всем известного механизма ADO ограниченным набором поддерживаемых объектов. В частности, этим механизмом не поддерживается объект Connection, содержащий сведения о базе данных, с которой взаимодействует данное приложение, — в случае ADOCE база данных представляет собой ту самую встроенную СУБД. Кроме того, не поддерживается объект Command (вместо этого для выполнения SQL-запросов следует применять метод Open), а также объект Error и коллекция Errors — вместо них следует использовать объект Visual Basic Err. Что касается коллекции Properties и объекта Property, то ADOCE не поддерживает никаких дополнительных свойств своих объектов. Объекты Recordset и Field, равно как и коллекция Fields, полностью поддерживаются ADOCE.
Отметим, что при необходимости с помощью ADOCE можно обращаться и к другим СУБД, в частности к SQL Server for Windows CE, входящему в состав SQL Server 2000 Developer Edition. Эта серверная СУБД поддерживает широкий набор типов данных, в частности текстовые данные в формате Unicode, Image, Money, Identity, позволяет создавать до 32 индексов для одной таблицы, осуществлять вложенные транзакции, вычислять агрегатные данные. Особенностью данной версии SQL Server является то, что она позволяет одновременно обновлять данные, содержащиеся и в локальной базе данных на мобильном устройстве, и в удаленной базе данных, управляемой SQL Server 6.5, 7.0 или 2000 и расположенной на настольном компьютере, при этом возможна отложенная синхронизация данных в случае, если связь с удаленным сервером баз данных не всегда доступна. Из механизмов репликации эта СУБД поддерживает репликацию путем слияния и удаленный доступ (Remote Data Access, RDA). Последний позволяет приложению, использующему SQL Server для Windows CE, выполнять SQL-запросы на удаленном сервере, а также получать в результате запросов наборы данных, которые сохраняются в таблице на локальном сервере. Взаимодействие с удаленным сервером может осуществляться с помощью локальной сети или через Internet по протоколу HTTP.
SQL Server 2000 для Windows CE может выполняться под управлением Windows CE 2.11 и выше на следующих мобильных устройствах: Pocket PC, Palm-size PC, Handheld PC Pro. Клиентские приложения для этой серверной СУБД рекомендуется создавать с помощью eMbedded Visual Tools.
Как создать свою конфигурацию Windows CE
Выше мы говорили в основном о приложениях для HPC, HPC Pro и Pocket PC. А как быть, если нам нужно оснастить нашими приложениями (а возможно, и операционной системой) нестандартное устройство, например бытовой прибор собственного производства?
Очевидно, что операционная система для подобного устройства не должна содержать ничего лишнего. Если у устройства нет клавиатуры, не нужен и ее драйвер; если не поддерживается звук, не нужны драйверы звуковых карт и т.д. В принципе и процессор для нестандартного мобильного устройства не обязан быть именно x86-совместимым. Иными словами, для нестандартного устройства нужна и «нестандартная» Windows CE.
Создание «нестандартной» Windows CE хотя и кажется на первый взгляд сложной задачей, в действительности вполне осуществимо. Имеется продукт, специально предназначенный для этой цели, — Windows CE Platform Builder (рис. 6). В состав последней версии этого продукта (3.0) входят eMbedded Visual Tools, о которых уже говорилось выше.
С помощью Windows CE Platform Builder можно создать «свою» версию Windows CE для нестандартного мобильного устройства. Этот инструмент поддерживает около двух десятков типов процессоров (их список может быть расширен по мере выпуска новых типов процессоров) и позволяет выбирать, будет ли включена поддержка различных внешних устройств и тех или иных технологий, характерных для Windows (рис. 7).
После выбора состава будущей операционной системы и списка поддерживаемых процессоров можно сразу же создать «образ» операционной системы, определить способ его переноса на мобильное устройство, перенести его туда и загрузить.
Помимо операционной системы и ее загрузки, с помощью Platform Builder можно создать несколько типовых проектов, позволяющих произвести их отладку, просмотреть список процессов и потоков, исследовать эффективность работы операционной системы (для этой цели можно применять утилиты Kernel Trcker, Remote System Information, Remote Performance Monitor) и, при необходимости, произвести изменения в созданной операционной системе (при этом можно вносить частичные изменения, не перенося заново на мобильное устройство всю операционную систему). Кроме того, можно добавить в состав операционной системы приложения, созданные с помощью eMbedded Visual Tools.
И наконец, после создания операционной системы Platform Builder позволяет экспортировать SDK для Visual C++ или Visual Basic. Для этой цели также имеется соответствующий инструмент (при работе с ним, похоже, самое сложное — это написать текст лицензионного соглашения). Полученный SDK (например, для Visual Basic) можно установить в операционную систему, в которой ведется разработка, после чего в Visual Basic 6.0 и eMbedded Visual Basic появятся соответствующие шаблоны (рис. 8).
Более подробно на этом инструменте мы останавливаться не будем — детали его применения интересны главным образом производителям нестандартных устройств.
Несколько слов о других платформах
Windows CE в настоящее время является отнюдь не единственной платформой Microsoft для мобильных устройств. Из имеющихся на рынке операционных систем следует также отметить Microsoft Windows NT Embedded 4.0. Будучи более требовательной к ресурсам, чем Windows CE, эта операционная система предназначена для решений, требующих большей масштабируемости, надежности и безопасности, нежели может предоставить Windows CE. Наиболее характерные области применения этой операционной системы — различные специализированные «интеллектуальные» устройства с повышенными требованиями к надежности, например сетевые маршрутизаторы. По существу, эта операционная система представляет собой Windows NT Workstation Service Pack 5, разбитую на компоненты с целью создания различных конфигураций, в том числе конфигураций для устройств без монитора, мыши или клавиатуры, с загрузкой с CD-ROM или из флэш-памяти, и др.
Как и в случае Windows CE, создание конфигураций Windows NT Embedded 4.0 для нестандартных устройств также может быть осуществлено с помощью специального инструмента — Target Designer (рис. 9).
Помимо Target Designer, предназначенного для создания различных конфигураций Windows NT Embedded из готовых компонентов, имеется еще один инструмент — Component Designer, предназначенный для создания собственных компонентов, например драйверов устройств, сервисов операционной системы, каких-либо специфических приложений. Эти компоненты в дальнейшем могут быть интегрированы в Target Designer и включены в создаваемые конфигурации Windows NT Embedded.
Разработку приложений для Microsoft Windows NT Embedded 4.0 рекомендуется осуществлять с помощью Visual C++ 6.0 или Visual Basic 6.0.
И наконец, несколько слов о Windows 2000 with the Server Appliance Kit. Термин server appliance означает сервер или иное устройство, выполняющее строго определенную задачу (например, Web-хостинг, управление сетевым принтером и др.). Server Appliance Kit позволяет с помощью выбора и настройки необходимых компонентов создать для подобного устройства специальную конфигурацию Windows 2000, реализующую специфические потребности данного устройства и минимизирующую требования к ресурсам. В частности, с его помощью также можно создавать версии Windows 2000 для устройств без мыши, клавиатуры и монитора. Используется Server Appliance Kit главным образом поставщиками различного оборудования, которое оснащается встроенной операционной системой.
Заключение
В настоящей статье мы рассмотрели некоторые решения Microsoft для мобильных устройств с точки зрения использующих их разработчиков решений. В частности, мы рассказали о возможностях операционной системы Windows CE и степени поддержки ею различных технологий, характерных для Windows.
Мы также рассмотрели возможные средства разработки приложений и СУБД для этой платформы, а именно:
- Visual C++ 6.0 и Visual Basic 6.0 совместно со специализированными SDK;
- eMbedded Visual Tools 3.0;
- механизм ADOCE доступа к данным, а также СУБД, с которыми он применяется, включая SQL Server для Windows CE.
Кроме того, мы представили вашему вниманию Windows CE Platform Builder — средство создания различных конфигураций Windows CE и соответствующих SDK для нестандартных мобильных устройств. Наконец, мы кратко остановились на других платформах Microsoft для мобильных устройств и средствах их конфигурации.
О платформах и средствах создания приложений для мобильных устройств других производителей мы расскажем в последующих статьях на эту тему.
Дополнительные материалы о продуктах и технологиях, рассмотренных в этой статье, вы можете найти на нашем CD-ROM.
КомпьютерПресс 3'2001