Windows Embedded Standard 7 в интерфейсных устройствах: технология Windows Touch


Журнал "ИСУП"
№4'2010

Введение

В апрельском номере журнала ИСУП мы познакомились с возможностями встраиваемой операционной системой Windows Embedded CE 6.0 для построения систем реального времени. Чем жестче требования к таким системам, тем более актуальным становиться специализация на исполнительные и управляющие устройства, поскольку одна только отрисовка интерфейса может ощутимо сказаться на характеристиках реального времени. В таком тандеме исполнительные устройства отвечают за отработку управляющих сигналов в режиме реального времени. Задача управляющих или как их ещё можно назвать интерфейсных устройств заключается в отображении информации для контроля за работой системы и формировании управляющих сигналов для исполнительных устройств. Для решения широкого круга задач в интерфейсных устройствах не требуется поддержка реального времени. Например, в системе кондиционирования для поддержания требуемой температуры и влажности в цеху задержка порядка секунды не является критической. Другой пример – автоматизация сложного технологического процесса, когда операции процесса исполняются в реальном времени, а конфигурирование/запуск/отстанов выполняется при помощи систем без поддержки реального времени.

Итак, выполнив условное разделение на исполнительные и интерфейсные системы рассмотрим какие варианты доступны для разработки последних. Так как для данного класса устройств требования по реальному времени выходят на второй план, то круг доступных систем значительно расширяется. По мимо компактных систем, как например, Windows Embedded CE, есть возможность использовать настольные операционные системы такие как Windows XP и Windows 7. Преимущества очевидны – это гораздо более широкая поддержка со стороны производителей оборудования и разработчиков программного обеспечения. Обе указанные операционные системы имеют свои аналоги в линейке Windows Embedded – это Windows Embedded Standard 2009 и Windows Embedded Standard 7. Отличительными особенностями встраиваемых операционных систем Windows Embedded Standard является их компонентность и наличие возможностей по встраиванию. Под компонентностью подразумевается возможность гибко формировать функционал системы, тем самым уменьшая дисковый объем, занимаемый системой, и, как следствие, увеличивая производительность и надежность работы устройства. Возможности по встраиванию позволяют реализовать функции востребованные в устройствах, как, например, загрузка с USB, которые недоступны в настольных версиях операционных систем.

Процесс разработки и внедрения встраиваемых систем отличается от установки настольных систем. При этом в новой встраиваемой системе, Windows Embedded Standard 7, которая вышла весной этого года, эти отличия практически нивелированы. Помимо удобства и простоты развертывания в Windows Embedded Standard 7доступны все новейшие технологии Windows 7. Для интерфейсных устройств наверное самой интересной является поддержка множественный касаний – технологии Multi-Touch. Таким образом, выбор Windows Embedded Standard 7 для построения интерфейсных устройств вполне обоснован, как с точки зрения освоения средств разработки, так и функциональности самой системы. Обратной стороной медали являются более высокие требования к аппаратной части по сравнению с WindowsEmbedded Standard 2009 (Windows XP). Познакомимся со средствами разработкиWindows Embedded Standard 7.

Средства разработки

Основными инструментами разработки образа Windows Embedded Standard 7являются Image Builder Wizard (IBW) и Image Configuration Editor (ICE). IBW – это мастер для установки образа системы на целевом устройстве, который может быть запущен с DVD или USB-флеш диска. Таким образом, для установки Windows Embedded Standard 7 достаточно загрузиться c DVD диска из поставки средств разработки и пройтись по окнам мастера аналогично установке настольной ОС. При этом у разработчика есть возможность выбрать шаблон устройства, например, "Industrial Automation", установить драйвера устройств и сформировать функционал системы. Элементарной единицей функционала в Windows Embedded Standard 7 является пакет (package). В Windows Embedded Standard 2009 и ранее использовался другой термин – компонент (component). Данное изменение в терминологии призвано подчернуть, что при компонентизации Windows 7 использовался несколько другой подход в результате чего гранулярность единиц функциональности возросла по сравнению с предыдущей версией. Шаблоны (templates) по сути являются макропакетами или, как они называются в WES 2009, макрокомпонентами, содержащими перечень пакетов и служат для прототипирования образа системы. Средства разработки позволяют разрешать зависимости между пакетами, т.е. если для работы одного пакета необходимо наличие в образе других) пакетов, то они будут добавлены при разрешении зависимостей. Более того мастер установки IBW не продолжит свою работу до тех пор пока не будут разрешены все зависимости, тем самым исключая возможность получить неработоспособный образ системы. Кроме рассмотренного варианта интерактивной установки есть возможность выполнить её автоматически при помощи заранее подготовленного файла ответов. ICE, конфигуратор образа, как раз и служит для создания подобных файлов ответа, а также для создания собственных установочных дисков с IBW. По мимо IBW и ICE в поставке средств разработки находятся утилиты, позволяющие добавлять и удалять из развернутых систем функциональность (DISM), сохранять и разворачивать образы систем (ImageX) и пр. Для того чтобы более детально изучить возможности Windows Embedded Standard 7 на сайте Microsoft доступна полнофункциональная пробная версия данного продукта.

