Resposta
Esse exemplo Python mostra como transferir um arquivo de dados IQ do analisador de espectro para o PC do controlador e como abri-lo com o software de análise de sinal VSE.
Testado com:
- Analisador de espectro em tempo real FSVR (FW: 2.23 SP1)
- Software VSE (1.90)
- PyVISA 1.11.3
- Python 3.9
Autor: Suporte da Rohde & Schwarz - MP
Atualizado em 22.01.2021
Versão: v1.3
Suporte técnico -> https://www.rohde-schwarz.com/support
Antes de executar, sempre confira este script para verificar se há configurações inadequadas!
Este exemplo não pretende ser completo. Todas as informações foram
compiladas com cuidado. No entanto, erros não podem ser descartados.
importar pyvisa
rm = pyvisa.ResourceManager()
# ajuste a cadeia de caracteres do recurso VISA para adequar ao seu instrumento
instr = rm.open_resource('TCPIP::192.168.0.1::INSTR') # substitua pelo seu endereço IP
instr.write_termination = '\n'
instr.read_termination = '\n'
instr.timeout = 3000
vse = rm.open_resource('TCPIP::127.0.0.1::INSTR') # não altere o host local
vse.timeout = 3000
vse.write('*RST')
vse.query('*OPC?')
instr.write('*RST')
instr.query('*OPC?')
instr.write('*CLS')
instr.write('INIT:CONT OFF')
print('\n' + instr.query('*IDN?'))
instr.write('FREQ:CENT 1e9')
instr.write('DISP:TRAC:Y:RLEV 0')
instr.write('TRAC1:IQ ON')
instr.write('TRAC1:IQ:SRAT 32 MHZ')
instr.write('TRAC1:IQ:RLEN 691') # Intervalo: 1 ... 209715200(200*1024*1024)
instr.query('*OPC?')
filePathPc = r"c:\temp\data.iq.tar"
filePathInstr = r"c:\temp\dev_data.iq.tar"
instr.write('INIT')
instr.query('*OPC?')
# salve o arquivo de dados IQ no disco rígido do instrumento
instr.write(f'MMEM:STOR:IQ:STAT 1, "{filePathInstr}"')
# peça dados de arquivo a partir do instrumento e salve no disco rígido local
fileData = bytes(instr.query_binary_values(f'MMEM:DATA? "{filePathInstr}"', datatype='s'))
newFile = open(filePathPc, "wb")
newFile.write(fileData)
newFile.close()
print(instr.query('SYST:ERR?'))
instr.close()
# carregue o arquivo no software VSE
vse.write(f'MMEM:LOAD:IQ:STAT 1, "{filePathPc}"')
vse.close()