Hackaday.io上的示波器项目-无人驾驶的 Rigol DS1054Z 通过 LAN 进行屏幕捕获
收藏
分享
脑图
Hackaday.io上的示波器项目-无人驾驶的 Rigol DS1054Z 通过 LAN 进行屏幕捕获
关于项目
项目描述:'OscScreenGrabLAN.py是一个Python脚本,它捕获Rigol DS1000Z系列示波器屏幕上显示的任何内容。它可以将数据保存为 CSV 或作为所见即所得 PNG 或 BMP。为此,SCPI(可编程仪器的标准命令)通过Telnet连接使用LXI(基于局域网的仪器电子仪器)协议从计算机发送到示波器。计算机和示波器通过局域网(局域网)连接在一起。没有 USB(通用串行总线),没有 VISA(虚拟仪器软件架构),没有 IVI(可互换虚拟仪器)和不需要Rigol驱动程序。需要带枕头成像库的 Python 2。不再支持 PIL。不支持 Python 3。使用 Windows 10、Python 2.7.12、枕头和 Rigol DS1104Z(完全升级的 DS1054Z 示波器)进行测试。使用 Linux Ubuntu 16.04.1、Python 2.7.12 和枕头进行测试。
项目图片
项目详情
安装程序
对于 Windows,请从 https://www.python.org/downloads 安装Python 2.7.12。 Python 已在 Ubuntu 中安装。
下载并解压缩DS1054Z_screen_capture
安装枕头成像库。安装步骤在README.md中。
将计算机和示波器连接在一起(通过 LAN)。
要从示波器显示屏捕获图像并保存到计算机磁盘,请打开命令提示符或终端,然后OscScreenGrabLAN.py
例子:
python OscScreenGrabLAN.py png 192.168.1.3
所见即所得:
您可以准确捕获示波器显示屏上看到的东西,包括示波器菜单:
项目组件
1X  里戈尔 DS1054Z
1X  电脑(个人电脑)
1X  局域网
第一个版本,v1.0.0: https://github.com/RoGeorge/DS1054Z_screen_capture/releases
- 奎里 * 奥普克?而不是在命令之间等待 1 秒。
- 添加了日志记录文件,"OscScreenGrabLAN.py.log"。
PIL 是一个弃用 Python 库。为了保持"OscScreenGrabLAN.py"脚本与当前和未来版本的 Python 2 兼容,对于 Windows 和 Linux,从现在起,该脚本使用"枕头"库而不是"PIL"。
如果您已经安装了"PIL",则必须在安装"枕头"之前卸载它。
Python 和"枕OscScreenGrabLAN.py的更新版本以及安装步骤可https://github.com/RoGeorge/DS1054Z_screen_capture
问题:TCP 的 LAN 速度比预期慢 100 倍以上。为什么?
因为 Windows 实现了它自己的"智能"算法,而不是遵循 RFC。我发现(困难的方式),从Vista开始,TCP法规被微软无视,导致不可预知的副作用,如高速互联网的速度限制,或传输速度的彻底崩溃,如在这种情况下。
长话短说,降低示波器和PC之间传输速度的是微软算法,它以"马塞尼奇"的方式改变RWIN(TCP接收温多)大小,使用启发式算法覆盖网络设置,并且无法真正调整参数。
索洛图:使用 Linux。
在清理 Python 代码后, 我将发布一些基准。
稍后编辑:已经过去一年半了,现在我再也无法重现慢转了。WireShark 现在显示前 250 000 个字节的传输时间基本相同:
Debian80
transfer time = 0.066444
win10
transfer time = 0.067693
尝试提取完整的2400万点内存缓冲区在一个请求将显示在示波器屏幕上的错误消息"内存缺乏波形读取!使用字节而不是 ASCII 模式,可以提取更大的数据块,但仍然不完整。
为了克服这个问题,迄今为止唯一成功的方法就是从内存缓冲区中重复提取连续的数据块。这个想法似乎行得通,但是现在代码在测试不同方法后只是一团糟,而且速度非常慢。
代码已如是样推送到 GitHub,将在下一个版本中进行清理和优化。
请注意,对于 CSV 内存缓冲区数据提取,示波器必须处于停止模式。只有在读取显示的跟踪而不是内存数据时,才允许运行模式。
3D打印 AVR Arduino 艺术音频自动化 BeagleBone 蓝牙摄像机时钟无人机环境硬件 IoT LED 医疗音乐无线电树莓 Pi 远程控制机器人火箭卫星科学安全软件虚拟现实可穿戴设备
添加了新功能:将跟踪导出为 CSV
添加了数据捕获,并保存为 CSV(逗号分隔值)格式的文本。
要将显示的通道捕获为 CSV,请键入:
python.exe OscScreenGrabLAN.py csv 192.168.1.3
示波器屏幕显示的所有通道都保存在 CSV 文件中,包括"MATH"通道。
CSV 文件可用作与其他程序的数据交换格式。例如,这是一个在电子表格中导入的捕获的 CSV 文件。图表不是从示波器复制的,它是由电子表格生成的。
要捕获 WYSIWYG 示波器显示,请键入:
注意图表/数据外观与显示外观之间的差异:python.exe OscScreenGrabLAN.py png 192.168.1.3
为了更好的 CSV 数据可用性,需要实现以下功能:
数据时间戳
保存/解码原始数据
其他不错的有:
将所有示波器设置与 CSV 数据一起保存
CSV 通道的标签
测试解码 1 和解码 2 是否可以导出
3D 打印 AVR Arduino 艺术音频自动化 Beaglebone 蓝牙摄像机时钟无人机环境硬件 IoT LED 医疗音乐无线电树莓 Pi 远程控制 机器人 火箭 卫星 科学安全软件虚拟现实可穿戴
在使用 Debian 7.7.0、Python 2.7.3 和 PIL 的 VMware 计算机上进行测试。Python 和 PIL 已在默认 Debian 安装中出现。
要在 Linux 中运行它:
从 GitHub 下载项目
打开终端
转到项目的目录
python OscScreenGrabLAN.py
3D 打印 AVR Arduino 艺术音频自动化 Beaglebone 蓝牙摄像机时钟无人机环境硬件 IoT LED 医疗音乐无线电树莓 Pi 远程控制 机器人 火箭 卫星 科学安全软件虚拟现实可穿戴
评论
0 / 100
查看更多
Sen
2020-08-21
1050
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号