Windows Touch

Наконец мы подошли к новым возможностям ОС, а именно технологии Windows Touch. Windows 7 – это первая настольная система, в которой реализована поддержка сенсорных экранов с распознаванием множественных касаний или Multi-touch. Multi-touch - это аппаратно-программное решение. С одной стороны принцип действия сенсорного экрана должен обеспечивать одновременное распознавание нескольких касаний. С другой стороны ОС должна уметь работать с такими сенсорными экранами, что подразумевает оптимизацию интерфейса и предоставление API для разработчиков приложений.

Если говорить про аппаратную составлящую, то далеко не все сенсорные экраны могут похвастаться поддержкой Multi-Touch. Например, конструкция самых распространенных резистивных сенсорных экранов физически не может обеспечить считывание касаний экрана в разных участках экрана.

Немного теории. Резистивный экран представляет собой две прямоугольные пластины, установленные одна поверх другой. На пластины равномерно нанесено резистивное покрытие. Пространство между пластинами заполнено специальным материалом, который позволяет исключить замыкание пластин в отсутсвие нажатия на экран. По сторонам пластин находятся электроды. Для считывания положения точки нажатия по горизонтальной оси между электродам нижней пластины прикладывается некоторое референсное напряжение U, которое благодаря покрытию создает равномерное распределение потенциала между электродами. Вторая пластина служит потенциометрицеским щупом – при нажатии на экран происходит замыкание пластин в точке контакта и верхней пластине передается потенциал данной точки. Таким образом координата прямопропорциональна значению потенциала верхней пластины. Преобразование аналогового значения потенциала в координату осуществляется контроллером сенсорного экрана. Для считывания второй координаты выполняется аналогичная процедура с той разницей, что напряжение прикладывается к электродам верхней пластины, а щупом становиться нижняя. Если допустить несколько одновременных касаний, то на выходе мы получим координаты средней точки, но никак не каждой отдельной точки.

Для поддержки Multi-Touch резистивные экраны требуют значительного усовершенствования конструкции. Это касается как покрытия пластин, так и логики контроллера. Покрытие следует наносить ввиде параллельных дорожек, образующих при наложении пластин сетку. При нажатии на экран происходит замыкание соответсвующих дорожек. Контроллер прикладывает напряжение к каждой отдельной дорожке нижней пластины и сканирует по очереди все дорожки верхней пластины. Наличие потенциала сведетельствует о нажатии, а номера дорожек соответствуют координатам: номер верхней дорожки – абсциссе, нижней - ординате.

Помимо резистивных следует упомянуть ёмкостные и оптические сенсорные экраны. Среди них также не все поддерживают Multi-Touch. Перейдем к программной части, а именно к возможностям Windows 7 в плане сенсорных экранов.

Интерфейс ОС был серьезно переработан, чтобы в полной мере задействовать сенсорные экраны как устройства ввода. Например, при обнаружении системой сенсорного экрана автоматически увеличиваются промежутки между пунктами меню, что значительно облегчает их выбор. Конечно речь не идет о полном отказе в использовании компьютерных мышей. В ряде применений, где требуется точное позиционирование, сенсорный экран не справится с поставленной задачей. Основная область применения сенсорных экранов – это различные интерфейсные устройства с достаточно крупными элементами управления без необходимости выполнять высокоточные манипуляции.

