Python VISA bindings for GPIB, RS232, and USB instruments
Project description
PyVISA-py
A PyVISA backend that implements a large part of the “Virtual Instrument Software Architecture” (VISA) in pure Python (with the help of some nice cross platform libraries python packages!).
Description
PyVISA started as wrapper for the NI-VISA library and therefore you need to install National Instruments VISA library in your system. This works most of the time, for most people. But NI-VISA is a proprietary library that only works on certain systems. That is when PyVISA-py jumps in.
Starting from version 1.6, PyVISA allows to use different backends. These backends can be dynamically loaded. PyVISA-py is one of such backends. It implements most of the methods for Message Based communication (Serial/USB/GPIB/Ethernet) using Python and some well developed, easy to deploy and cross platform libraries
VISA and Python
Python has a couple of features that make it very interesting for measurement controlling:
Python is an easy-to-learn scripting language with short development cycles.
It represents a high abstraction level, which perfectly blends with the abstraction level of measurement programs.
It has a very rich set of native libraries, including numerical and plotting modules for data analysis and visualisation.
A large set of books (in many languages) and on-line publications is available.
Requirements
Python (tested with 2.7, 3.4+)
PyVISA 1.6+
Optionally - PySerial (to interface with Serial instruments) - PyUSB (to interface with USB instruments) - linux-gpib (to interface with gpib instruments, only on linux) - gpib-ctypes (to interface with GPIB instruments on Windows and Linux, warning: experimental)
Python 2 support
With Python 2 EOL behind us, and given the limited time maintainers have, the 0.4.0 release of PyVISA-py will be the last version of PyVISA-py supporting Python 2.
Installation
Using pip:
$ pip install pyvisa-py
Documentation
The documentation can be read online at https://pyvisa-py.readthedocs.org
pyvisa-py is written and maintained by Hernan E. Grecco <hernan.grecco@gmail.com>.
Other contributors, listed alphabetically, are:
Alex Forencich <alex@alexforencich.com>
Alexander Bessman <bessman@kth.se>
Colin Marquardt <github@marquardt-home.de>
Lance McCulley <lancemcculley@gmail.com>
Martin Ritter <ritter@mpp.mpg.de>
Matthieu Dartiailh <marul@laposte.net>
Sebastian Held <sebastian.held@imst.de>
Thomas Kopp <20.kopp@gmail.com>
Thorsten Liebig <liebig@imst.de>
Tobias Müller <Tobias_Mueller@twam.info>
(If you think that your name belongs here, please let the maintainer know)
PyVISA-py Changelog
0.4.1 (2020-05-27)
fix typo in tcpip.py PR #233 (back-ported)
0.4.0 (2020-05-06)
support device lan name in TCPIP INSTR resources PR #226
fix handling of VXI11 flags in device_write PR #226
do not enforce 4 bytes padding RFC 1014 since some instrument do not respect it (Issue # 225) PR #226
fix not setting stop bits with serial devices PR #205
fix improper wait time before a timeout in the TCPIP backend PR # 173
add GPIB support for proprietary device drivers on Windows and Linux (experimental): try importing gpib-ctypes if linux-gpib is not present. fix #105 #137
fix return types of PyVisaLibrary and Session methods to match pyvisa.highlevel.VisaLibraryBase fix #169 PR #170
avoid double closing of gpib resources PR #171
fix initialization of timeout for the USB resources (the default was set before creating the underlying connection to which the timeout must be passed and was not). PR #167
implement USBTMC abort sequence after read timeout to avoid losing communication with the instrument after a timeout occurs. PR #179
fix custom timeout for USB instruments. PR #179
fix triggering for all protocols. PR #180
add support for “quirky” devices made by Rigol. PR #186 PR #207
add support for Visa flush operation. PR #208
fix reading large amounts of data from some instruments when using VXI-11. PR #209
0.3.1 (2018-09-12)
Fix initialization of timeout (issue identified in TCPIP resources) PR #160
0.3 (2018-09-05)
Fix handling of seesion registration under Python 3.7 PR #155
Add read_stb, assert_trigger, lock, unlock to highlevel PR #139
Fix timeout handling in usb PR #144
Add gpib_command and assert_trigger to GPIB PR # 136
Handle ValueError in usb list fix #131 PR #132
Fix reading on GPIB and implement clear and gpib_send_ifc PR #132
Do not error when listing USB devices PR #126
Fix an error in the handling of the termchar for TCPIP INSTR PR #126
Make list_resources return an empty tuple instead of erroring PR #121
Proper support for timeout in TCPIP INSTR sessions PR #120 #127 #130 #144
Proper encoding of data before transfer for all backends PR #119
Unify use of StatusCode PR #118
Improve handling of sessions attrs PR #116
TCPIP SOCKET timeout handling improvement PR #115
Fix compatibility with pyserial 3.0 PR #112
TCPIP SOCKET handler read should not block PR #107
TCPIP error handling fixes PR #100
Use repr() instead of str() to log RPC record PR #97
Speed up large transfer over GPIB 2beb52a5bcea2dae32d4a9908dc19f7874bfc0b7
Catch GPIB errors while enumerating devices 9fea9d5c40cc6c33ce1244c209e5e576a33abfc2
Add a serial poll function to GPIB backend PR #67
Handle timeout in USB TMC backend PR #64
Make USB TMC backend faster by transferring multiple bytes PR #63
Fix issue with encoding before data transfer PR #59 #
Get Linux GPIB version PR #55
Fix broken import in TCPIP sessions PR #51
0.2 (2015-08-25)
Added support for TCPIP Socket. (Issue #38, thanks Thorsten Liebig)
Added support for GPIB INSTR using linux-gpib. (Issue #24, thanks bessman)
Added support for USB RAW. (Issue #18, kopp)
Better error reporting when pyusb or pyserial is missing.
Fixed logging of unicode strings. (Issue #54)
Fixed timeout in SerialSession. (Issue #44)
Moved resource name parsing to PyVISA.
VXI11 protocol performance enhancement. (thanks alexforencich)
Improved pyusb importing.
Fixed large binary reads in TCPIP.
Added backend information to logger.
Use pyvisa compat/struct.py for python < 2.7.8 (thanks Martin Ritter)
0.1 (2015-02-08)
Initial release. Preliminary support for: - USB INSTR - TCPIP INSTR - ASRL INSTR
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for PyVISA_py-0.4.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2daf575c7af2f19fa49b1dbc82d6eff2f1de47dcd8d891290994222a47a22221 |
|
MD5 | 6892b82ed64e69f4e26da57a6d06d07d |
|
BLAKE2b-256 | 24cb5c9a22c3196f5258bf3c2f7f187fd0740ad8f2d751df33c778ff66247043 |