# Instrument driver

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Instrument_driver
> Markdown URL: https://mediated.wiki/source/Instrument_driver.md
> Source: https://en.wikipedia.org/wiki/Instrument_driver
> Source revision: 1314342182
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

An **instrument driver**, in the context of test and measurement (T&M) application development, is a set of software routines that simplifies remote [instrument control](/source/Instrument_control). Instrument drivers are specified by the IVI Foundation[1] and define an [I/O](/source/Input/output) abstraction layer using the [virtual instrument software architecture](/source/Virtual_instrument_software_architecture) (VISA). The VISA hardware abstraction layer provides an interface-independent communication channel to T&M instruments. The drivers encapsulate the [Standard Commands for Programmable Instruments](/source/Standard_Commands_for_Programmable_Instruments) (SCPI) commands, which are an [ASCII](/source/ASCII)-based set of commands for reading and writing instrument settings and measurement data. This standard allows an abstract way of using various [programming languages](/source/Programming_language) to program remote-control applications instead of using SCPI commands. An instrument driver usually has a well-defined [API](/source/Application_programming_interface).

## Standards

### VXIplug&play

The VXIplug&play Systems Alliance was founded in 1993[2] with the aim of unifying VXI hardware and software to achieve 'plug and play' interoperability for [VXI](/source/VXI) and [GPIB](/source/GPIB) instruments. As part of the unifying process, VXIplug&play instrument drivers[3] were also defined.

### IVI

When the IVI Foundation took over the Alliance in 2002, it defined a new generation of instrument drivers to replace the VXIplug&play standard. The IVI instrument driver specification intends to overcome the drawbacks of VXIplug&play. These IVI (Interchangeable Virtual Instrumentation) drivers[4] are currently defined in three different architectures:

1. The IVI-[COM](/source/Component_Object_Model) driver architecture[5] is based on the Microsoft [Component Object Model](/source/Component_Object_Model).
1. The IVI-C drivers are based on [C programming language](/source/C_(programming_language)) shared components (shared libraries).
1. The IVI[.NET](/source/.NET_Framework) driver architecture was specified in 2010.[5][6] The IVI.NET drivers are based on the [.NET](/source/.NET_Framework) framework.

## Instrumentation remote control

Instrument drivers allow quicker development of remote-control applications for instrumentation. The drivers reduce the difficulty of string formatting when using [SCPI](/source/Standard_Commands_for_Programmable_Instrumentation) commands by providing a well-defined [API](/source/API). The IVI and VXIplug&play Instrument Drivers use the VISA as the hardware abstraction layer so that hardware-independent applications can be developed.

## I/O hardware abstraction layer VISA

The [VISA](/source/Virtual_instrument_software_architecture) library allows test and measurement equipment to be connected through various hardware interfaces. The following interfaces are available:

- [Serial Port](/source/Serial_port)
- [GPIB](/source/GPIB)/[IEEE-488](/source/IEEE-488)
- VXI-11[7] (over [TCP/IP](/source/TCP/IP))
- USB488/USBTMC (USB Test & Measurement), [USB](/source/USB) Test & Measurement Class Specification[8]
- [HiSLIP](/source/HiSLIP)[9] (over [TCP/IP](/source/TCP/IP)).

### LXI

The [LAN eXtensions for Instrumentation (LXI)](/source/LAN_eXtensions_for_Instrumentation) standard defines the communications protocols for controlling test and measurement systems using [Ethernet](/source/Ethernet). The standard requires vendors to offer IVI compliant instrument drivers.

## See also

- [Instrument control](/source/Instrument_control)
- [Standard Commands for Programmable Instruments](/source/Standard_Commands_for_Programmable_Instruments)
- [Automation](/source/Automation)
- [IEEE-488](/source/IEEE-488)
- [VISA](/source/Virtual_Instrument_Software_Architecture)
- [LabVIEW](/source/LabVIEW)
- [LabWindows](/source/LabWindows)
- [Agilent VEE](/source/Agilent_VEE)
- [MATLAB](/source/MATLAB)
- [LAN eXtensions for Instrumentation](/source/LAN_eXtensions_for_Instrumentation)

