프로그래밍/Python

[Python] E8363C Network Analyzer 화면캡쳐하기 (PyVISA)

채윤아빠 2023. 5. 3. 08:47
728x90
반응형

개요

PyVISA를 이용하여 E8363C Network Analyzer 계측기의 현재 화면을 그대로 캡쳐하여 가져오는 방법을 알아 보도록 하겠습니다.

반복되는 내용은 이전 글인 "E4446A Spectrum Analyzer 화면캡쳐하기 (PyVISA)"를 참고하시기 바랍니다.


SCPI 명령을 이용한 화면캡쳐하기

아래는 E8363C Network Analyzer 계측기의 현재 화면을 캡쳐하여 가져와 파일로 저장하는 코드입니다.

from pyvisa import ResourceManager

_host = '192.168.0.47'
_port = 5000

rm = ResourceManager() # visa 객체를 생성합니다.

# 지정한 HOST와 PORT를 사용하여 계측기에 접속합니다. 
pna_client = rm.open_resource(f'TCPIP{_port}::{_host}::INSTR')

print (pna_client.query('*IDN?')) # 계측기 정보를 출력합니다.

pna_client.write(f"HCOPy:SDUMp:DATA:FORMat PNG") # screenshot file format : PNG
pna_client.write('HCOPy:SDUMp:DATA?') # PNA screenshot
img = pna_client.read_raw() # 캡쳐된 바이너리 이미지 데이터 받기

header_index = img.find(b'\x89PNG')
if (header_index > 0): # find PNG header
    img = img[header_index:]

# 화면 캡쳐 파일 저장하기
with open('pna.png', 'wb') as f:
    f.write(img)

이전글인 "E4446A Spectrum Analyzer 화면캡쳐하기 (PyVISA)"와 달라진 점 위주로 설명합니다.

 

E8363C 회로망분석기는 화면을 캡쳐하여 별도의 파일로 저장하지 않고 캡쳐된 이미지를 바로 전송하는 명령이 "HCOPy:SDUMp:DATA?" 입니다. 그 전의 "HCOPy:SDUMp:DATA:FORMat PNG"는 화면 캡쳐 파일의 형식을 지정하는 것으로 위에서는 "PNG" 형식으로 지정하였습니다.

 

캡쳐된 이미지를 read_raw() 함수를 이용하여 받은 후, 헤더를 처리해 주어야 하는데 PNG 파일의 헤더를 직접 찾아서 이미지 파일로 저장하도록 하였습니다.

 

SCPI 명령에 대한 상세한 설명은 E8363C Network Analyzer 계측기에 대한 Programer's Guide 문서를 참고하시기 바랍니다.


참고