Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатизация инженерного образования (выпуск 1)

.pdf
Скачиваний:
104
Добавлен:
28.06.2014
Размер:
22.7 Mб
Скачать

П Р И Л О Ж Е Н И Я

Теперь рассмотрим программный код, обеспечивающий функционирование виртуального лабораторного стенда:

1 import Devices.Connection;

2 import Devices.Generator;

3 import Devices.OscillographFull;

4 // Сценарий, обеспечивающий функционирование стенда

5 var osc:Devices.OscillographFull;// осциллограф

6 var genY:Devices.SimpleGenerator;// генератор сигнала по оси Y

7 var genX:Devices.SimpleGenerator;// генератор сигнала по Х

8 var connection1:Devices.Connection; // соединение 1

9 var connection2:Devices.Connection; // соединение 2

10 var connection3:Devices.Connection;// соединение 3

11 var connection4:Devices.Connection;// соединение 4

12 var isConnected :Boolean = false;// выполнены ли соединения?

13 var msg_txt:TextField;//начальное сообщение для пользователей

14 var oscData = []; // данные для осциллографа

15 var dataX = []; // данные по X

16 var dataY = []; // данные по Y

17 // Инициализируем сообщение пользователю

18 msg_txt.background = true;

19 msg_txt.backgroundColor = 0xd5dce5;

20 msg_txt.border = true;

21msg_txt.borderColor=0x586d90;

22// Обрабатываем выполнение соединений

23connectionListener = [];

24// Слушатель

25connectionListener.connected = function(obj:Object)

26{

27// Проверяем, все ли соединения выполнены

28var b=[];

29b[0] = connection1.isConnected;

30b[1] = connection2.isConnected;

31b[2] = connection3.isConnected;

32b[3] = connection4.isConnected;

33isConnected = true;

34for (var i=0;i<=3;i++) isConnected = isConnected && b[i];

35if (isConnected)// cоединение выполнено

36{

37msg_txt._visible = false;

38osc.enabled = true;// активизируем осциллограф

39osc.On = false; // на всякий случай выключаем осциллограф

40genY.enabled = true;// активизируем генератор

41genY.On = false;// выключаем генератор

42genX.enabled = true;// активизируем генератор

43genX.On = false;// выключаем генератор

44}

824

П р и л о ж е н и е 12.1

45}

46// Добавляем слушателей к соединениям

47connection1.addEventListener(«connected», connectionListener);

48connection2.addEventListener(«connected», connectionListener);

49connection3.addEventListener(«connected», connectionListener);

50connection4.addEventListener(«connected», connectionListener);

51// Обрабатываем изменение данных на генераторах

52var changeListener={};

53changeListener.change = function(obj:Object)

54{

55// Если пришли данные от генераторов

56if(obj.data)

57{

58if(obj.target==genX)

59{

60for (var i=0; i< obj.data.data.length; i++)

61dataX[i]=obj.data.data[i][1];

62}

63if(obj.target==genY)

64{

65for (var i=0; i< obj.data.data.length; i++)

66dataY[i]=obj.data.data[i][1];

67}

68}

69// Формируем данные

70for(var i=0; i<dataX.length; i++)

71{

72if(!oscData[i]) oscData[i] = [];

73oscData[i][0] = dataX[i];

74}

75for(var i=0; i<dataY.length; i++)

76{

77if(!oscData[i]) oscData[i] = [];

78oscData[i][1] = dataY[i];

79}

80if(!(osc.On && genX.On && genY.On)) oscData = [];

81if(osc.On) osc.Plot(oscData); // отображаем данные

82}

83// Добавляем слушателей к генераторам и осциллографу

84genY.addEventListener(«change», changeListener);

85genX.addEventListener(«change», changeListener);

86osc.addEventListener(«change», changeListener);

Сценарий предваряет импорт классов компонентов, используемых в виртуальном стенде (строки 1—3). Далее объявляются переменные, описывающие компоненты и данные — выходные для генераторов и входные для осциллографа (5—16).

825

П Р И Л О Ж Е Н И Я

Здесь же описана булева переменная isConnected, принимающая значения true при правильном соединении приборов, а также переменная msg_txt, описывающая текстовый блок с сообщением.

Подготовка к выводу на экран сообщения приведена в строках 17—21. Значения true для свойств background и border указывают на то, что отображаются фон и рамка текстового блока. Цвет фона и рамки задаются атрибутами backgroundColor и borderColor.

Источником данных для осциллографа являются выходные данные генератора. Стенд предполагает изменение как амплитуды, так и частоты сигналов генераторов. Естественно, это должно вести к изменению состояния осциллографа. Данную ситуацию можно обрабатывать следующим образом. Изменение входных данных связано с изменением положения регулятора, либо переключением пределов прибора. С этими изменениями можно связать события. Далее к этим событиям можно привязать обработчики, которые формируют данные для осциллографа в соответствии с текущими сигналами генераторов. Средства программирования Flash позволяют изящно решить эту задачу, используя объекты-слушатели.

