요즘 나오는 대부분의 오실로스코프는 전면에 USB-A 포트가 있어서 USB 메모리를 연결해 오실로스코프에 표시된 이미지를 캡처하던가 측정 데이터를 가져올 수 있습니다. 리골 오실로스코프의 경우 조금 더 발전해서 USB 포트에 키보드나 마우스를 연결할 수 있습니다. 다만 포트가 한 개로 여러 USB 장치를 연결하려면 HUB HUB가 있어야 합니다. 어느 유튜브를 보면 여기에 WIFI 동글을 꼽아서 무선 통신도 가능하게 해서 사용하기도 합니다.
저는 무선 마우스를 사용하기 위해 무선 마우스 동글을 꼽아 놓고 사용하고 있습니다. 따로 USB HUB를 연결하지 않았으니 USB 메모리를 이용한 화면 캡처는 안됩니다. 그리고 매번 USB 메모리로 캡처해서 PC로 옮기는 것도 번거롭습니다. 그래서 이더넷으로 연결을 하고 원격으로 캡처를 하려고 합니다. 문제는 공유기 설정이 동적 IP로 되어 있다 보니 오실로스코프를 켤 때마다 IP 주소가 바뀝니다. 그래서 매번 설정에 들어가서 IP 주소를 확인해야 하는데 좀 더 편하기 파이썬 코드로 IP 주소를 찾아보려고 합니다. IP 주소를 찾기 위해서 pyvisa, pyvisa-py, psutil, zeroconf 네 개의 모듈을 사용합니다.
파이썬 가상 환경에 모듈을 설치합니다.
pip install pyvisa pyvisa-py psutil zeroconf
pyvisa를 이용한 파이썬 코드입니다. 대부분의 오실로스코프, DMM 등 계측기를 VISA로 찾을 수 있지만 구형 모델이거나 알려지지 않은 계측기의 경우 VISA를 사용할 수 없을 수도 있습니다.
import pyvisa
def find_oscilloscope_ip():
# VISA 리소스 매니저 초기화 (오픈소스 백엔드 사용)
rm = pyvisa.ResourceManager('@py')
print("네트워크에서 장비를 검색 중입니다... (약 5~10초 소요)")
# 네트워크(TCPIP)에 연결된 모든 장비 검색
# 'TCPIP?*::INSTR'은 네트워크상의 계측기를 찾는 쿼리입니다.
devices = rm.list_resources('TCPIP?*::INSTR')
if not devices:
print("연결된 장비를 찾을 수 없습니다. 네트워크 연결을 확인하세요.")
return
print(f"총 {len(devices)}개의 장비를 발견했습니다.\n")
for resource in devices:
try:
# 장비 연결
inst = rm.open_resource(resource)
# 식별 정보 요청 (*IDN?)
idn = inst.query('*IDN?').strip()
# 리소스 이름에서 IP 주소 추출 (예: TCPIP0::192.168.0.10::INSTR)
ip_address = resource.split('::')[1]
print(f"[장비 발견]")
print(f"- IP 주소: {ip_address}")
print(f"- 상세 정보: {idn}")
# 찾고자 하는 모델명(DHO924S)이 포함되어 있는지 확인
if 'DHO924' in idn:
print(f"-> 목표 장비(DHO-924S)를 확인했습니다!")
inst.close()
print("-" * 30)
except Exception as e:
print(f"장비({resource}) 정보를 가져오지 못했습니다: {e}")
if __name__ == "__main__":
find_oscilloscope_ip()
[그림 1]은 실행 결과입니다.

'프로그래밍' 카테고리의 다른 글
| SQLite3 핵심 요약과 파이썬 예제 (0) | 2026.10.05 |
|---|---|
| pyside 윈도우 타이틀바 작업표시줄 아이콘 설정 (0) | 2026.10.05 |
| 파이썬 PySide로 계기판 만들기 (0) | 2026.10.05 |
| 파이썬으로 IP 기반 위치 정보 조회하기 (0) | 2026.10.05 |
| 파이썬으로 오실로스코프(DHO924S) 화면 캡처 (0) | 2026.10.05 |