ΣSigmaStudio English

Создание и запуск скриптов 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() );
}