Для генератора используется событие change, возбуждаемое при его включении, изменении частоты или амплитуды сигнала. Создадим объект-слушатель событий, который перехватывает событие и осуществляет его обработку. Объектыслушатели используются в нашем лабораторном стенде для проверки правильности электрических соединений и подготовки данных для осциллографа.

Рис. П.12.1.51. Виртуальный лабораторный стенд для исследования фигур Лиссажу в работе

826

П р и л о ж е н и е 12.1

Рассмотрим подробнее применение слушателей событий на примере проверки электрических соединений. В строке 23 описан массив слушателей connectionListener события connected. СоnnectionListener задается как массив, поскольку у нас четыре соединения и для каждого необходим свой слушатель. Напомним, что событие connected генерируется при перетаскивании клемм соединения.

В строках 25—45 приведен обработчик события слушателем. В сценарии обработчика проверяется правильность выполненич соединения. В случае правильной коммутации активизируются осциллограф и генераторы, после этого их можно включать и выключать.

Для привязки объектов-слушателей используется метод addListener объектов соединений connection1, connection2, connection3, connection4. Этот метод принимает два параметра — событие connected и экземпляры объектов-слушателей (строки 47—50).

Объект changeListener является слушателем события change, возбуждаемого при включении осциллографа, изменении частоты и амплитуды генераторов. Описание слушателя приведено в строке 52. Обработчику события соответствуют строки 53—82. Привязке слушателя к объектам osc (осциллограф) и genX, genY (генераторы) соответствуют строки 84—86.

Написание программного кода закончено. Транслируем документ, запускаем исполняемый модуль виртуальной работы, получаем приглашение к работе, собираем схему, включаем приборы и начинаем работать. Задаем частоту и амплитуду, наблюдаем фигуру Лиссажу на экране осциллографа, меняем положение фигуры и масштаб (рис. П.12.1.51).

Создание Flash-приложения проверки знаний

В комплект поставки Flash входит большое количество шаблонов для создания различных приложений, включая слайд-шоу, презентации и т.п. Рассмотрим создание приложения для самопроверки знаний.

Создадим файл документа. Для этого следует выполнить следующие действия:

в меню File выбрать пункт New…;

в появившемся диалоговом окне New Document перейти на вкладку Tem-

plates (Шаблоны), выбрать шаблон опроса Quiz_style2* категории Quiz (Опросы) (рис. П.12.1.52), подтвердить выбор нажатием кнопки OK;

на экране появится документ Flash с именем Untitled-1, который переименуем в Quiz_ETM с помощью пункта Save As… меню File (рис. П.12.1.52).

Приложение опроса включает в себя:

титульный лист, который должен отражать назначение нашего приложения;

шесть последовательных кадров, на каждом из которых размещаются вопросы разных типов, включая: выбор правильного ответа перетаскиванием пиктограммы ответа в нужное место, выбор одного варианта из многих, да/нет, ответ в виде

текстовой строки, выбор многих вариантов из многих при задании вариантов

ввиде пиктограмм или строк;

заключительный кадр с выводом статистики результата опроса с указанием числа правильных и неправильных ответов, а также процент правильных ответов.

* Имеются и другие шаблоны опросов, поэкспериментируйте с выбором шаблона.

827

П Р И Л О Ж Е Н И Я

Рис. П.12.1.52. Диалоговое окно создания документа по шаблону

Рис. П.12.1.53. Документ для создания опроса

828

П р и л о ж е н и е 12.1

Изменим название титульного листа. Снимем блокировку режима редактирования слоя Title, щелкнув мышью на пиктограмме в виде замка. Текстовые надписи представляют собой статические поля. Чтобы измененить содержание поля, необходимо выбрать инструмент для работы с текстом на панели рисования, щелкнуть мышью на тексте и внести необходимые изменения. Окончательно титульный лист примет вид, приведенный на рис. П.12.1.54

Слева от изображения титульной страницы за пределами рабочего поля располагается панель с инструкциями. Эта панель не отображается при выполнении приложения, поскольку находится за пределами рабочего листа и представляет собой компонент, с помощью которого и осуществляется задание параметров приложения опроса. Кроме того, он содержит сценарии для работы приложения. Поэтому этот компонент ни в коем случае нельзя удалять. Посмотрим, какие параметры настройки приложения необходимо задать. Для этого щелкнем мышью на компоненте и выберем в меню Window | Development Panels | Component Inspector (Окно | Панели разработки | Инспектор компонентов), появится панель инспектора компонентов (рис. П.12.1.55).

Для удобства можно отбуксировать окно инспектора от панели в правой части окна интегрированной системы разработки, перетащив его за треугольник в левой части заголовка окна и увеличив размер. Установкой флажка Randomize (Случайный порядок) задается случайный порядок следования вопросов, не зависящий от их расположения на временной шкале. Число вопросов, предъявляемых пользователю, задается в поле Questions to Ask (Число вопросов). По умолчанию,

Рис. П.12.1.54. Измененный титульный лист приложения-опроса

829

П Р И Л О Ж Е Н И Я

Рис. П.12.1.55. Задаем параметры приложения опроса

