Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

10. Редактор сценариев

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

Содержание раздела:

Общие сведения о Редакторе сценариев

Редактирование сценарных процедур

Исполнение сценарных процедур

Отладка сценарных процедур

Создание сценарных процедур в GENIE

10.1 Общие сведения о Редакторе сценариев

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

10.1.1 Панель инструментов

Перечень кнопок, входящих в панель инструментов Редактора сценариев, и описание их назначения приведены ниже. Более подробная информация о каждом органе управления применительно к контексту, в котором он может применяться, изложена в соответствующих частях настоящего раздела.

Остановить

Остановить исполнение сценария. Точка останова Добавить или удалить точку останова в текст сценария Контрольное значение Вывести диалоговую панель Add Watch (Контрольное значение), в которой указать имя переменной Бейсик - сценария. Имя данной переменной и ее значение будут отображаться в специальной полосе наблюдения окна Редактора сценария.

НЕ нашли? Не то? Что вы ищете?

Вызовы

Вывести на экран список процедур, вызванных текущим исполняющимся Бейсик-сценарием. Данный орган управления доступен только после прерывания исполнения с помощью команды Прервать.

Следующая инструкция

Выполнить инструкцию в следующей строке Бейсик - сценария и прервать исполнение. Если в строке имеется вызов другой процедуры Бейсик-сценария, исполнение будет продолжено со следующей инструкции вызванной процедуры. Следующая процедура Выполнить инструкцию в следующей строке Бейсик- сценария и прервать исполнение. Если в строке имеется вызов другой процедуры Бейсик-сценария, данная процедура будет выполнена целиком.

ПРИМЕЧАНИЕ. При помещении курсора в область отображения кнопки панели инструментов Редактора сценариев и удержании его в неподвижном состоянии в течение около 1 с, в область ниже курсора будет выведено краткое описание данной кнопки.

10.2 Редактирование сценария

Настоящий подраздел содержит описание способов редактирования текста программных процедур, создаваемых с помощью Редактора сценариев. Хотя способы редактирования текста программ в Редакторе сценариев во многом аналогичны применяемым в стандартных текстовых редакторах для редактирования обычного текста, Редактор сценариев обладает рядом специфических возможностей, ориентированных на более эффективное применение по отношению к тексту Бейсик-сценариев. Ознакомление с настоящим подразделом позволит пользователю получить представление о приемах перемещения по тексту в пределах сценарной процедуры, о способах удаления и вставки фрагментов текста, отмены результата последней операции редактирования, а также о редактировании с использованием универсального буфера обмена Clipboard. Перечень органов управления панели инструментов Редактора сценариев, позволяющих ускорить наиболее часто используемые операции редактирования представлен в предыдущем подразделе.

10.2.1 Перемещение по тексту Бейсик-сценария

Приведенные в предыдущих разделах списки комбинаций клавиш, предназначенных для выполнения различных операций с использованием клавиатуры, содержат группу комбинаций клавиш, посредством которых возможно перемещение текстового курсора в пределах текста Бейсик-сценария. При использовании клавиатуры для перемещения текстового курсора прокрутка текста в окне Редактора сценариев выполняется только в том случае, если позиция, в которую должен быть помещен текстовый курсор, не находится в пределах текущего отображаемого фрагмента текста. Кроме того, перемещение текстового курсора может выполняться при помощи графического курсора мыши либо путем выполнения команды Goto Line (Перейти к строке), описание которой приведено ниже.

Редактор сценариев, в отличие от большинства текстовых редакторов, позволяет помещать текстовый курсор в любое место рабочей области размещения текста в окне, включая "незаполненное пространство". (Незаполненное пространство является областью окна редактирования, в пределах которой отсутствует какой-либо текст, включая символы табуляции и область, лежащую ниже последнего символа в последней строке текста Бейсик-сценария.) Ниже приведены указания по перемещению текстового курсора (позиции начала ввода текста) с помощью мыши. Данный прием особенно удобен в случаях, когда позиция, в которую требуется поместить текстовый курсор, находится в пределах видимой области окна редактирования.

Для перемещения позиции начала ввода текста с использованием мыши:

1. С помощью вертикальной полосы прокрутки, расположенной в правой части окна Редактора сценариев, сделайте видимой область окна редактирования, в пределах которой находится целевая позиция. Данная операция выполняется в случае, если целевая позиция находится за пределами текущей видимой области окна редактирования.

2. Поместите курсор мыши в позицию, начиная с которой требуется начать ввод текста или редактирование.

3. Выполните щелчок левой клавишей мыши.

Текстовый курсор будет установлен в требуемую позицию.

ПРИМЕЧАНИЕ. В процессе прокрутки текста в окне редактирования с помощью мыши, текстовый курсор сохраняет свое текущее положение до тех пор, пока не будет совершен щелчок левой клавишей мыши в другой позиции видимой области отображения. При попытке приступить к редактированию, когда позиция текстового курсора находится вне пределов видимой области окна редактирования, перед началом редактирования произойдет автоматическая прокрутка текста до появления текстового курсора в видимой области окна редактирования.

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

Для перемещения позиции начала ввода текста в требуемую строку текста сценария:

1. Нажмите клавишу "F4". На экран монитора будет выведена диалоговая панель Goto Line (Перейти к строке) Редактора сценариев.

2. Введите номер строки текста Бейсик-сценария, в которую требуется поместить текстовый курсор.

3. Нажмите клавишу "Enter" или кнопку OK.

Текстовый курсор будет перемещен в начало строки, номер которой был задан в диалоговой панели Goto Line (Перейти к строке). Если данная строка находится вне пределов видимой области окна редактирования, произойдет автоматическая прокрутка текста до появления текстового курсора в видимой области окна редактирования.

ПРИМЕЧАНИЕ. Текстовый курсор не может быть перемещен в строку, находящуюся за пределами последней строки текста Бейсик-сценария. По достижении последней строки сценария вертикальная прокрутка будет прекращена, достигнутая строка будет располагаться в верхней части окна редактирования, а дальнейшее перемещение курсора в область, лежащую ниже данного окна редактирования, станет невозможным.

10.2.2 Ввод текста

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

Однако, как отмечалось в предыдущих подразделах настоящего руководства, Редактор сценариев обеспечивает возможность помещения текстового курсора в любое место рабочей области окна сценарной процедуры, включая "пустые пробелы" ("незаполненное пространство"). Это означает, что пользователь может ввести текст комментария после последнего символа строки исходного текста программы. Обсуждение способов вставки комментариев в текст сценария приведено ниже. При вводе символов правее последнего символа в строке (конца строки) пространство между концом строки и первым введенным символом будет заполнено символами табуляции. Другое отличие Редактора сценариев от стандартных текстовых редакторов состоит в том, что при вводе текста не происходит его автоматической прокрутки (автоматический переход на другую строку по достижении конца текущей). При длительном вводе текста в пределах одной строки в конечном итоге может быть достигнут физический конец данной строки, ввод символов за пределами которого будет невозможным. Таким образом, вставка каждой новой строки текста сценария должна выполняться посредством нажатия клавиши "Enter". Результат нажатия данной клавиши зависит от местоположения текстового курсора в момент ее нажатия:

