asvela / keyoscacquire

keyoscacquire is a Python package for acquiring traces from Keysight InfiniiVision oscilloscopes through a VISA interface
https://keyoscacquire.readthedocs.io
MIT License
21 stars 6 forks source link
infiniivision keysight oscilloscope pyvisa visa

keyoscacquire: Keysight oscilloscope acquire

.. image:: https://img.shields.io/pypi/v/keyoscacquire?style=flat-square :target: https://pypi.org/project/keyoscacquire/ :alt: PyPI

.. image:: https://img.shields.io/codefactor/grade/github/asvela/keyoscacquire?style=flat-square :target: https://www.codefactor.io/repository/github/asvela/keyoscacquire :alt: CodeFactor

.. image:: https://img.shields.io/codeclimate/maintainability/asvela/keyoscacquire?style=flat-square :target: https://codeclimate.com/github/asvela/keyoscacquire :alt: Code Climate maintainability

.. image:: https://img.shields.io/readthedocs/keyoscacquire?style=flat-square :target: https://keyoscacquire.rtfd.io :alt: Read the Docs Building

.. image:: https://img.shields.io/pypi/l/keyoscacquire?style=flat-square :target: https://keyoscacquire.readthedocs.io/en/dev-v4.0.0/contents/license.html :alt: License

keyoscacquire is a Python package for acquiring traces from Keysight InfiniiVision oscilloscopes through a VISA interface.

Based on PyVISA <https://pyvisa.readthedocs.io/en/latest/>, keyoscacquire provides programmes for acquiring and exporting traces to your choice of ASCII format files (default csv) or numpy npy <https://numpy.org/doc/stable/reference/generated/numpy.lib.format.html>, and a png of the trace plot. The package also provides an API for integration in other Python code.

By default, the package uses the binary WORD format for the waveform transfer from the oscilloscope, giving roughly an order of magnitude speed-up over the ASCII transfer type.

The code has been tested on Windows 7 and 10 with a Keysight DSO2024A model using a USB connection.

.. documentation-marker

Documentation

Available at keyoscacquire.rtfd.io <http://keyoscacquire.readthedocs.io/en/latest/>_. A few examples below, but formatting and links are broken as this file is intended for the documentation parser.

Building a local copy of the docs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. start-local-copy-documentation-marker

Should you wish to build a local copy of the sphinx docs, make sure the necessary packages are installed::

pip install sphinx sphinx-prompt furo recommonmark

and then build by executing make html in the docs folder.

.. end-local-copy-documentation-marker

Installation

Install the package with pip::

pip install keyoscacquire

or download locally and install with $ python setup.py install or by running install.bat.

.. API-use-marker

Python console/API

The Reference/API section (particularly :ref:osc-class) gives all the necessary information about the API.

As an example of API usage/use in the Python console::

import keyoscacquire as koa scope = koa.Oscilloscope(address='USB0::1234::1234::MY1234567::INSTR') Connected to: AGILENT TECHNOLOGIES DSO-X 2024A (serial MY1234567) scope.acq_type = 'AVER8' print(scope.num_points) 7680 time, y, channel_numbers = scope.get_trace(channels=[2, 1, 4]) Acquisition type: AVER

of averages: 8

From channels: [1, 2, 4] Acquiring ('WORD').. done Points captured per channel: 7,680 print(channel_numbers) [1, 2, 4] scope.save_trace(showplot=True) Saving trace to: data.csv scope.close()

where time is a vertical numpy (2D) array of time values and y is a numpy array which columns contain the data from the active channels listed in channel_numbers. The trace saved to data.csv also contains metadata (can be further customised) in the first lines::

AGILENT TECHNOLOGIES,DSO-X 2024A,MY1234567,02.50.2019022736

AVER,8

2020-12-21 03:13:18.184028

time,1,2,4

-5.000063390000000080e-03,-4.853398528000013590e-03,-5.247737759999995810e-03,-5.247737759999995810e-03 ...

The trace can be easily loaded from disk to a Pandas dataframe with::

df, metadata = koa.fileio.load_trace("data") df.head() time 1 2 4 0 -0.005 -0.004853 -0.005248 -0.005248 1 -0.005 -0.005406 -0.005017 -0.005248 2 -0.005 -0.004964 -0.005190 -0.005248 3 -0.005 -0.005185 -0.005363 -0.005248 4 -0.005 -0.005517 -0.005074 -0.005248 metadata ['AGILENT TECHNOLOGIES,DSO-X 2024A,MY1234567,02.50.2019022736', 'AVER,8', '2020-12-21 03:13:18.184028', 'time,1,2,4']

Command line use

Capture the active channels on an oscilloscope connected with VISA address from command prompt

.. prompt:: bash

get_single_trace -v "USB0::1234::1234::MY1234567::INSTR"

The get_single_trace programme takes several other arguments too, see them with

.. prompt:: bash

get_single_trace -h

If you need to find the VISA address of your oscilloscope, simply use the command line programme list_visa_devices provided by this package

.. prompt:: bash

list_visa_devices

If you want to set a default VISA address (and other default options too), run path_of_config to find the folder of the :mod:keyoscacquire.config module, locate it and change the _visa_address variable to the VISA address of your chosen default instrument.

The package installs the following command line programmes in the Python path

See more under :ref:cli-programmes-short.

.. contribute-marker

Contribute/report issues

Please report any issues with the package with the issue tracker on Github <https://github.com/asvela/keyoscacquire/issues>_.

Contributions are welcome via Github <https://github.com/asvela/keyoscacquire.git>_.

The package is written and maintained by Andreas Svela.