Documentation and Support

Download Lab::Measurement

Lab::Measurement allows to perform test and measurement tasks with Perl scripts. It provides an interface to several instrumentation control backends, as e.g. Linux-GPIB or National Instruments' NI-VISA library. Dedicated instrument driver classes relieve the user from taking care for internal details and make data aquisition as easy as

$voltage = $multimeter->get_voltage();

The Lab::Measurement software stack comprises several parts that are built on top of each other. This modularization allows support for a wide range of hardware on different operating systems. As hardware drivers vary in API details, each supported one is encapsulated into perl modules of types Lab::Bus and Lab::Connection. Normally you won't have to care about this; at most, your Instrument object (see below) gets different initialization parameters.

A typical measurement script is based on the high-level interface provided by the modules Lab::Instrument and Lab::Measurement. The former silently handles all the protocol overhead. You can write commands to an instrument and read the result. Drivers for specific devices are included, implementing their specific command syntax; more can easily be added to provide high-level functions. The latter includes tools to automatically generate measurement loops, for metadata handling (what was that amplifier setting in the measurement again?!), data plotting, and similar.

While Lab::Measurement has built-in support for devices connected, e.g., via ethernet or serial port, you may want to additionally install driver backends such as Lab::VISA or LinuxGPIB.



How to obtain

Lab::Measurement is free software and can be downloaded from CPAN. The source code archive can be found at Github, where you can also obtain the newest pre-release code and browse the version history. If you would like to contribute, just send us your patches, merge requests, ... :) For browsing the code we also have a direct gitweb access.


Quite some documentation of Lab::Measurement (PDF format) is available. This documentation includes a tutorial on using Lab::Measurement (outdated). Detailed installation instructions are provided as well. In addition, there's also a collection of back-end specific documentation and links.


Lab::Measurement is a the result of a full restructuring of the code of its predecessor Lab::VISA. Recently, Lab::XPRESS, a completely new interface providing automated measurement loops and much more has been added. The code is still in flux, which is why we recommend to check the XPRESS example scripts on the documentation page. Also, if you want to use the code, it definitely helps to get in touch with us and contribute patches.

Lab::Measurement and its predecessor Lab::VISA are currently developed and employed at nanophysics group, LMU München and mesoscopic physics group, Uni Regensburg. Users have reported further applications in academic and industrial r&d environments. Feel free to try it, to hack, and to send us your improvements and bugfixes.

Authors and history

The Lab::VISA system was originally developed by Daniel Schröer and continued by Andreas K. Hüttel, Daniela Taubert, and Daniel Schröer. Most of the documentation was written by Daniel Schröer. In 2011, the code was refactored mostly by Florian Olbrich to include the Bus and Connection layers; subsequently the name of the entire package collection was changed to Lab::Measurement. David Kalok and Hermann Kraus have contributed additional code. Currently development, especially also concerning the new Lab::XPRESS layer, is continued by Christian Butschkow, Stefan Geissler, Alexei Iankilevitch, and Alois Dirnaichner.