ΣSigmaStudio English

Это старая версия документа!


SigmaStudio Scripting из Python

Существует два способа доступа к API сервера SigmaStudio из Python.

Доступ к SigmaStudio через win32com

Для настройки COM-портов для SigmaStudio 4.0:

  1. Откройте командную строку с правами администратора. Перейдите в каталог C:\Windows\Microsoft .NET\Framework64\v4.0.30139.
  2. Выполните следующую команду: RegAsm “C:\Program Files\Analog Devices\SigmaStudio 4.0\Analog.SigmaStudioServer.dll” /codebase, и в командной строке должно появиться сообщение «Types registered successfuly».
  3. Теперь переключитесь в каталог 32-битной версии по адресу C:\Windows\Microsoft .NET\Framework\v4.0.30139.
  4. Выполните ту же команду (RegAsm “C:\Program Files\Analog Devices\SigmaStudio 4.0\Analog.SigmaStudioServer.dll” /codebase). В командной строке снова должно появиться сообщение «Types registered successfuly».
Запустите SigmaStudio перед выполнением вашего клиента [Python или LabView/Matlab]. Большинство клиентов предполагают, что конечная точка SigmaStudio доступна. Соответствующая ошибка в Python: There was no endpoint listening at net.pipe// localhost/SigmaServerPipe
Используйте win32com версии 300 для доступа к API сервера SigmaStudio из Python
sample.py
from  win32com.client.dynamic import Dispatch
# This program is designed to test SigmaStudio scripting from Python.
if __name__ == "__main__":     
    print('Running')
    server = Dispatch('Analog.SigmaStudioServer.SigmaStudioServer')
    # Make a new SigmaStudio project
    print('Creating Project...')
    server.new_project
 
    # Hardware Configuration
    print('Inserting HW Config Objects...')
    server.insert_object_point('USBi', 200, 100)
    server.insert_object_point('ADAU1467', 400, 100)
    server.insert_object_point('E2Prom', 400, 180)
    server.connect_object('USB Interface', 0, 'IC 1', 0)
    server.connect_object('USB Interface', 1, 'IC 2', 0)
    # Insert some objects
    print('Inserting Schematic Objects...')
    server.insert_object_point('Sine Tone with Phase and Gain', 50, 100)
    server.insert_object_point('Sine Tone with Phase and Gain', 50, 200)
    server.insert_object_point('Output', 170, 100)
    server.insert_object_point('Output', 170, 200)
    # Change object parameters
    print('Changing Parameters...')
    server.set_object_property('setName', 'Tone1', 'sineWave1', 0, 0, 0)
    server.set_object_property('setName', 'Tone2', 'sineWave2', 0, 0, 0)
    server.set_object_property('setControlValue', 'sineWave1', 0, 0, 'Frequency', '300')
    server.set_object_property('setControlValue', 'sineWave2', 0, 0, 'Frequency', '150')
    server.set_object_property('setControlValue', 'sineWave1', 0, 1, 'Gain', '-40')
    server.set_object_property('setControlValue', 'sineWave2', 0, 1, 'Gain', '-40')
    server.set_object_property('setControlValue', 'sineWave2', 0, 1, 'OnOff', 1)
    server.set_object_property('setControlValue', 'sineWave1', 0, 1, 'OnOff', 1)
    server.set_object_property('setControlValue', 'Output1', 0, 0, 'SelectedChannel', '4')
    # Indexing here works based on the SigmaStudio GUI; so the fourth index is now channel 5
    server.set_object_property('setControlValue', 'Output2', 0, 0, 'SelectedChannel', '4')
 
    # Connect objects
    server.connect_object('sineWave1', 0, 'Output1', 0)
    server.connect_object('sineWave2', 0, 'Output2', 0)
    # Compile and download the project to the DSP
    server.compile_project    
    # Turn on output 2
    server.register_write('IC 1', 62021, 2, 48)    
    # Save project with specific name
    projectFile= 'C:\\test\\Scripting Test'    
    server.saveas_project(projectFile)
 

Запись в регистр

Следующий код показывает, как выполнить запись в регистр произвольной длины. Изменить необходимо только первые три строки.

data = [0x12, 0x01, 0x10, 0x90, 0xc1, 0x20, 0x4c, 0x1d]
address = 0x20
ic_name = "IC 1"
 
ic_name_variant = VARIANT(pythoncom.VT_BSTR, )
address_variant = VARIANT(pythoncom.VT_I4, address)
num_bytes_variant = VARIANT(pythoncom.VT_I4, len(data))
data_variant = VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_UI1, data)
server.REGISTER_WRITE_ARRAY(ic_name_variant, address_variant, num_bytes_variant, data_variant)

FIR-фильтр

Пример кода для взаимодействия с FIR-фильтрами доступен на странице FIR Filter.