Если в момент нажатия клавиши "Enter" текстовый курсор находится в конце текущей строки текста или в области незаполненного пространства текущей строки, в сценарий будет вставлена новая строка, располагаемая после текущей.

Если в момент нажатия клавиши "Enter" текстовый курсор находится в начале текущей строки текста, в сценарий будет вставлена новая строка, располагаемая перед текущей.

Если в момент нажатия клавиши "Enter" текстовый курсор находится в пределах текста текущей строки, текущая строка будет разделена на две, начиная с текущей позиции. При нажатии клавиши "Tab" (табуляция), в позицию, начиная с текущего положения текстового курсора, будет вставлен символ табуляции, что приведет к смещению текста, располагаемого после символа табуляции, в следующую позицию табуляции. При вводе нового текста в пределах пространства, расширенного табуляцией, текст, находившийся ранее в пределах этого пространства, будет смещаться в следующую позицию табуляции при каждом очередном достижении вновь вводимым текстом очередной позиции табуляции.

При вводе в окне Редактора сценариев текста, соответствующего ключевым словам и другим предопределенным объектам Бейсик-сценария, шрифт указанного текста будет отображаться с использованием различных цветов. Имеется возможность изменения палитры цветов, принятой по умолчанию:

Ключевые слова Бейсик-сценария отображаются синим цветом.

Идентификаторы Бейсик-сценария отображаются черным цветом.

Комментарии (текст, начинающийся с символа "апостроф" или с ключевого слова "REM") отображаются зеленым цветом.

10.2.3 Выделение текста

Для выделения фрагментов текста или отдельных символов Бейсик-сценария может использоваться как клавиатура, так и мышь. Независимо от применяемого способа, Редактор сценариев обеспечивает возможность выделения как части одной строки, так и нескольких соседних строк текста. Одновременное выделение части одной строки и нескольких соседних целых строк невозможно. При выделении нескольких строк в случае, если текстовый курсор располагается в пределах первой или последней строки выделяемого фрагмента, выделение будет автоматически расширено до начала первой или до конца последней строки.

Для выделения текста с использованием мыши:

1. Поместите курсор мыши в позицию, от которой требуется начать выделение текста.

2. Удерживая левую клавишу мыши в нажатом состоянии, переместите курсор мыши в позицию, которой оканчивается фрагмент, подлежащий выделению, после чего отпустите левую клавишу мыши.

Для выделения текста с использованием клавиатуры:

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

2. Удерживая клавишу "Shift" в нажатом состоянии, с помощью клавиш переместите текстовый курсор в позицию, которой оканчивается фрагмент, подлежащий выделению. Выделенный фрагмент текста будет отображаться шрифтом белого цвета на темном фоне.

ПРИМЕЧАНИЕ. При необходимости выделения одной целой строки сценария следует продолжать выделение, пока не будет достигнут физический конец строки (скрытый символ конца строки, который предшествует началу следующей строки).

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

10.2.4 Удаление текста

При выполнении операции удаления фрагмента текста производится его полное удаление из сценария без помещения в универсальный буфер обмена Clipboard. Настоящий подраздел содержит описание приемов удаления одного или более символов, выделенного фрагмента текста или нескольких строк из сценария.

Удаление текста

Для удаления одного символа, расположенного слева от текущей позиции текстового курсора, следует однократно нажать клавишу "BkSp" ("забой"). Для удаления одного символа, расположенного справа от текущей позиции текстового курсора, следует однократно нажать и отпустить клавишу "Del". Для удаления нескольких символов следует нажать и удерживать клавишу "BkSp" или "Del" до завершения удаления требуемого количества символов. Для удаления выделенного фрагмента текста следует однократно нажать и отпустить клавишу "BkSp" или "Del".

Для удаления целой строки поместите текстовый курсор в любую позицию данной строки и нажмите комбинацию клавиш "Ctrl"+"Y".

Ниже приведено описание способа удаления нежелательных символов перевода строки из текста сценария. Для объединения текущей строки со следующей:

1. Поместите текстовый курсор в позицию, расположенную справа от последнего символа в текущей строке.

2. Однократно нажмите клавишу "Del" для удаления скрытого символа конца строки.

Строка, следующая за текущей, будет присоединена к концу текущей строки.

ПРИМЕЧАНИЕ. Если в конце текущей строки находится один или несколько символов пробела, для удаления данных символов и скрытого символа конца строки потребуется многократно нажать клавишу "Del". Помещение текстового курсора в позицию, расположенную слева от первого символа следующей строки, и однократное нажатие клавиши "BkSp" не приведет к объединению следующей строки с текущей.

10.2.5 Вырезка и копирование фрагментов текста

Имеется возможность помещения выделенного фрагмента текста сценария в универсальный буфер обмена Clipboard с помощью выполнения операции вырезания или копирования. Для вырезки выделенного фрагмента текста нажмите комбинацию клавиш "Ctrl"+"X". Выделенный фрагмента текста будет удален из окна Редактора сценариев и помещен в универсальный буфер обмена. Для копирования выделенного фрагмента текста в универсальный буфер обмена нажмите комбинацию клавиш "Ctrl"+"C". Копия выделенного фрагмента текста будет помещена в универсальный буфер обмена.

10.2.6 Вставка фрагментов текста

После вырезания фрагмента текста или помещения его копии в универсальный буфер обмена, имеется возможность вставки содержимого универсального буфера обмена в другую позицию окна Редактора сценариев.

Для вставки содержимого универсального буфера обмена в окно Редактора сценариев:

1. Поместите текстовый курсор в позицию, начиная с которой должен быть вставлен фрагмент текста из универсального буфера обмена.

2. Нажмите комбинацию клавиш "Ctrl"+"V".

Содержимое универсального обмена будет вставлено в окно Редактора сценариев, начиная с позиции текстового курсора. Если требуется заменить фрагмент текста содержимым универсального буфера обмена, следует выделить заменяемый фрагмент текста и нажать комбинацию клавиш "Ctrl"+"V".

Отмена операций редактирования

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

Вставку последовательностей символов

Вставку текстового блока из универсального буфера обмена Clipboard

Удаление последовательности символов

Удаление или вырезание текстового блока.

