使用pyvisa从键控示波器获取轨迹、保存到文件并导出原始图。

keysightoscilloscopeacquire的Python项目详细描述


键控示波器采集包

v2.0.1//2019年8月//andreas svela

概述

此软件包提供通过VISA接口从按键示波器获取记录道的功能,并将记录道导出为选定的ASCII格式文件(默认CSV)和记录道图的PNG。python库visa用于通信。该代码已在使用USB连接的按键DSO2024A型号上测试。

该代码被构造为一个模块keyoscarchage/oscacq.py包含在类示波器中进行visa接口的引擎,以及数据处理/保存的支持功能。程序位于keyoscarchage/programs.py中。默认选项可在keyoscacq/config.py中找到,可以从命令行运行/scripts中的文件,运行已安装的可执行文件基本相同。

安装

使用pip安装软件包:

$ pip install keysightoscilloscopeacquire

或者在本地下载并使用$python setup.py install安装,或者运行install.bat

默认选项

安装该软件包时,会在keyoscacq/config.py中找到一组默认选项:

# Default options in config.py_visa_address='USB0::XXXX::XXXX::MYXXXXXXXX::INSTR'# address of instrument_waveform_format='WORD'# WORD formatted data is transferred as 16-bit uint.# BYTE formatted data is transferred as 8-bit uint.# ASCii formatted data converts the internal integer data values to real Y-axis values.#       Values are transferred as ASCii digits in floating point notation, separated by commas._ch_nums=['']# list of chars, e.g. ['1', '3']. Use a list with an empty string [''] to capture all currently displayed channels_acq_type="HRESolution"# {HRESolution, NORMal, AVER<m>} where <m> is the number of averages in range [1, 65536]_num_avg=2# default number of averages used if only AVER is given as acquisition type_filename="data"# default base filename of all traces and pngs exported, a number is appended to the base_file_delimiter=" n"# delimiter used between _filename and filenumber (before _filetype)_filetype=".csv"# filetype of exported data, can also be txt/dat etc._export_png=True# export png of plot of obtained trace_show_plot=False# show each plot when generated (program pauses until it is closed)_timeout=15000# ms timeout for the instrument connection

要使对这些默认值的更改生效,必须在执行config.py中的更改后在本地重新安装包,只需导航到包含setup.py的目录并运行$python setup.py installinstall.bat注意没有一个函数直接访问全局变量,但它们作为默认参数提供。

波形格式指定在查询波形时是否应传输16/8位原始值或逗号分隔的ascii电压值(输出文件无论如何都是ascii,这只是一个数据如何传输到计算机并在计算机上处理的问题)。原始值格式大约比ascii快10倍。

命令行程序将记录道保存在运行它们的文件夹中,即默认为数据n<;n>;.csv数据n<;n>;.png

已知问题/建议的改进

  • 已知问题:有时word波形不会给出正确的跟踪数据,只是随机噪声(但切换到asciibyte会给出正确的跟踪)。如果发生这种情况,请打开Keylight BenchVue并通过软件获取一条记录道。现在尝试通过这个包获得一个跟踪——现在应该使用word
  • 添加可选参数以将仪器的visa地址提供给命令行可执行文件和脚本

用法

要连接到VISA仪器,可能需要在计算机上运行NI MAX或类似软件。仪器的VISA地址可以在NI MAX中找到,并应设置为\u VISA地址变量,请参见下面的安装前。

四个命令行程序获取单个跟踪获取单个跟踪每次get traces连接gettraces连接都可以在安装后直接从命令行运行(即从任何文件夹运行,不需要$python[。…...py)。

前两个程序将分别获得一个和指定数量的跟踪。后两个程序是循环,每次按下enter键时,都会获得一个跟踪,并将其导出为连续编号的csv和png文件。默认情况下,示波器上的所有激活通道都将被捕获(这可以更改,请参阅下文)。后两个程序之间的区别在于,第一个程序在每次要对某个记录道进行CAP时都要建立与仪器的新连接Tured,而第二个打开连接以开始,直到程序退出才关闭连接。第二个程序只在连接时检查哪些频道处于活动状态,即第一个程序将只为每个保存的跟踪保存当前活动的频道;第二个程序将每次保存在启动程序时处于活动状态的频道。

可选的命令行参数设置基本文件名、获取模式或要获取的跟踪数

此外,这两个程序都包含两个可选参数: -f"自定义文件名"设置为"自定义文件名"的基本文件名 -a aver8将获取类型设置为具有八条记录道的平均值 -n 10设置要获取的记录道数(仅适用于获取记录道数

例如

$ getTraces_single_connection_loop -f measurement

将给出输出文件测量n<;n>;.csv测量n<;n>;.png。程序将检查文件"measurement"+_file_delimiter+num+_filetype)是否存在,如果存在,则提示用户在measurement中附加一些内容,直到"measurement"+appended+"0"+_filetype不是现有文件。当没有提供基本文件名并且使用了默认文件名时,同样的检查过程也适用。

获取单个记录道

使用$python-m keyoscarchase运行模块将获取并保存一个使用默认选项的跟踪。或者,可以使用可执行文件,例如$get_single_trace-f"fname"-a"aver",按照上述段落指定文件名和采集类型。

在作用域运行时获取跟踪,而在停止时获取跟踪

当示波器运行时,捕获和读取功能将通过运行:数字化获得记录道,使仪器获得记录道,然后停止示波器。当示波器停止工作时,示波器屏幕上的当前记录道将被捕获(警告:这可能意味着不使用用:acquire指定的设置,即获取模式和要捕获的点数)。

捕获跟踪后,作用域将始终设置为运行。

脚本输入./脚本

这些脚本可以作为命令行脚本从$python[script].py文件夹中运行。可以使用文件名和获取模式的可选参数,例如$python[script].py"otherfilename",或$python[script].py"otherfilename""aver8"。注意,不需要(或允许)标志说明符,参数序列是固定的。

日志记录

模块通过日志记录提供调试输出。通过使用keyoscaquire软件包将以下内容添加到顶级文件中,可以将输出定向到终端

importlogginglogging.basicConfig(level=logging.DEBUG)

或直接指向带有

的文件
importlogginglogging.basicConfig(filename='mylog.log',level=logging.DEBUG)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在OSGI中使用cxf生成的客户端时出现Java类装入器问题和JaxB异常   java为什么要在javamail中迭代多部分电子邮件中的部分?   并发编程问题   JFileChooser&&System中未调用java windowClosing。退出功能不正常?   SQL查询的java语法分析   java如何使用AspectJ声明字段上的警告   什么是java向量。元素()C#等价物   java解析Android应用程序中tornado web服务中的CSV文件   java我试过c2dm,我需要服务器端   java调整JPanel大小以适应新的JLabel图标   Java与Python脚本的通信   java使用Saxon通过XSLT生成URL   java net::ERR_complete_CHUNKED_编码200(OK)来自struts应用程序中的tomcat   java如何为我的窗格设置不同的位置?   java使用Cypher Neo4j获取给定类型的所有节点(从SQL世界中的tablename中选择*)   nio使用Java解析文件值   java使用WSDL生成REST客户端会是错误的方向吗?   java如何在我的应用程序中构建类映射?   java按钮。setEnabled在第一个循环中不起作用   xPath适用于最后一页,但不适用于第一页