|
VPL и наша первая программа в Robotics Studio
Еще только в прошлой статье мы рассматривали Microsoft Robotics Studio версии 1.5. Но Microsoft не дремлет, и уже сегодня доступна новая версия Microsoft Robotics Developer Studio 2008 Community Technical Preview (CTP) April. Что нового: поддержка LINQ, расширили модель безопасности, увеличили быстродействие, реализовали запись и воспроизведение в Симуляторе, более тесная интеграция с Visual Studio 2008.
Сегодня Вы познакомитесь более подробно с Microsoft Visual Programming Language (VPL).
Как Вы помните, каждый сервис в VPL представляется в виде блока Activity. Помимо представленных сервисов в VPL существует возможность создавать свои блоки в специальном контейнере Activity.
В рамках своего Activity, Вы создаете логику. В Activity можно добавлять готовые сервисы, а так же основные Activity. К основным Activity относятся объявление переменных, арифметические действия, слияния, сравнения и др. Все основные Activities перечислены в списке окна «Basic Activities».
Сервис, или Activity, общается с другими сервисами через порты средствами связи протокола DSSP. Для создания связи сервисов необходимо выход первого сервиса соединить с входом второго. Следующим действием Вы должны определить само соединение в диалоговом окне «Connections».

Если соединение корректно, то между блоками появится соединяющая линия.
При создании связи требуется передавать данные. В окне «Data Connections» в левой области окна «Value» указывается данные, которые передаются, а в правой области окна «Target» - приемники (элементы сервиса), на которые передаются данные.

Для редактирования соединения сервисов достаточно два раза нажать на линии соединения.
Чтобы запустить проект выберите Start из меню Run. Появится диалоговое окно с гиперссылкой на Web часть проекта. Для остановки проекта воспользуйтесь кнопкой «Stop». Перейдя по ссылке на Web страницу, Вы сможете управлять своим проектом.
По законам изучения языков программирования в качестве первого примера рассматривается программа «Hello Word», функционал которой сводится к выводу на экран строки. Мы с Вами тоже будем придерживаться общего кодекса и рассмотрим в качестве первого примера программу, которая вызовет диалоговое окно с надписью «Hello Word».
Hello Word, первая программа
Для нашей первой программы нам понадобится сервис «Simple Dialog». Данный сервис Вы найдете в окне «Services».

Сервис «Simple Dialog» имеет несколько назначений, в нашем случае нам понадобиться «AlertDialog». Функция «AlertDialog» сервиса «Simple Dialog» вызывает диалоговое окно. Перед вызовом диалогового окна мы должны передать сервису входящее значение, а именно строковую переменную «Hello Word». Для этого добавим в нашу программу блок «Data». После чего установим тип переменной string, а значение Hello Word.

Теперь нам остается только установить связь. Для этого соединим блок «Data» с блоком «Simple Dialog». В окне «Connections» выберем значение «AlertDialog».

Далее передадим значение блока «Data» порту «AlertText» сервиса «Simple Dialog». Для этого в окне «Data Connections» укажем значение «value».


В результате наша первая программа готова к запуску. Запустив программу, на экране появится окно сообщения с текстом Hello Word.

Рекурсия. Создание своего Activity
Для начала определим задачу.
В рамках цикла будем вызывать один из методов сервиса, и передавать ему значение, которое будет увеличиваться на единицу с каждым шагом.
Вот как бы выглядел код на C#
Для создания рекурсии воспользуемся блоком Activity. Переместите блок Activity из окна «Basic Activities» в основную область «Diagram».
Затем добавим в наш Activity блоки «If» и «Calculate» из окна «Basic Activities». Далее вызовем окно «Actions and Notifications» для определения входящей переменной и переменной уведомления.

Перейдя в закладку «Actions» окна «Actions and Notifications» для более осмысленного названия действия переименуем действие Action в Sum. Далее создадим переменную группы «Input values» с именем «А», и присвоим ей тип «int». Переменная «А» основной переменной нашей рекурсии, именно она будет увеличиваться на единицу до тех пор, пока ее значение не превысит 10.
Перейдя в закладку «Notifications » окна «Actions and Notifications» создадим переменную «ChangeA» группы «Notification values» с типом «int». Далее значение этой переменной будет передаваться сервису «Text to Speech (TTS)».
Определив основные переменные, приступим к созданию связей между элементами нашего блока Activity. Для начала свяжем вход нашего Activity с блоком «If». Далее, если установить курсор в поле блока «If», мы увидим список доступных переменных. В данном случае нам нужна переменная «А». Для проверки установим А < 11.
Затем свяжем блок «If» с блоком «Calculate». В блоке «Calculate» укажем А + 1.
Дополнительно создадим связь блока «If» с уведомлением (Notification) нашего блока Activity. Данной связью мы передаем новое значение в переменную «ChangeA», которая в конечном итоге передает значение непосредственно сервису «Text to Speech (TTS)».
Для того чтобы рекурсия заработала, нам необходимо перейти на основное поле «Diagram», выделить блок Activity и скопировать его в память (Ctrl+C). Затем перейти, снова, в блок Activity и вставить блок в себя (Ctrl+V). После чего создать связь блока «Calculate» с Activity.
На этом создание Activity закончено. Теперь осталось завершить программу добавив в нее сервис «Text to Speech (TTS)» и связать с нашим Activity.
В окне «Services» отыщите сервис «Text to Speech (TTS)» и перенесите его на основную область диаграммы. И не забудьте добавить блок «Data», он понадобиться для присваивания первого значения переменной «А». Свяжите блок «Data» с блоком Activity, указав, что значение блока «Data» должно передаваться в переменную блока Activity.
Выделите блок Activity, скопируйте его в память, и вставьте его копию на основной диаграмме. Данная копия блока Activity является его рабочей ссылкой, это один и тот же Activity.
И завершающим действием является связь между блоком Activity и сервисом «Text to Speech (TTS)». А в самом сервисе «Text to Speech (TTS)» мы используем один из его методов «Say Text», передавая значение переменной «ChangeA» в переменную действия «SpeechText».
Запустив данное приложение, Вы должны услышать из динамиков Вашего компьютера голос робота произносящего последовательно числа от 1 до 10.
В следующей статье мы рассмотрим пример более сложной программы, функционал которой будет ориентирован на исполнение задач в Симуляторе. Более детально познакомимся, как запускать программы в Симуляторе, и как управлять средой Симулятора.
06.06.2008
Серенко Максим
Simplect™ - Simple intellect
|