Операции редактирования, выполнение которых не привело к внесению изменений в текст сценария, отменить невозможно. К указанным операциям относится перемещение текстового курсора, выделение фрагментов текста и копирование фрагментов текста в универсальный буфер обмена. Для отмены операции редактирования нажмите комбинацию клавиш "Ctrl"+"Z". Сценарий будет выглядеть так, как он выглядел до выполнения последней операции редактирования.

10.2.7 Вставка комментариев в текст сценария

Комментарии могут быть вставлены в текст сценария для документирования действий, выполняемых создаваемым программным кодом. При исполнении сценария комментарии игнорируются. В Бейсик - сценарии символ "апостроф" ( ' ) указывает на то, что текст, расположенный справа от апострофа до конца строки, является текстом комментария.

Ниже представлен способ создания целой строки комментария.

Для добавления комментария, занимающего целую строку:

1. Введите символ "апостроф" ( ' ) в начале строки.

2. Введите текст комментария, начиная с позиции, расположенной справа от апострофа.

При запуске сценария на исполнение, наличие апострофа в начале строки приведет к тому, что вся строка будет пропущена интерпретатором.

Ниже представлен способ создания комментария, располагаемого в правой части строки после программного кода.

Для добавления комментария в конце строки программного кода:

1. Поместите текстовый курсор в позицию, расположенную справа от последнего символа программного кода в текущей строке.

2. Введите символ "апостроф" ( ' )

3. Введите текст комментария, начиная с позиции, расположенной справа от апострофа.

Рис. 10-1. Добавление комментариев в сценарий

При исполнении сценария, программный код в левой от комментария части строки будет выполнен, а наличие апострофа приведет к тому, что оставшаяся часть строки будет пропущена интерпретатором. Хотя комментарий может быть помещен справа от конца строки программного кода, добавление программного кода справа от конца комментария не допускается. Наличие апострофа в начале комментария приведет к тому, что оставшаяся часть строки справа от апострофа, включая программный код, будет пропущена интерпретатором.

10.2.8 Разбиение операторов Бейсик-сценария на несколько строк

По умолчанию в Редакторе сценариев один оператор может содержаться только в одной строке, а каждый символ перевода строки означает начало нового оператора. Имеется возможность обойти данное соглашение и разбить один "длинный" оператор на две и более строк. Ниже приведено описание способа разбиения операторов Бейсик-сценария на две и более строк, а также определения ситуации, когда несколько строк сценария следует рассматривать как один оператор.

Для разбиения оператора Бейсик-сценария на несколько строк:

1. Введите оператор Бейсик-сценария в несколько строк, как требуется для его наилучшего восприятия в окне Редактора сценариев.

2. Поместите текстовый курсор в конец первой строки, содержащей часть оператора.

3. Однократно нажмите клавишу "Пробел".

4. Введите символ подчеркивания ( - ).

ПРИМЕЧАНИЕ. Символ подчеркивания в Бейсик-сценарии является символом продолжения строки, который указывает на тот факт, что оператор будет продолжен на следующей строке.

5. Повторите действия, описанные в п. 2—4, для всех строк, содержащих части разбиваемого оператора, исключая последнюю.

Рис. 10-2. Разбиение операторов на несколько строк

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

10.2.9 Поиск синтаксических ошибок в тексте сценарной процедуры

При попытке запуска на исполнение или отладки сценария, для которого не была проведена проверка синтаксиса, указанная проверка будет выполнена Редактором сценариев автоматически перед началом исполнения.

Ниже представлен способ поиска синтаксических ошибок при редактировании сценария, выполняемого разработчиком сценария вручную без запуска на исполнение.

Рис. 10-3. Проверка синтаксиса в сценарии

Для выполнения проверки синтаксиса:

1. Выберите строку Syntax Check (Проверка синтаксиса) меню Run (Запуск) в окне Редактора сценариев.

На экран монитора будет выведено сообщение Редактора сценариев, указывающее на наличие или отсутствие ошибок в тексте сценария. Сообщение об ошибке относится к первой строке, в которой была обнаружена ошибка, и содержит краткое описание пояснение причины, по которой синтаксис в указанной строке признан неверным.

2. Нажмите кнопку OK в диалоговой панели сообщения об ошибке или нажмите клавишу "Enter".

Строка сценария, в которой обнаружена синтаксическая ошибка, будет выделена в окне Редактора сценариев.

3. Устраните обнаруженную ошибку.

4. Повторяйте действия, описанные в п. 1—3, до тех пор, пока не будут обнаружены и устранены все допущенные синтаксические ошибки.

10.3 Запуск сценарных процедур на исполнение

По завершении ввода и редактирования исходного текста сценария имеется возможность запуска его на исполнение. Кроме того, после запуска сценария может потребоваться приостановка и полная остановка его исполнения.

Ниже представлен способ предварительной компиляции сценария и последующего запуска его на исполнение.

Для запуска сценария на исполнение нажмите кнопку Исполнить в панели инструментов Редактора сценариев или нажмите клавишу "F5". При этом производится предварительная компиляция сценария (если компиляция не была выполнена ранее), передача фокуса ввода родительскому окну (окну, из которого было вызвано окно Редактора сценариев) и запуск сценария на исполнение.

ПРИМЕЧАНИЕ. При исполнении сценария, доступ к окну Редактора сценариев становится ограниченным, что проявляется в блокировании некоторых пунктов меню и кнопок панели инструментов.

Для приостановки исполняющегося сценария нажмите комбинацию клавиш "Ctrl"+"Break". Исполнение сценария будет приостановлено с выделением строки программного кода, на которой произошла приостановка, с помощью указателя инструкции.

ПРИМЕЧАНИЕ. Указатель инструкции устанавливается на строку программного кода, которая будет выполнена следующей при возобновлении исполнения сценария, и представляет собой полосу выделения серого цвета.

Для завершения исполнения сценария нажмите кнопку Остановить в панели инструментов Редактора сценариев.

ПРИМЕЧАНИЕ. Многие пункты меню и органы управления в панели инструментов Редактора сценариев могут быть блокированы при исполнении сценария. Если при необходимости завершить исполнение сценария обнаруживается, что панель инструментов окна Редактора сценариев блокирована, следует нажать комбинацию клавиш "Ctrl"+"Break", после чего нажать кнопку Остановить в панели инструментов.

10.4 Отладка сценарных процедур

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

10.4.1 Использование отладчика Редактора сценариев

Рис. 10-4. Использование отладчика Бейсик-сценария

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

10.4.2 Пошаговое исполнение сценария

В Редакторе сценариев предусмотрено два способа пошагового исполнения сценариев: пошаговое покомандное исполнение и пошаговое процедурное исполнение. Оба способа предполагают исполнение одной строки программного кода сценария с последующим прерыванием исполнения на каждом шаге. Основное отличие между указанными способами пошагового исполнения состоит в том, что в процессе пошагового покомандного исполнения при наличии в следующей строке вызова функции или процедуры происходит переход в тело вызываемой процедуры и ее последующее пошаговое исполнение, тогда как при пошаговом процедурном исполнении наличие в следующей строке вызова функции или процедуры приведет к исполнению всей процедуры за один шаг с переходом к следующей строке сценария.

Рис. 10-5. Указатель инструкции при пошаговом исполнении сценария

Ниже приведено описание способов пошагового покомандного исполнения и пошагового процедурного исполнения сценариев.

1. Для выполнения одной строки сценария нажмите кнопку Следующая инструкция для пошагового покомандного исполнения или кнопку Следующая процедура для пошагового процедурного исполнения. Для выполнения тех же действий нажмите клавишу "F8" для пошагового покомандного исполнения или комбинацию клавиш "Shift"+"F8" для пошагового процедурного исполнения. Редактор сценариев поместит указатель инструкции на строку, содержащую имя главной сценарной процедуры (например, Sub Main()).

ПРИМЕЧАНИЕ. Перед началом пошагового исполнения сценария одним из описанных выше способов произойдет предварительная компиляция программного кода сценария, если данная операция не была выполнена ранее. Таким образом, перед началом исполнения может иметь место небольшая пауза. Если в исходном тексте сценария имеются синтаксические ошибки, его исполнение будет прервано. Перед началом отладки сценария следует предварительно устранить все синтаксические ошибки, выявленные на этапе компиляции.

2. Для продолжения пошагового построчного исполнения сценария повторите действия, описанные в п. 1. При каждом повторении действий, описанных в п. 1, Редактор сценариев выполняет программный код в строке, на которую установлен указатель инструкции, после чего происходит перемещение указателя инструкции на строку, которая подлежит исполнению на следующем шаге.

3. По завершении пошаговой отладки сценария, нажмите кнопку Исполнить панели инструментов (или нажмите клавишу "F5") для запуска на исполнение всего сценария. Для прекращения исполнения сценария нажмите кнопку Остановить панели инструментов. При пошаговом покомандном исполнении сценария может потребоваться определить все вызовы процедур, в результате которых была достигнута текущая строка, отмеченная указателем инструкции.

Ниже приведены сведения об использовании диалоговой панели Calls (Вызовы) для получения данной информации.

Для отображения диалоговой панели Calls:

1. Нажмите кнопку Вызовы, расположенную в панели инструментов окна Редактора сценариев. На экран монитора будет выведена диалоговая панель Calls (Вызовы), в списке которой содержатся имена всех процедур, которые были вызваны до достижения текущей строки, на которую установлен указатель инструкций.

2. Выберите в списке диалоговой панели имя процедуры, подлежащей просмотру.

3. Нажмите кнопку Show (Просмотр) диалоговой панели.

Редактор сценариев выделит текущую исполняющуюся строку в выбранной процедуре, при необходимости выполнив прокрутку текста в полосе редактирования (во время выполнения данных операций, указатель инструкции останется в своей прежней позиции).

При пошаговом исполнении процедуры может потребоваться повторить или пропустить исполнение какой-либо части программного кода. Ниже приведена информация по использованию команды Set Next Statement (установить следующий оператор) для перемещения указателя инструкции на другие строки программного кода отлаживаемой процедуры.

Для перемещения указателя инструкции на другую строку в пределах программного кода процедуры:

1. Поместите текстовый курсор в любую позицию строки, с которой требуется продолжить пошаговое исполнение сценария.

2. Выберите строку Set Next Statement меню Debug в главном окне Редактора сценариев.

Указатель инструкции будет установлен на выбранную строку, и пошаговое исполнение сценария может быть продолжено с указанной строки.

ПРИМЕЧАНИЕ. Команда Set Next Statement (установить следующий оператор) может быть использована только в пределах одной и той же процедуры. При установке указателя инструкции в строку, расположенную вне пределов отлаживаемой процедуры, строка Set Next Statementменю Debug будет блокирована.

10.4.3 Установка и снятие точек останова

При необходимости пошаговой построчной отладки сценария, начиная с первой строки, следует пользоваться методами, описание которых приведено в предыдущих подразделах. Если требуется выполнить отладку одного или нескольких фрагментов программного кода большого сценария, то использование указанных методов может быть достаточно затруднительным.

Рис. 10-6. Установка и снятие точек останова

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

Установка точек останова

Точки останова могут быть установлены в программном коде сценария для выполнения отладки части сценария, для возобновления отладки, начиная со строки, расположенной вне пределов текущей процедуры или для продолжения пошаговой отладки с заданной точки в программном коде сценария.

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

Ниже приведено описание способа отладки сценария с выбранной точки в пределах его программного кода.

Для начала отладки части сценария:

1. Поместите текстовый курсор в строку, начиная с которой требуется приступить к пошаговой отладке сценария.

2. Для установки точки останова в выбранную строку нажмите кнопку Точка останова панели инструментов Редактора сценариев либо нажмите клавишу "F9".

Шрифт строки, в которую помещена точка останова, будет выделен цветом, который отличается от цвета остальных строк сценария.

3. Нажмите кнопку Исполнить панели инструментов Редактора сценариев или нажмите клавишу "F5".

Редактор сценариев произведет запуск сценария на исполнение в обычном режиме, начиная с первой строки программного кода. Исполнение сценария будет прервано на строке, предшествующей содержащую точку останова. Указатель инструкции будет помещен на строку, в которой содержится достигнутая точка останова. Пошаговое исполнение сценария может быть возобновлено с указанной строки. При необходимости возобновления пошаговой отладки с другой строки в пределах одной и той же процедуры, следует воспользоваться командой Set Next Statement меню Debug Редактора сценариев.

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

Для возобновления отладки со строки, расположенной вне пределов текущей процедуры:

1. Поместите текстовый курсор в строку, начиная с которой требуется приступить к пошаговой отладке сценария.

2. Для установки точки останова в выбранную строку нажмите клавишу "F9".

3. Для запуска сценария нажмите кнопку Исполнить панели инструментов Редактора сценариев или нажмите клавишу "F5".

Редактор сценариев произведет запуск сценария на исполнение в обычном режиме. Исполнение сценария будет прервано на строке, предшествующей содержащую точку останова. Указатель инструкции будет помещен на строку, в которой содержится достигнутая точка останова. Пошаговое исполнение сценария может быть возобновлено с указанной строки.

Ниже приведено описание способа отладки фрагмента программного кода сценария с использованием точек останова.

Для отладки требуемых фрагментов программного кода сценария:

1. Установите точки останова в начале каждого фрагмента программного кода, подлежащего отладке.

ПРИМЕЧАНИЕ. До 255-ти строк сценария могут содержать точки останова.

2. Для запуска сценария нажмите кнопку Исполнить панели инструментов Редактора сценариев или нажмите клавишу "F5".

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

3. Выполните пошаговую отладку фрагмента кода.

4. Возобновите исполнение сценария нажатием кнопки Исполнить панели инструментов Редактора сценариев или нажмите клавишу "F5".

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

5. Повторите действия, описанные в п.3—4 до завершения пошаговой отладки всех фрагментов программного кода, отмеченных точками останова.

Снятие точек останова

Имеется возможность автоматического или ручного снятия установленных ранее точек останова.

Для снятия одной точки останова вручную:

1. Поместите текстовый курсор в строку, содержащую точку останова, которая подлежит снятию.

2. Нажмите кнопку Точка останова панели инструментов Редактора сценариев либо нажмите клавишу "F9".

Шрифт строки, в которую помещена точка останова, перестанет выделяться цветом, отличным от цвета остальных строк сценария.

Для снятия всех точек останова вручную выберите строку Clear All Breakpoints меню Debug Редактора сценариев.

Автоматическое снятие точек останова выполняется в следующих случаях:

При компиляции и попытке начать исполнение сценария, если строки, в которые установлены точки останова, не содержат программный код.

При завершении работы с Редактором сценариев.

10.4.4 Просмотр значений переменных во время отладки

При отладке сценария имеется возможность использования полосы наблюдения окна Редактора сценариев для просмотра значений выбранных переменных. Для каждой выбранной переменной Редактор сценариев отображает ее контекст, имя и значение. Значения переменных в списке просмотра обновляются при каждой приостановке пошагового исполнения. Ниже приведено описание способа добавления переменной в список просмотра Редактора сценариев.

1. Для добавления переменной в список просмотра нажмите кнопку Контрольное значение панели инструментов Редактора сценариев или нажмите комбинацию клавиш "Shift"+"F9". На экран монитора будет выведена диалоговая панель Add Watch (Просмотр значения), внешний вид которой показан на рис. 10-7.

Рис. 10-7. Внешний вид диалоговой панели Просмотр значения

2. В поле Variable (Переменная) диалоговой панели Add Watch введите имя переменной, которую требуется добавить в список просмотра.

При исполнении сценария имеется возможность выбора имени переменной, поскольку поле Variable представлено комбинированным списком (Combo Box). При нажатии кнопки со изображением стрелки, направленной вниз, которая расположена справа от поля редактирования Variable, в комбинированном списке будет содержаться перечень имен всех переменных, находящихся в области видимости отладчика либо определенных в текущей отлаживаемой процедуре.

3. В поле Procedure (Процедура) диалоговой панели Add Watch введите имя процедуры, содержащую переменную, которую требуется добавить в список просмотра. При исполнении сценария имеется возможность выбора имени процедуры, поскольку поле Procedure представлено комбинированным списком (Combo Box). Если переменная, значение которой требуется просматривать в процессе отладки, имеет атрибут Private или Public (переменная, объявленная с атрибутом Private, доступна в пределах содержащей ее функции или процедуры, тогда как доступ к переменной, объявленной с атрибутом Public, может быть осуществлен из всех сценариев), выберите строку "(All Procedures)" в комбинированном

списке Procedure.

4. В поле Script (Сценарий) диалоговой панели Add Watch введите имя сценария, содержащего переменную, которую требуется добавить в список просмотра. Если переменная, значение которой требуется просматривать в процессе отладки, имеет атрибут Public, выберите строку "(All Scripts)" из комбинированном списке Script.

5. Нажмите кнопку OK диалоговой панели для добавления выбранной переменной в список просмотра.

Редактор сценариев поместит имя переменной, ее контекст и значение в список, состоящий из трех колонок и расположенный в полосе просмотра окна Редактора сценариев.

Типы просматриваемых переменных

Редактор сценариев обеспечивает возможность просмотра переменных только базовых типов, таких как Integer (Целый), Long (Целый двойной точности), Variant (Комбинированный) и т. д. Просмотр значений сложных переменных, таких как массивы структур или выражений, в которых используются арифметические операции, невозможен. Однако имеется возможность просмотра отдельных элементов массивов или структур путем использования следующего синтаксиса:

[variable[(index,...)][.member[(index,...)]]...]

где variable — имя структуры или массива; index — номер; member — имя элемента структуры. Например, допускается использование следующих выражений для добавления в список просмотра:

Просматриваемая переменная Описание

a(1) Первый элемент массива с именем a person. age Элемент age структуры person company(10,23).person. age Элемент age структуры person, которая расположена в двумерном массиве company по индексам 10, 23

10.4.5 Изменение значений и удаление просматриваемых переменных из списка просмотра

Для изменения значения просматриваемой переменной или удаления данной переменной из списка просмотра следует предварительно выбрать имя указанной переменной в списке просмотра. Для выбора переменной в списке просмотра поместите курсор мыши на имя переменной в полосе просмотра окна Редактора сценариев и произведите щелчок левой клавишей мыши. Если текстовый курсор находится в полосе редактирования окна Редактора сценариев, для выделения переменной в списке просмотра, выбор которой уже производился перед помещением текстового курсора в полосу редактирования, нажмите клавишу "F6".

ПРИМЕЧАНИЕ. Повторное нажатие клавиши "F6" приведет к перемещению текстового курсора в позицию полосы редактирования, которую он занимал до передачи фокуса ввода в полосу просмотра.

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

Для изменения значения переменной, находящейся в списке просмотра:

1. Поместите курсор мыши на имя переменной в полосе просмотра окна Редактора сценариев и произведите двойной щелчок левой клавишей мыши либо выберите имя переменной в списке просмотра и нажмите клавишу "F2". На экран монитора будет выведена диалоговая панель Modify Variable (Изменение значения переменной).

2. Введите новое значение переменной в поле Value (Значение) диалоговой панели.

3. Нажмите кнопку OK диалоговой панели.

Введенное значение переменной будет отображено в столбце Value полосы просмотра. При изменении значения переменной Редактор сценариев может выполнять операции преобразования типа вводимого значения так, чтобы он соответствовал типу изменяемой переменной. Например, при вводе значения 1.7 для переменной, имеющей тип Integer (Целый), произойдет преобразование действительного числа 1.7 к целому, которое будет равно 2 и присвоено переменной.

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

Если новое значение равно

Тогда

Null

Переменной типа Variant присваивается значение Null (VarType 1)

Empty

Переменной типа Variant присваивается значение Empty (VarType 0)

True

Переменной типа Variant присваивается значение True (VarType 11)

False

Переменной типа Variant присваивается значение False(VarType 11)

численное значение

Переменной типа Variant присваивается численное значение, для которого выбирается тип с наименьшим номером типа. Имеется возможность явного указания типа вводимого значения путем использования суффикса типа, следующего за вводимым числом.

дата

Переменной типа Variant присваивается значение введенной даты (VarType 7)

какие-либо символы

Переменной типа Variant присваивается строка, содержащая введенные символы (VarType 8)

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

Для удаления переменной из списка просмотра:

1. Выберите имя переменной в списке просмотра.

2. Нажмите клавишу "Del".

Выбранная переменная будет удалена из списка просмотра.

10.4.6 Завершение работы с Редактором сценариев

Настоящий подраздел содержит указания по завершению работы с Редактором сценариев. Результат выполнения операции выхода из Редактора сценариев зависит от того, были ли внесены какие-либо изменения в исходный текст сценария, а также от наличия синтаксических ошибок в исходном тексте. Для завершения работы с Редактором сценариев следует выбрать строку Close меню File. Если в процессе работы с Редактором сценариев в исходный текст сценария были внесены какие-либо изменения, на экран монитора будет выведена диалоговая панель с запросом сохранения выполненных изменений. При этом, если исходный текст сценария содержит синтаксические ошибки и выбрана (нажата) кнопка Yes (Да) диалоговой панели, на экран будет выведена диалоговая панель, содержащая сообщение о наличии ошибок и запрос на подтверждение намерения пользователя продолжить сохранение сценария. Нажатие кнопки Yes (Да) данной диалоговой панели приведет к сохранению исходного текста сценария вместе со всеми имеющимися ошибками.

Если в исходный текст сценария не было внесено никаких изменений, произойдет мгновенное завершение работы Редактора сценариев независимо от наличия ошибок в исходном тексте сценария, допущенных во время предыдущего сеанса работы с Редактором сценариев.

10.5 Создание сценарных процедур в GENIE

Данное мощное средство создания сценарных процедур, совместимое с Microsoft Visual Basic для приложений (VBA), лицензировано у компании Summit Software Inc. Бейсик-сценарий является наиболее важным компонентом пакета GENIE, обеспечивающим возможность разработки специализированных фрагментов стратегии на языке программирования высокого уровня. Поскольку Visual Basic является одним из самых популярных и простых для изучения языков программирования, его наличие в составе пакета позволяет значительно упростить и повысить эффективность программирование в рамках GENIE. Бейсик - сценарий заменяет язык сценарных процедур, синтаксис которого аналогичен принятому в языке программирования Си, который был встроен в пакет GENIE 2.xx. Несмотря на то, что подобная замена может вызвать ряд проблем совместимости между версиями 2.x и 3.x, она является необходимым шагом для улучшения функциональных возможностей пакета GENIE.

Ядро подсистемы программирования и исполнения сценарных процедур пакета GENIE представляет собой набор библиотек динамической компоновки, с помощью которых выполняется предварительная компиляция сценарных процедур на этапе разработки и исполнение сценариев в процессе исполнения всей стратегии. Бейсик-сценарий обеспечивает возможность не только манипуляции задачами, входящими в стратегию, но и взаимодействия с DOS, Windows и другими приложениями посредством механизмов DDE, OLE и ODBC (SQL). Синтаксис Бейсик-сценария совместим с Microsoft VBA (Visual Basic for Application, используемым в Excel, Word, Access и т. п.) и Microsoft Visual Basic. Бейсик-сценарий и VBA имеют ряд несовместимых функций, но более 95% функций и процедур абсолютно идентичны. При использовании в Бейсик-сценарии базовых функций имеется возможность компиляции и исполнения программ, написанных на Visual Basic, без каких - либо изменений. Номера ошибок и сообщения об ошибках в Бейсик-сценарии также совместимы с имеющимися в Visual Basic. В состав Бейсик-сценария входит редактор диалоговых панелей, который позволяет разрабатывать собственные средства взаимодействия с оператором. Средство программирования сценарных процедур делает пакет GENIE одним из наиболее удобных и современных инструментов для разработки программного обеспечения верхнего уровня систем сбора данных и оперативного диспетчерского управления (SCADA).

Редактор сценариев представляет собой текстовый редактор с рядом удобных возможностей для редактирования кода сценария. Исходный текст сценария будет компилироваться в псевдокод сразу после редактирования, так что не будет необходимости компилировать его вновь при запуске программы. Для редактирования основного сценария и сценариев, входящих в задачи стратегии, выполняется при помощи одного и того же редактора. Основной сценарий (Main Script), будучи включенным в стратегию, осуществляет управление исполнением всей стратегии один раз в течение одного сеанса исполнительной среды GENIE.

Основной сценарий может быть применен для выполнения таких операций, как запуск и остановка задач и т. п. Каждая сканируемая задача имеет предварительный сценарий (Pre-Task Script) и пост-сценарий (Post - Task Script). Указанные два типа сценариев при определенных условиях используются для инициализации или сброса значений, связанных с объектами, которые входят в стратегию. Основной сценарий стратегии исполняется один раз, тогда как предварительный сценарий и пост-сценарий задачи исполняются при

каждом вызове задачи

ПРИМЕЧАНИЕ. В настоящем руководстве широко используется термин Тэг. Понятие Тэг в определенном контексте может ассоциироваться как с идентификатором объекта (имя тэга), так и с самим объектом определенного типа (класса). Примером Тэга является идентификатор функционального блока, входящего в задачу, однако имя тэга записывается следующим образом: для блока аналогового ввода, поле Тэг диалоговой панели настройки параметров которого содержит идентификатор AI1, а поле Описание АЦП1, имя тэга представляется как AI1:АЦП1.

Основной сценарий

Рис. 10-8. Процедура основного сценария

Основной сценарий (Main Script), будучи включенным в стратегию, осуществляет управление исполнением всей стратегии один раз в течение одного сеанса исполнительной среды GENIE. Основной сценарий может быть применен для выполнения таких операций, как запуск и остановка задач и т. п.

Предварительный сценарий и пост-сценарий задачи

Рис. 10-9. Окно редактирования предварительного сценария задачи

Рис. 10-10. Окно редактирования пост-сценария задачи

Каждая сканируемая задача имеет предварительный сценарий (Pre-Task Script) и пост-сценарий (Post-Task Script). Указанные два типа сценариев при определенных условиях используются для инициализации или сброса значений, связанных с объектами, которые входят в стратегию.

Рис. 10-11. Окно редактирования Бейсик-сценария

Бейсик-сценарий

Бейсик-сценарий является функциональным блоком, пиктограмма которого входит в набор инструментов Редактора задач. Данный функциональный блок разработан для обеспечения максимальной гибкости при программировании специализированных вычислительных процедур и процедур сбора данных и управления в рамках пакета GENIE. Блок Бейсик-сценария позволяет получать данные от неограниченного количества функциональных блоков и элементов управления, входящих в стратегию, а также передавать данные неограниченному количеству функциональных блоков и элементов отображения/управления. Для получения более подробной информации обратитесь к п. 5.3.27 настоящего руководства.

ПРИМЕЧАНИЕ. Ключевое слово "DIM" может быть использовано для объявления (декларации) только одной переменной в пределах одной строки. При объявлении в одной строке более одной переменной, результат исполнения сценарной процедуры будет непредсказуемым.

Команды Бейсик-сценария GENIE

Для реализации управления задачами и данными в процессе исполнения стратегии GENIE в Бейсик - сценарий включен ряд специализированных функций, которые разделены на перечисленные ниже категории.

Функции управления задачами

Функции данной категории предназначены для управления сканируемыми задачами, входящими в стратегию GENIE. Указанные функции могут применяться в основном сценарии, а также в предварительном и пост - сценарии задач.

ScanTask Определение объекта типа Сканируемая задача (ScanTask)

GetScanTask Инициализация заданного объекта типа ScanTask

Start Запуск на исполнение объекта типа ScanTask

Stop Завершение исполнения объекта типа ScanTask

SingleScan Однократный вызов (исполнение) объекта типа ScanTask

GetStatus Возврат состояния заданного объекта типа ScanTask

Функции управления тэгами

Функции данной категории предназначены для получения доступа к функциональным блокам и другим тэгам, расположенным в центре обработки данных GENIE. Указанные функции могут применяться в основном сценарии, в предварительном и пост-сценарии задач, а также в функциональных блоках Бейсик-сценарий.

Tag Определение объекта типа Тэг (TAG)

GetTag Инициализация заданного объекта типа Тэг (TAG)

Value Свойство объекта типа Тэг. Представляет текущее значение, связанное с объектом типа Тэг

Array Свойство объекта типа Тэг. Представляет набор текущих значений на каналах, связанных с объектом типа Тэг

Функции управления окнами экранных форм

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

Display Выдвижение на передний план окна заданной экранной формы

Функции блока Бейсик-сценарий

Функции данной категории предназначены для управления выходными каналами функционального блока Бейсик-сценарий. Указанные функции могут применяться только в функциональных блоках Бейсик - сценарий.

Outputi Передача целочисленного значения другому функциональному блоку и элементу отображения/управления

Outputl Передача целочисленного значения двойной точности другому функциональному блоку и элементу отображения/управления

Outputf Передача действительного (с плавающей точкой) значения другому функциональному блоку и элементу отображения/управления

Outputs Передача строки символов другому функциональному блоку и элементу отображения/управления

10.5.1 Функции управления задачами

ScanTask (тип объекта)

Синтаксис

ScanTask

Назначение

Тип объекта используется для объявления переменной, которая позволяет получить доступ к объекту, возвращаемому функцией GetScanTask().

Комментарии

При объявлении более одной переменной в одной строке используется следующий синтаксис:

dim MyTask1 as ScanTask, MyTask2 as ScanTask.

Пример

`В данном примере выполняется запуск задачи MyTask

Sub Main()

dim MyTask as ScanTask

set MyTask = GetScanTask("TASK1")

MyTask. Start

End Sub

Объект-типа-ScanTask.GetStatus (метод)

Синтаксис

MyTask. GetStatus

Назначение

Данный метод, выполняемый для объекта типа ScanTask (задачи), предназначен для получения текущего состояния задачи, для которой вызывается указанный метод.

Возвращаемое значение

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

0 означает, что проверяемая задача не запущена и не остановлена.

2 означает, что проверяемая задача находится в состоянии ожидания очередного вызова в соответствии с периодом сканирования, установленным в диалоговой панели Параметры сканируемой задачи Редактора задач, или выполнение задачи приостановлено на заданный интервал времени.

3 означает, что проверяемая задача находится в состоянии исполнения во время очередного вызова в соответствии с периодом сканирования, установленным в диалоговой панели Параметры сканируемой задачи Редактора задач.

Комментарии

Данный метод может быть применен к объекту типа ScanTask. Указанными объектами являются задачи, исполняющиеся в рамках стратегии GENIE. Рекомендуется использовать данный метод до запуска или остановки исполнения задачи.

Пример

`В данном примере выполняется проверка состояния задачи MyTask

Sub Main()

dim MyStatus as integer

dim MyTask as ScanTask

set MyTask = GetScanTask("TASK1")

MyStatus = MyTask. GetStatus

if MyStatus = 0

then

MyTask. Start

MyTask. Stop

end if

End Sub

Синтаксис

MyTask. SingleScan

Назначение

Данный метод, выполняемый для объекта типа ScanTask (задачи), предназначен для однократного исполнения задачи, для которой вызывается указанный метод.

Комментарии

Данный метод может быть применен к объекту типа ScanTask. Указанными объектами являются задачи, исполняющиеся в рамках стратегии GENIE. При вызове указанного метода производится немедленное однократное исполнение заданной задачи независимо от значения периода опроса, установленного в диалоговой панели Параметры сканируемой задачи Редактора задач. Возврат управления из данного метода происходит только по завершении однократного исполнения задачи, для которой он вызывается.

Пример

В данном примере 100 раз вызывается задача MyTask

Sub Main()

dim i as integer

dim MyTask as ScanTask

set MyTask = GetScanTask("TASK1")

MyStatus = MyTask. GetStatus

for i = 1 to 100

MyTask. SingleScan

next i

End Sub

Синтаксис

MyTask. Start

Назначение

Данный метод, выполняемый для объекта типа ScanTask (задачи), предназначен для включения задачи, для которой вызывается указанный метод, в список задач, вызываемых исполнительной средой GENIE в процессе выполнения стратегии.

Комментарии

Данный метод может быть применен к объекту типа ScanTask. Указанными объектами являются задачи, исполняющиеся в рамках стратегии GENIE. При вызове указанного метода производится немедленный запуск заданной задачи независимо от режима запуска, установленного в диалоговой панели Параметры сканируемой задачи Редактора задач. Возврат управления из данного метода происходит сразу после активизации задачи, для которой он вызывается.

Пример

В данном примере запускается задача MyTask

Sub Main()

dim MyTask as ScanTask

set MyTask = GetScanTask("TASK1")

MyTask. Start

End Sub

Синтаксис

MyTask. Stop

Назначение

Данный метод, выполняемый для объекта типа ScanTask (задачи), предназначен для исключения задачи, для которой вызывается указанный метод, из списка задач, вызываемых исполнительной средой GENIE в процессе выполнения стратегии.

Комментарии

Данный метод может быть применен к объекту типа ScanTask. Указанными объектами являются задачи, исполняющиеся в рамках стратегии GENIE.

Пример

В данном примере останавливается задача MyTask.

Предполагается, что задача MyTask уже запущена

Sub Main()

dim MyTask as ScanTask

dim FileLength as Integer

set MyTask = GetScanTask("TASK1")

Open "test. dat" For Input As #1

FileLength = Lof(1)

If(FileLength > 32000) Then

MyTask. Stop

End If

End Sub

Синтаксис

Set Объект-типа-ScanTask = GetScanTask(имя-задачи)

Назначение

При успешном выполнении возвращается объект типа ScanTask. Если задача с заданным именем отсутствует или имя указано неверно, возвращается значение Null.

Комментарии

Объект-типа-ScanTask является именем переменной типа ScanTask. Имя-задачи является символьной строкой, идентифицирующей задачу, которая входит в стратегию. Имя задачи должно быть представлено прописными буквами и заключено в кавычки, например — "TASK1".

Пример

В данном примере выполняется запуск задачи MyTask

Sub Main()

dim MyTask as ScanTask

set MyTask = GetScanTask("TASK1")

MyTask. Start

End Sub

10.5.2 Функции управления тэгами

Tag (тип объекта)

Синтаксис

Tag

Назначение

Тип объекта используется для объявления переменной, которая позволяет получить доступ к объекту, возвращаемому функцией GetTag().

Комментарии

При объявлении более одной переменной в одной строке используется следующий синтаксис:

dim MyTag1 as Tag, MyTag2 as Tag.

Пример

`В данном примере считывается значение на канале 0 блока аналогового ввода

Sub Main()

dim MyTag as Tag

dim voltage as single

set MyTag = GetTag("TASK2", "AI1")

voltage = MyTag. Value

End Sub

Синтаксис

Объект-типа-Tag. Value

Назначение

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

Пример

В данном примере считывается значение на канале 0 блока аналогового ввода

Sub Main()

dim MyTag as Tag

dim voltage as single

set MyTag = GetTag("TASK2", "AI1")

voltage = MyTag. Value

End Sub

Синтаксис

Объект-типа-Tag. array(номер-канала)

номер-канала: целое число от 0 до 15

Назначение

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

Пример

В данном примере считывается значение на 16yом канале блока аналогового ввода

Sub Main()

dim MyTag as Tag

dim voltage as single

set MyTag = GetTag("TASK2", "AI1")

voltage = MyTag. Array(15)

End Sub

Синтаксис

Set Объект-типа-Tag = GetTag(TableName$, TagName$)

Назначение

При успешном выполнении возвращается объект типа Tag.

Комментарии

Функции GetTag() должны быть переданы следующие параметры:

TableName$ — строчное выражение, содержащее имя задачи, формы отображения или виртуальной задачи ("VIRTASK").

TagName$ — строчное выражение, содержащее имя функционального блока, элемента управления или виртуального тэга. Должно быть представлено прописными буквами.

Пример

Sub Main()

dim MyTag as Tag

dim voltage as single

set MyTag = GetTag("TASK2", "AI1")

voltage = MyTag. Value

End Sub

10.5.3 Функции управления окнами экранных форм

Display (оператор)

Синтаксис

Display(номер-окна)

Назначение

Используется в процедурах основного сценария, предварительного и пост-сценариев для переключения между несколькими окнами форм отображения, входящими в стратегию.

Комментарии

В качестве параметра оператору передается номер окна экранной формы. Например, для выдвижения на передний план окна экранной формы DISP1 следует использовать оператор Display(1).

Пример

Sub Main()

dim i as integer

dim MyStatus as integer

dim MyTask as ScanTask

set MyTask = GetScanTask("TASK1")

MyStatus = MyTask. GetStatus

if MyStatus = 3

then Display(1) 'отображение окна экранной формы DISP1

end if

End Sub

10.5.4 Функции блока Бейсик-сценарий

Outputf (оператор)

Синтаксис

Outputf значение

Outputf канал, значение

Назначение

Данный оператор используется для передачи одного действительного значения (с плавающей точкой) из блока Бейсик-сценария другому функциональному блоку стратегии.

Комментарии

Если явно не указан номер канала, по которому выводится значение с плавающей точкой, предполагается канал с номером 0. Оператору могут быть переданы следующие параметры: Канал — целое число в диапазоне от 0 до 7, представляющее номер канала, по которому будет осуществляться передача значения с плавающей точкой. Значение — имя переменной типа single или значение, передаваемое другому функциональному блоку стратегии.

Пример

В данном примере выполняется вывод значения с плавающей точкой по каналу 0

dim MyTag as Tag

dim voltage as single

set MyTag = GetTag("TASK2", "AI1")

voltage = MyTag. Value

If voltage > 0.0 Then

Outputf voltage

Else

Outputf yvoltage

End If

Синтаксис

Outputi значение

Outputi канал, значение

Назначение

Данный оператор используется для передачи одного целочисленного значения из блока Бейсик-сценария другому функциональному блоку стратегии.

Комментарии

Если явно не указан номер канала, по которому выводится значение целого типа, предполагается канал с номером 0. Оператору могут быть переданы следующие параметры: Канал — целое число в диапазоне от 0 до 7, представляющее номер канала, по которому будет осуществляться передача значения целого типа. Значение — имя переменной типа integer или значение, передаваемое другому функциональному блоку стратегии.

Пример

В данном примере выполняется вывод значения целого типа по каналу 0

dim MyTag as Tag

dim Ramp as integer

set MyTag = GetTag("TASK2", "RMP1")

Ramp = MyTag. Value

If Ramp > 3 Then

Outputi Ramp

Else

Outputi y1

End If

Синтаксис

Outputl значение

Outputl канал, значение

Назначение

Данный оператор используется для передачи одного целочисленного значения двойной точности из блока Бейсик-сценария другому функциональному блоку стратегии.

Комментарии

Если явно не указан номер канала, по которому выводится значение целого типа двойной точности, предполагается канал с номером 0. Оператору могут быть переданы следующие параметры: Канал — целое число в диапазоне от 0 до 7, представляющее номер канала, по которому будет осуществляться передача значения целого типа двойной точности. Значение — имя переменной типа long или значение, передаваемое другому функциональному блоку стратегии.

Пример

В данном примере выполняется вывод значения целого типа двойной точности по двум `каналам

dim count as long

If count >= 0 Then

Outputl 0, count

Else

Outputl 1, count

End If

Синтаксис

Outputs строка$

Outputl канал, строка$

Назначение

Данный оператор используется для передачи строки символов из блока Бейсик-сценария другому функциональному блоку стратегии.

Комментарии

Если явно не указан номер канала, по которому выводится строка, предполагается канал с номером 0. Оператору могут быть переданы следующие параметры:

Канал — целое число в диапазоне от 0 до 7, представляющее номер канала, по которому будет осуществляться передача строки.

Строка — имя переменной типа string или строка, передаваемая другому функциональному блоку стратегии.

Пример

В данном примере выполняется вывод строки

dim S1 as string

dim S2 as string

S1 = "Hello,"

S2 = "World!"

Outputs 3, S1 & S2