## References

1. ["IVI Foundation Specifications"](http://www.ivifoundation.org/). IVI Foundation.

1. ["VXIplug&play Alliance"](https://web.archive.org/web/20100329001457/http://www.ivifoundation.org/VXIPlug_Play/default.aspx). IVI Foundation. Archived from [the original](http://www.ivifoundation.org/VXIPlug_Play/default.aspx) on 2010-03-29. Retrieved 2009-11-20.

1. ["VPP-3.1: Instrument Drivers Architecture an Design Specification"](https://web.archive.org/web/20130127104918/http://www.ivifoundation.org/docs/vpp2-2010-02-24.pdf). IVI Foundation. Archived from [the original](http://www.ivifoundation.org/docs/vpp2-2010-02-24.pdf) on 2013-01-27. Retrieved 2012-11-06.

1. ["IVI Driver Specifications"](http://www.ivifoundation.org/specifications/default.aspx). IVI Foundation.

1. ["IVI-3.1: Driver Architecture Specification"](https://web.archive.org/web/20130127104713/http://www.ivifoundation.org/downloads/Architecture%20Specifications/IVI-3.1_Architecture_2012-08-06.pdf). IVI Foundation. Archived from [the original](http://ivifoundation.org/downloads/Architecture%20Specifications/IVI-3.1_Architecture_2012-08-06.pdf) on 2013-01-27. Retrieved 2012-11-06.

1. ["IVI-3.18: IVI.NET Utility Classes and Interfaces Specification"](https://web.archive.org/web/20120404191223/http://www.ivifoundation.org/downloads/Architecture%20Specifications/IVI-3.18_.NET_Utility_Classes_and_Interfaces_2011-06-30.pdf). IVI Foundation. Archived from [the original](http://www.ivifoundation.org/downloads/Architecture%20Specifications/IVI-3.18_.NET_Utility_Classes_and_Interfaces_2011-06-30.pdf) on 2012-04-04. Retrieved 2011-11-11.

1. ["VXI-11 Bus Specification"](http://www.vxibus.org/?q=node/206). VXI Bus Consortium.

1. ["USB Test & Measurement Class Specification"](https://web.archive.org/web/20100326005605/http://www.usb.org/developers/devclass_docs/). USB Implementers Forum Inc. Archived from [the original](http://www.usb.org/developers/devclass_docs) on 2010-03-26.

1. ["IVI-6.1: High-Speed LAN Instrument Protocol (HiSLIP)"](http://www.ivifoundation.org/downloads/Class%20Specifications/IVI-6.1_HiSLIP-2010-06-08.pdf). IVI Foundation.

## External links

- [IVI Foundation](http://www.ivifoundation.org)
- [SCPI Consortium](http://www.ivifoundation.org/scpi/default.aspx) [Archived](https://web.archive.org/web/20110206022050/http://www.ivifoundation.org/scpi/default.aspx) 2011-02-06 at the Wayback Machine
- [VXIplug&play Systems Alliance](http://www.ivifoundation.org/VXIPlug_Play/default.aspx) [Archived](https://web.archive.org/web/20100329001457/http://www.ivifoundation.org/VXIPlug_Play/default.aspx) 2010-03-29 at the Wayback Machine
- [LXI Consortium](http://www.lxistandard.org/)
- [Introduction to Attribute Based Instrument Drivers](http://www.rohde-schwarz.com/appnote/1ma170)
- [Development Hints and Best Practices for Using Instrument Drivers](http://www.rohde-schwarz.com/appnote/1ma153)

---
Adapted from the Wikipedia article [Instrument driver](https://en.wikipedia.org/wiki/Instrument_driver) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Instrument_driver?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