при значении равном 0, задаются все вопросы, имеющиеся в опросе. Если число, указанное в этом поле, превышает число вопросов в приложении, то также задаются все вопросы. Режим опроса, когда число предъявляемых вопросов меньше числа вопросов приложения, представляет интерес при использовании случайного следования, если мы хотим работать с некоторой выборкой вопросов. Установите флажок Show Results Page (Показать результаты), если нужно отобразить результаты прохождения опроса пользователем.

Перейдем к формированию вопросов и контролю ответов. Выберем второй кадр. Ответ указывается перетаскиванием объектов в нужное место экрана. Заготовка страницы приведена на П.12.1.56.

Для указания ответа необходимо взять элемент в левой части экрана и перетащить его на элемент в правой части. Настройка осуществляется следующим образом. Для внесения изменений в кадр следует сделать независимыми все объекты кадра. Тексты при этом будут преобразованы в графические объекты. Делается это выбором в меню Modify | Break Apart. При этом будут выделены все объекты, снимается выделение нажатием клавиш Ctrl+Shift+A. Настройки выполняются в инспекторе компонентов, для чего необходимо предварительно щелкнуть на компоненте на нижней панели слева (рис. П.12.1.57).

В левом столбце Drag Object Name (Имя перетаскиваемого объекта) приводятся имена перетаскиваемых экземпляров-объектов, целевые объекты, на которые осуществляется перетаскивание, перечислены в правом столбце Matches Target Name (Имена целевых объектов). Соответствие задается построчно. Если установлен флажок Snap to Start и для объекта не указано место, куда он должен быть перетащен, то при попытке перемещения он возвращается на прежнее место.

830

П р и л о ж е н и е 12.1

Рис. П.12.1.56. Заготовка для ответа на вопросы с помощью перетаскивания мышью

Рис. П.12.1.57. Настройка параметров вопроса с указанием ответа перетаскиванием

831

ПР И Л О Ж Е Н И Я

Спомощью данного типа опроса создадим вопрос, в котором необходимо осуществить перетаскивание элементов. Представим, что нам нужно упорядочить список материалов в соответствии со значениями диэлектрической проницаемости. В качестве списка возьмем четыре материала: сегнетоэлектрик, поливинилхлорид, полиэтилен, электротехническое стекло.

Поступим следующим образом. Удалим объекты drag1…drag4, target1…target4 из кадра в рабочем окне, сотрем их имена в панели инспектора. Перетаскиваемые объекты будем обозначать в виде прямоугольника с именем материала. Целевые объекты обозначим прямоугольниками с номерами. Подготовим элементы, разместив их в кадре. Далее, чтобы сделать элементы доступными в приложении, преобразуем их в образцы-клипы с именами mat1…mat4 для материалов и pos1…pos4 для целевых объектов.

Для этого выделим каждый из графических элементов и воспользуемся командой Convert to Symbol… меню Modify. Затем обратимся к окну Library и переместим созданные образцы в папку Quiz Files/Learning Interaction/Assets/Graphics/ DragAndDrop. В результате этого в кадре разместятся экземпляры клипов, зададим им имена: для материалов material_1 … material_4, для целевых объектов position_1 … position_4. Соответствие материалов объектам material и position приведено в табл. П.12.1.2.

После этого нужно занести информацию об объектах в столбцы Drag Object Name и Matches Target Name инспектора компонентов DragAndDrop, а также поместить текст вопроса «Расположите в порядке убывания величины диэлектрической проницаемости в следующие материалы» в поле Question (рис. П.12.1.57).

Переведем на русский язык названия кнопок и комментарии в окне сообщения. Для этого выделим кнопку, на панели ее свойств в поле Label сменим название с английского на русское. Название кнопки также задается в компоненте DragAndDrop. Перейдем в окно инспектора и нажмем кнопку Options в нижней части окна. В появившейся форме (рис. П.12.1.58) в поле Initial Feedback вводим указание «Выберите объект и перетащите его». В поле Evaluate Feedback отмечается, что для проверки следует нажать кнопку Проверить ответ. Тексты сообщений в случае правильного и неправильного ответов задаются в поле Correct Feedback и соответственно Incorrect Feedback. В этой же форме задается число попыток ответа на вопрос в поле Tries. В случае неправильного ответа будет предложено повторить попытку. Текст приглашения на повторение ответа вводится в поле Tries. Выбором переключателя Off группы Navigation будет выключена кнопка перехода к следующему кадру до тех пор, пока не будет проверен ответ.

Для изменения названия кнопок следует выбрать вкладку Assets в нижнем правом углу окна инспектора компонентов (рис. П.12.1.59).

 

 

 

Таблица П.12.1.2

 

Соответствие материалов объектам material и position

 

 

 

 

Материал

 

Перетаскиваемый объект

Объект назначения

 

 

 

 

Стекло

 

material_1

position_2

Сегнетоэлектрики

 

material_2

position_1

Полиэтилен

 

material_3

position_4

Поливинилхлорид

 

material_4

position_3

 

 

 

 

832

П р и л о ж е н и е 12.1

Рис. П.12.1.58. Настройка сообщений

Рис. П.12.1.59. Меняем названия кнопок

833