diff --git a/test/__pycache__/pyvisa.cpython-313.pyc b/test/__pycache__/pyvisa.cpython-313.pyc new file mode 100644 index 0000000..ebabcdf Binary files /dev/null and b/test/__pycache__/pyvisa.cpython-313.pyc differ diff --git a/test/from_datetime_import_datetime.py b/test/from_datetime_import_datetime.py index 1a8eeb4..7d13172 100644 --- a/test/from_datetime_import_datetime.py +++ b/test/from_datetime_import_datetime.py @@ -4,6 +4,4 @@ today = datetime.now() text = f"{today.year}.{today.month}.{today.day} first time use Git" print(text) -# 将内容写入文本文件,方便提交到Git仓库 -with open("git_note.txt", "w", encoding="utf-8") as f: - f.write(text) + diff --git a/test/pyvisa.py b/test/pyvisa.py new file mode 100644 index 0000000..19929f3 --- /dev/null +++ b/test/pyvisa.py @@ -0,0 +1,71 @@ +import pyvisa +from datetime import datetime +import os + +# ========================================== +SCOPE_IP = '192.168.1.100' # <--- 示波器IP修改这里!!! +# ========================================== + +def capture_and_save(): + """连接示波器,截图并保存到当前文件夹""" + + print("1. 正在连接示波器...") + try: + # 创建VISA资源管理器 + rm = pyvisa.ResourceManager() + + # 构造示波器的网络地址 (端口5025是SIGLENT的标准SCPI端口) + resource_string = f'TCPIP0::{SCOPE_IP}::5025::SOCKET' + + # 打开连接 + scope = rm.open_resource(resource_string) + scope.timeout = 10000 # 10秒超时 + scope.read_termination = '\n' + scope.write_termination = '\n' + + # 发送 *IDN? 命令确认连接成功 + idn = scope.query('*IDN?') + print(f" ✅ 连接成功!示波器型号: {idn}") + + # ========================================== + # 2. 核心操作:让示波器发送屏幕截图 + # ========================================== + print("2. 正在获取屏幕截图...") + + # 向示波器发送“打印屏幕为PNG”的命令 + scope.write(':PRINt? PNG') + + # 读取示波器返回的二进制图片数据 + img_data = scope.read_raw() + print(f" ✅ 截图数据已接收,大小: {len(img_data)} 字节") + + # ========================================== + # 3. 保存为PNG文件 + # ========================================== + # 生成文件名:以当前时间命名,避免覆盖 + timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') + filename = f'screenshot_{timestamp}.png' + + # 保存到当前目录 + with open(filename, 'wb') as f: + # 尝试直接保存,如果打不开,尝试改为 f.write(img_data[11:]) + f.write(img_data) + + print(f" ✅ 截图已保存为: {os.path.abspath(filename)}") + + # 4. 关闭连接 + scope.close() + rm.close() + print("3. 连接已关闭。全部完成!") + + except Exception as e: + print(f"❌ 出错了!错误信息: {e}") + print("\n请检查:") + print("1. 示波器是否开机?") + print("2. 网线是否插好?") + print(f"3. IP地址 '{SCOPE_IP}' 是否和示波器屏幕显示的一致?") + print("4. 电脑和示波器是否在同一个局域网?") + +# 如果直接运行这个脚本,就执行截图函数 +if __name__ == '__main__': + capture_and_save() \ No newline at end of file