Поддержка множественных касаний реализована в некоторых стандартных приложениях Windows 7. В программе Paint можно рисовать одновременно несколькими кистями – пальцами, а стандартное приложение для просмотра графических файлов распознает жест увеличения/уменьшения, в котором задействованы сразу два пальца. Отличной демонстрацией возможностей Multi-Touch под Windows 7 является пакет "Microsoft Touch Pack for Windows 7". Данный пакет доступен для загрузки с сайта Microsoft. Поддержка сенсорного ввода и Multi-Touch может быть использована и в сторонних приложениях. Даже в приложениях разработанных без учета сенсорного ввода автоматически задействовуются базовые жесты. Всю работу в данном случае выполняет ОС, приложение получает информацию в привычном для него виде. К базовым жестам относятся: панорамирование, увеличение/уменьшение и пролистование. Гораздо более широкие возможности открываются для приложений разработанных с использованием расширенного API (Application Programming Interface).

Прежде чем углубиться в описание нового функционала в API ОС Windows 7, следует упомянуть о принципах работы Windows-приложений. В Windows, начиная с первых версий и по сей день, используется событийная схема взаимодействия с приложениями. При возникновении какого-либо события, например, нажатия клавиши или перемещении курсора мыши, ОС отправляет соотвествующее сообщение. Приложения определенным образом регистрируются на получение сообщений и выполняют их обработку. Сообщения имеют уникальные идентификаторы. Для удобства используется именование идентификаторов начинающее с "WM_". Например, нажатию левой клавиши мыши соответсвует сообщение с именем "WM_LBUTTONDOWN". Помимо собственно идентификатора сообщения ОС передает его параметры. Например, для приведенного ранее сообщения – это текущие координаты курсора мыши.

Вернемся к рассмотрению возможностей API Windows 7 для работы с сенсорными экранами. В первую очередь - это расширенная обработка стандартных жестов. Для этого приложению достаточно обрабатывать сообщение системы WM_GESTURE, в котором содержится подробная информация о жесте и его параметрах. Для более сложных сценариев приложение может зарегистироваться на получение сообщения WM_TOUCH. WM_TOUCH обеспечивает низкоуровневую информацию о взаимодействии пользователя с сенсорным экраном, на основе которой можно реализовать распознавание комбинации жестов или собственных жестов. Представим, что в приложении допускается использование одновременно нескольких жестов и выполняется жест увеличения с одновременным вращательным движением. При помощи WM_GESTURE мы получим информацию только об одном жесте. Для распознавания комбинации жестов служит процессор манипуляций (Manipulation Processor). Процессор манипуляций по информации сообщения WM_TOUCH отслеживает и анализирует перемещение каждого отдельного пальца и оповещает приложение о начале отдельного жеста, его развитии и окончании. И в заключении краткого обзора возможностей сенсорного ввода Windows 7 следует упомянуть об ещё одном средстве – инерционном процессоре (Inertia Processor). Инерционный процессор добавляет манипуляциям реалистичности с физической точки зрения. Во-первых, что следует из названия процессора, жесты могут продолжать свое развитие как бы по инерции. Например, выполнив на экране жест вращения и убрав пальцы с экрана, система будет генерировать сообщения для плавного завершения манипуляции вращения с заданным замедлением или смещением. Кроме этого можно ограничить область, в которой выполняются манипуляции. Например элемент интерфейса допускает перемещение в заданной области. Если жестом заставить двигаться элемент по инерции, то при достижении границы области инерционный процессор будет формировать оповещения таким образом, чтобы элемент оставался внутри области продолжая движение вдоль границы.

Идеи по использованию сенсорного ввода и технологии Multi-Touch в приложениях для интерфейсных устройств можно подчерпнуть ознакомившись с ранее упомянутым пакетом "Touch Pack for Windows 7".

Резюме

Сочетание простых в освоении средств разработки и передовых технологии Windows 7 делает Windows Embedded Standard 7 отличным выбором для разработки интерфейсных устройств. При построении устройств с сенсорным вводом и распознаванием множественных касаний следует учитывать, что не все сенсорные экраны поддерживают технологию Multi-Touch. Задействовать возможности Multi-Touch в интерфейсных приложениях позволяет расширенное API, при помощи которого можно реализовать интуитивно понятное и реалистичное взаимодействие с устройством.

Павел Белевский – системный инженер ООО “Кварта Технологии”, г. Москва.

Телефон (495) 234-40-18.

E-mail: info@quarta.ru

Полный текст статьи