Instrument Control (iC) - Overview


icontrol This package contains the main Framework of the Instrument Control (iC) program (iC-Framework)
icontrol.dialogs This package contains different JDialogs that to encapuslat interaction with the User and the Instrument Control (iC) Framework.
icontrol.drivers This package contains the classes to support the different communication ports.
icontrol.drivers.instruments Instrument-Classes for virtual Instruments; Template for new Instrument-Classes.
icontrol.drivers.instruments.agilent Instrument-Classes for Agilent Instruments.
icontrol.drivers.instruments.ekspla Instrument-Classes for Ekspla Instruments.
icontrol.drivers.instruments.eurotherm Instrument-Classes for Eurotherm Instruments.
icontrol.drivers.instruments.hp Instrument-Classes for Hewlett-Packard (HP) Instruments.
icontrol.drivers.instruments.keithley Instrument-Classes for Keithley Instruments.
icontrol.drivers.instruments.lakeshore Instrument-Classes for Lakeshore Instruments.
icontrol.drivers.instruments.srs Instrument-Classes for Stanford Research Systems (SRS) Instruments.
icontrol.drivers.instruments.yokogawa Instrument-Classes for Yokogawa Instruments.


Instrument Control (iC) - Overview

Automate (scientific) test equipment via GPIB, RS232, or USB with this JAVA program.

It has become common practice to automate data acquisition from programmable instrumentation and a range of different software solutions fulfill this task. Many routine measurements require sequential processing of certain tasks, for instance to adjust the temperature of a sample stage, take a measurement, and repeat that cycle for other temperatures. Instrument Control (iC) is an open-source Java program that processes a series of text-based commands that define the measurement sequence. These commands are in an intuitive format which provides great flexibility and allows quick and easy adaptation to various measurement needs. For each of these commands, the iC-framework calls a corresponding Java method that addresses the specified instrument to perform the desired task. The way iC was designed enables one to quickly extend the functionality of Instrument Control with minimal programming effort in Java, by writing Python scripts, or by defining new commands in a text file without any programming.

KPP dedicates this work in devotion to Bhagavan Sri Sathya Sai Baba.

If you like iC, please cite


Project Website / Contact

A compiled version of Instrument Control (iC) is available from

A developer's version as well as the complete javadoc can be accessed from

Bugs and feature requests can be filed at the Issue Tracker at

To contact the developer (Kurt Pernstich) send an eMail to

A publication describing iC can be downloaded from




You can watch the following video tutorials online. Please note that the screen casts might be a bit out-of-date.

Supported Controllers

The Instrument Control (iC) program has been tested with the following configurations:

Supported Instruments

A subset of available commands of the following Instruments is supported:

System requirements

A Java SE Runtime Environment (version 6.0 or later) and one of the above GPIB cards with the appropriate drivers installed should be enough to run the program.


Release version

Developer's version

How the iC Framework works

This document outlines in rough sketches how the iC-Framework works.

How to write new generic Instrument definitions

This document explains how to define new commands for an instrument in the generic way using text files.

How to use Python in iC

This document explains how Python commands and scripts can be used in Instrument-Control (iC).

How to write new Instrument classes and extend existing ones

This tutorial presents step-by-step instructions to implement new commands in Java and also includes naming conventions used in the source code.

How to implement support for a new Communication Port

This document presents step-by-step instructions to implement support for a new Communication Port using the RS 232 serial port as an example.

JUnit Tests

This document discusses details about JUnit tests.


Known issues


Without the following programs the Instrument Control (iC) program would not have been possible. Thank's a lot to the developers of these open source and freeware programs !!
All required files are included in the distribution, and the original files are included in the Deveoper's version for convenience.
Thanks to David J. for initial testing of the JPIB package, to Abdul from Prologix and to all who answered my questions on diverse forums !!


This software was developed at the National Institute of Standards and Technology by a guest researcher in the course of his official duties and with the partial support of the Swiss National Science Foundation. Pursuant to title 17 Section 105 of the United States Code this software is not subject to copyright protection and is in the public domain. The Instrument Control (iC) software is an experimental system. Neither NIST, nor the Swiss National Science Foundation nor any of the authors assumes any responsibility whatsoever for its use by other parties, and makes no guarantees, expressed or implied, about its quality, reliability, or any other characteristic. We would appreciate your citation if the software is used. The publication introducing this program is planned to be published in 2011/12 with K. P. Pernstich as first author.

This software can be redistributed and/or modified freely under the terms of the GNU Public Licence and provided that any derivative works bear some notice that they are derived from it, and any modified versions bear some notice that they have been modified.

This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Public License for more details.

This software relies on other open source projects; please see the accompanying _ReadMe_iC.txt or the Credit section above for a list of included packages. Thank's very much to those developers !! Without your effort, iC would not have been possible!