Содержание
Создание и запуск скриптов SigmaStudio
Скрипты SigmaStudio позволяют создавать файлы проектов и управлять ими с помощью текстовых команд. Интерфейс скриптов определен на языке C# и поддерживает скрипты, написанные на языках C# или Visual Basic. Для написания простых скриптов SigmaStudio предварительное знание C# не требуется.
Скрипты SigmaStudio можно создавать в любом текстовом редакторе или непосредственно в SigmaStudio с помощью инструмента «Редактор скриптов» (Script Editor). Редактор скриптов обеспечивает отображение интерфейсов скриптов в режиме IntelliPrompt и подсветку синтаксиса. Файлы скриптов можно сохранять как текстовые файлы (*.txt) или файлы скриптов SigmaStudio (*.sss). Загрузка и запуск скриптов, а также пауза и остановка выполняются из окна редактора скриптов. Пауза, возобновление и остановка поддерживаются при добавлении API «ALLOW_PAUSE_STOP()» в скрипт.
Открытие редактора скриптов
В SigmaStudio в главном меню выберите Tools (Инструменты) → Script (Скрипт), чтобы запустить редактор скриптов, показанный на рисунке 2.
Чтобы создать новый файл скрипта, откройте окно редактора скриптов и выберите File (Файл) → New (Создать) (или нажмите CTRL + N). Будет создан новый файл скрипта, и в первую строку автоматически будет вставлено
“// #LANGUAGE# C#”
. Это определяет язык скрипта как C# (c-sharp) — язык скриптов SigmaStudio по умолчанию. Скрипты на Visual Basic также поддерживаются. Идентификатор языка необязателен для скриптов C#, но обязателен для скриптов Visual Basic.
Идентификатор языка скрипта C# (c-sharp) — #LANGUAGE# C#
Идентификатор языка скрипта Visual Basic — #LANGUAGE# VB
Рисунок 2: Редактор скриптов
Написание скрипта
Чтобы получить доступ к списку интерфейса IScripted, введите в окне редактора скриптов «sigmastudio» (или, при желании, «ss») с последующей точкой. Отобразится окно IntelliPrompt со списком всех доступных методов IScripted. («sigmastudio» и «ss» — открытые ссылки на интерфейс SigmaStudio IScripted, см. пример использования ниже).
Пример скрипта приведен ниже:
// #LANGUAGE# C# sigmastudio.ProjectNew(); sigmastudio.ObjectInsert( "USBi" ); sigmastudio.ObjectInsert( "ADSP-214xx" ); sigmastudio.ObjectConnect( "USB Interface", 0, "IC 1", 0 ); sigmastudio.ObjectInsert( "Audio Input" ); sigmastudio.ObjectInsert( "Output" ); sigmastudio.ObjectInsert( "Output" ); sigmastudio.ObjectConnect( "Audio Input1", 0, "Output1", 0 ); sigmastudio.ObjectConnect( "Audio Input1", 1, "Output2", 0 ); sigmastudio.ProjectLinkCompileDownload(); sigmastudio.ProjectSaveAs( @"C:\SStudioProjects\SampleScript.dspproj" ); sigmastudio.ProjectClose();
В этом примере создается новый проект, вставляются процессор ADSP-214xx и канал связи USB, которые соединяются проводом. Затем вставляются один объект входа и два объекта выхода, при этом два входных вывода соединяются с выводами объекта выхода. После этого проект связывается, компилируется, загружается, сохраняется на диск и закрывается.
Запуск скрипта
Чтобы запустить скрипт SigmaStudio, в окне редактора скриптов выберите в главном меню Tools (Инструменты) > RunScript (Запустить скрипт) или нажмите «F5», см. рисунок 3.
Рисунок 3: Запуск скрипта
Если в коде скрипта есть ошибки, отображается диалоговое окно с подробным описанием ошибок, а в строке состояния появляется сообщение «Script Failure» (Сбой скрипта). Если скрипт успешно компилируется и выполняется, в строке состояния редактора скриптов отображается «Success» (Успех).
Рисунок 4: Ошибка скрипта
Пауза и возобновление скрипта
Чтобы приостановить скрипт SigmaStudio, в окне редактора скриптов выберите в главном меню Tools (Инструменты) > Pause (Пауза), см. рисунок 5.
Если скрипт успешно приостановлен, в строке состояния редактора скриптов отображается «Paused» (Пауза).
Рисунок 5: Пауза скрипта
Чтобы возобновить скрипт SigmaStudio, в окне редактора скриптов выберите в главном меню Tools (Инструменты) > Resume (Возобновить), см. рисунок 6.
Рисунок 6: Возобновление скрипта
Остановка скрипта
Чтобы остановить скрипт SigmaStudio, в окне редактора скриптов выберите в главном меню Tools (Инструменты) > Stop (Стоп), см. рисунок 7.
Если скрипт успешно остановлен, отображается диалоговое окно с информацией о том, что выполнение скрипта остановлено, а в строке состояния появляется сообщение «Script Aborted» (Скрипт прерван).
Имена объектов
Для ссылки на объекты схемы (Schematic), содержащиеся в платах иерархии, необходимо использовать полное имя объекта. «Полное имя» состоит из имени объекта, которому предшествуют имена всех родительских плат иерархии (Hierarchy), разделенные точками («.»).
Например, на рисунке 5 объект «Filter2» содержится в плате иерархии с именем «Board1». Полное имя этого объекта — «Board1.Filter2».
Рисунок 5: Использование имени объекта в скрипте
Следующий скрипт удалил бы объект Filter2:
sigmastudio.ObjectRemove( "Board1.Filter2" );
В следующем примере (рисунок 6) плата Board2 содержится внутри платы Board1, поэтому полное имя объекта на плате Board2 включает оба имени плат: «Board1.Board2.Gen 1st Order1».
Рисунок 6: Имя объекта в скрипте для платы
Расширенная поддержка скриптов
Скрипты не ограничиваются функциями интерфейса IScripted. Скрипты могут использовать возможности языка C# и некоторые элементы платформы .NET. Пример скрипта для добавления объекта на схему, изменения его атрибутов и соединения объектов приведен ниже.
- myexample.cs
// #LANGUAGE# C# ss.ProjectOpen( @"C:\SStudioProjects\SampleScript.dspproj"); ss.ObjectDisconnect( "Audio Input1", 0, "Output1", 0 ); ss.ObjectDisconnect( "Audio Input1", 1, "Output2", 0 ); try { int nNumFilters = 4; for (int i = 0; i < nNumFilters; ++i) { object oFilter = ss.ObjectInsert( "General (2nd order)" ); if (null != oFilter) { string strNewName = "Filter_" + (i + 1); ss.ObjectSetProperties( "setName", oFilter, strNewName ); ss.ObjectSetProperties( "addAlgorithm", strNewName, "IC 1", "2 Channel - Single Precision" ); } else { throw new Exception( "ln 11" ); } } HResult hr = HResult.S_OK; for (int ixPin = 0; ixPin < 2; ++ixPin) { if (HResult.S_OK != sigmastudio.ObjectConnect( "Audio Input1",ixPin, "Filter_1", ixPin )) throw new Exception( "ln 28" ); if (HResult.S_OK != sigmastudio.ObjectConnect( "Filter_1", ixPin, "Filter_2", ixPin )) throw new Exception( "ln 31" ); if (HResult.S_OK != sigmastudio.ObjectConnect( "Filter_2", ixPin, "Filter_3", ixPin )) throw new Exception( "ln 34" ); if (HResult.S_OK != sigmastudio.ObjectConnect( "Filter_3", ixPin, "Filter_4", ixPin )) throw new Exception( "ln 37" ); } if (HResult.S_OK != sigmastudio.ObjectConnect( "Filter_4", 0, "Output1", 0 )) throw new Exception( "ln 42" ); if (HResult.S_OK != sigmastudio.ObjectConnect( "Filter_4", 1, "Output2", 0 )) throw new Exception( "ln 45" ); } catch(Exception e) { System.Windows.Forms.MessageBox.Show( "FAILURE: " + e.ToString() ); }