Это старая версия документа!
SigmaStudio Scripting из Python
Существует два способа доступа к API сервера SigmaStudio из Python.
Доступ к SigmaStudio через win32com
Для настройки COM-портов для SigmaStudio 4.0:
- Откройте командную строку с правами администратора. Перейдите в каталог
C:\Windows\Microsoft .NET\Framework64\v4.0.30139. - Выполните следующую команду:
RegAsm “C:\Program Files\Analog Devices\SigmaStudio 4.0\Analog.SigmaStudioServer.dll” /codebase, и в командной строке должно появиться сообщение «Types registered successfuly». - Теперь переключитесь в каталог 32-битной версии по адресу
C:\Windows\Microsoft .NET\Framework\v4.0.30139. - Выполните ту же команду (
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.