使用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 install
或install.bat
。注意没有一个函数直接访问全局变量,但它们作为默认参数提供。
波形格式指定在查询波形时是否应传输16/8位原始值或逗号分隔的ascii电压值(输出文件无论如何都是ascii,这只是一个数据如何传输到计算机并在计算机上处理的问题)。原始值格式大约比ascii快10倍。
命令行程序将记录道保存在运行它们的文件夹中,即默认为数据n<;n>;.csv
和数据n<;n>;.png
已知问题/建议的改进
- 已知问题:有时
word
波形不会给出正确的跟踪数据,只是随机噪声(但切换到ascii
或byte
会给出正确的跟踪)。如果发生这种情况,请打开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)