SilverWii – что будет, если подсоединить WiiMote к внебраузерному приложению Silverlight через NESL (естественные расширения для MS Silverlight)

Грег Дункан

Да, я знаю… Silverlight, Silverlight, Silverlight...я знаю, совсем недавно вы получили хорошую порцию Silverlight и вот возвращаетесь к нему опять, но когда я увидел это, то не смог пройти мимо (я старался, но каждый раз перетасовывал список возможных сообщений, и это все время всплывало наверх…смешно!).

Подключаете Wiimote к приложению Silverlight? Присоединяйтесь, вы знаете, что это официально признано «забавным»… clip_image002

NESL: естественные расширения для Silverlight или Нет (кроме семи) пределов для Silverlight? Экспериментируя с сенсорным API для Wiimote

«Когда впервые я услышал о естественных расширениях для Silverlight, то удивился: хорошо, а в каких ситуациях я могу использовать его? В каких сценариях? И вообще, это что-то действительно полезное? В этой статье я постараюсь одну из функций, включенных в NESL, возможность взаимодействия с датчиками движения. В конце концов, я использовал популярный контроллер wiimote, так как он оснащен встроенным акселерометром. Читайте остаток истории, чтобы узнать о результатах тестирования.

clip_image004

...»

Что представляет собой проект NESL?

Native Extensions For Microsoft Silverlight

« Хотя Silverlight 4 обеспечивает доступ к компонентам COM-автоматизации из внебраузерных приложений (OOB-приложений) с повышенным уровнем доверия, многие возможности платформы Windows не доступны через COM-автоматизацию. Что делает их также недоступными и для OOB-приложений. Native Extensions for Microsoft Silverlight(NESL) представляет собой попытку последовательного построения библиотеки компонентов, предоставляющими некоторые функции Windows через COM-автоматизацию, делающую их легко доступными для OOB-приложений Silverlight 4, работающих с повышенным уровнем доверия. Текущая версия NESL обеспечивает доступ к таким возможностям Windows 7, как сенсоры, переносные устройства, речь, панель задач и др. NESL состоит из набора библиотек реального времени для COM-автоматизации, библиотек оболочек Silverlight, используемых из OOB-приложений Silverlight 4, примеров приложений с исходными кодами, документации по API и руководства разработчика.

NEST v2

  • Новые возможности
    • Функции касания
      • Поддержка жестов
      • Поддержка обработки манипуляций
      • Поддержка обработки инерции
      • Информация о касаниях аппаратуры
    • Поддержка области уведомлений Windows 7 (System Tray)
      • Добавление/обновление/удаление значков уведомлений в области уведомлений
      • Добавление/удаление всплывающих подсказок
      • Реакция на уведомления и всплывающие подсказки
      • Добавление/обновление/удаление контекстных меню к значкам уведомления
      • Реакция на выбор пункта контекстного меню
      • «Свернуть в область уведомлений»/«Восстановить из области уведомлений»
    • Поддержка шаблона «Одного экземпляра приложения»
      • Допускает работать только одному экземпляру приложения в любой момент времени
      • Выдает предупреждение при попытке запуска второго экземпляра
      • Предназначено для приложений, добавляющих себя в панель задач, и, следовательно, допускающих лишь один работающий экземпляр приложения.

...

Какие API поддерживаются в NESLv1 ?

  • Windows Sensor API
    • Интегрирует в Silverlight-приложение датчики – акселерометры, датчики освещенности, компасы, гироскопы и т.д.
  • Microsoft Speech API
    • Преобразование текста в речь (синтез речи)
    • Преобразование речи в текст (распознавание речи)
  • Windows Portable Devices API
    • Упорядочивает и предоставляет доступ с подсоединенных портативных устройств (камеры, телефоны, плееры, сканеры и т.д.)
  • Интеграция с панелью задач Windows 7
    • Списки переходов, перекрывающиеся значки, перекрывающиеся индикаторы выполнения, панели миниатюр и т.д.
  • Кодирование потока локальной камеры и захват окна
    • Кодирование видеопотока веб-камеры в mp4 (H.264/AAC-LC) формат
    • Захват взаимодействия с пользовательским интерфейсом в качестве видео
  • Перехват сообщений окна
    • Перехват и реагирование на сообщения окна, посылаемые главному окну OOB-приложения Silverlight

Забавно, насколько простыми могут оказаться некоторые вещи при ретроспективном взгляде. Самой сложной частью этого проекта является подсоединение WiiMote к ПК. Остальное, как вы можете убедиться, рассматривая код, предельно просто, если вы используете мощь NESL.

clip_image006

clip_image008

Эта статья – прекрасное введение в код и NESL. Да, Silverlight 5 с функцией PInvoke позволяет делать подобные штуки легче, но сегодняшний день, это пока сегодняшний день, и если все что у вас есть это Silverlight 4, и вам нужно быть ближе к аппаратуре, то NESL и эта статья станут достойным чтением.

Резюме

В этой статье мы увидели, что, в сущности, нет пределов того, что Silverlight может фактически делать; мы можем даже заставить его говорить с wiimote. Главный инструмент для этого – NESL, библиотека, обеспечивающая дружественные для Silverlight классы оболочек и исполняемую среду, предоставляющую COM-автоматизацию для большинства функций платформы Windows 7. Насколько эффективен и практичен такой подход? В статье мы проверили API датчиков NESL и результаты выглядят обнадеживающе…