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 문서를 참고하시기 바랍니다.
참고
- "[Python] E4446A Spectrum Analyzer 화면캡쳐하기 (PyVISA)":https://hbesthee.tistory.com/2311
'프로그래밍 > Python' 카테고리의 다른 글
[Python] Qt - QWidget 사라질 때, 처리하는 방법 (0) | 2023.06.09 |
---|---|
[Python] JSON 문자열 다루기 (0) | 2023.05.16 |
[Python] E4446A Spectrum Analyzer 화면캡쳐하기 (PyVISA) (0) | 2023.05.02 |
[Python] pytube에서 "KeyError('streamingData')" 오류 발생 문제 (6) | 2023.05.01 |
[Python] Qt5 UI의 폰트 및 컨트롤이 깨져서 표시되는 문제 (0) | 2023.03.28 |