Back to homepage
fsc2 is a program running under GNU/Linux for controlling spectrometers. Programs for remote control of spectrometers usually are home-written and often restricted to doing a certain set of experiments with only a fixed set of devices. In contrast, fsc2 is much more flexible because it was written with three main aims:
This flexibility is due to making the program an interpreter for a rather easy to learn but powerful enough scripting language called EDL (Experiment Description Language) and employing a strictly modular approach to the handling of devices. This allows to set up a new experiment or change an already existing one easily without requiring any detailed knowledge of the internals of fsc2 or how exactly devices are controlled by the computer. Everything required is to become acquainted with the EDL scripting language. Moreover, an already working script for an experiment can be swiftly converted to display a graphical user interface for entering the experimental parameters by adding just a few extra lines and converting it via a Perl script (included in the package), thus allowing it to be used also by users not acquainted with the EDL language at all.
fsc2 is in a mature ("production") state since several years (development already started back in 1998) and quite a number of research groups all over the world use it for their data acquisition requirements. During the last years the majority of changes of the program itself were additions of new features suggested by users, while most of the development time has been gone into writing modules for new devices.
Screenshots: start window with (the start of) an EDL script, a 1D and a 2D EPR experiment (click to enlarge)
In the past I've supplied "tar balls" of the soures of the program. But after I realized that I actually hadn't uploaded a new version in that format for nearly 5 years I finally removed the link. Please instead use the version from the git repository by using a command like
git clone http://users.physik.fu-berlin.de/~jtt/fsc2.git
(if git isn't available on your system please install it, every Linux distribution I know of has packages for it) and then later update to the very newest version with a simple
from within the directory created by 'git clone' whenever you feel like it.
The most recent commit to the git repository was on 2014-07-31 22:22 UTC.
Since fsc2 is open source there are no obligations attached except those imposed by the GPL (v3) license it is (in nearly all parts) distributed under. But I definitely would be delighted to hear from you if you use it and what for. And if you feel like citing it in a publication it was used for that won't make me unhappy - sending me an (electronic) copy of the paper would be great;-)
fsc2 requires a number of libraries, and one of them is the XForms GUI toolkit for X. The version you get with several Linux distributions isn't up-to-date (actually chances are that it's several years old) since development of XForms had stalled a bit for some time. I strongly recommend that you use the currently stable version, which you can download from here:
As one of the maintainers of XForms I always test that new versions work with fsc2. Unfortunately I am not able distribute binary packages of the library, so you will have to compile and install the library from source, but hopefully that isn't too difficult (see the INSTALL file in the top directory). Please contact me if you should encounter problems.
|The EDL language used to describe experiments is similar to other medium to high level languages, borrowing from e.g. MatLab, Fortran, C and Perl etc. It comes with a lot of functions for handling, displaying and saving data in completely user defined ways. Thus writing a description for a new experiment or adapting an already existing EDL script won't be difficult for anyone remotely acquainted with one of the above mentioned programming languages. The online documentation has a chapter with an introduction to writing EDL scripts.|
|Devices are not "hard-coded" into fsc2. Instead, they are dealt with by modules that get loaded on demand (a single instruction in an EDL script). For each sort of devices a set of EDL functions exists to set up and control the device and e.g. fetch measured data. This allows to employ a different device with similar functionality by often just changing a single line in an EDL script.|
|fsc2 allows other programs to send it EDL scripts for execution. Thus one may write scripts for standard experiments that in turn automatically create EDL scripts from user input, for example via a graphical user interface. fsc2 comes with a tool that automatically generates such scripts for a GUI from slightly modified EDL programs. Once such a script has been created, "normal" users don't have to know how to write or change EDL programs, thus retaining all the convenience of the traditional type of programs but without sacrificing any of fsc2's flexibility.|
|fsc2 comes with a simple built-in web server (only running on user demand) that allows to remotely monitor the state of the experiment.|
|Currently fsc2 can control devices that are either connected via the serial ports, GPIB, LAN, USB, RULBUS (Rijksuniversiteit Leiden BUS) or are realized as PCI or ISA cards (Linux drivers for these cards are supplied with the package as far as possible).|
|Writing new device modules (or adapting existing ones for a new device) shouldn't be too difficult for anyone having some experience with writing programs in C. More than 70 modules for quite a range of devices are already part of the package and can also be used as a starting point for developing modules for new devices. The documentation has a whole chapter on how to write new modules.|
|fsc2 is well-documented, the documentation with about 400 pages in HTML, info and PDF format is part of the package, covering all aspects of fsc2, i.e. the graphical interface, the EDL language, device functions and the writing of new device modules etc.|
|fsc2 has been extensively tested and is currently used for controlling quite a number of EPR spectrometers as well as Optical Single Molecule and Raman spectrometers etc., using a broad range of different devices and experimental techniques.|
|The complete sources for the program and all device modules (as well as several Linux device drivers) are available under the GNU Public License (GPLv3), so they can be adapted or extended to fit whatever requirements there are without any restrictions (except, obviously, that you're not allowed to just grab the code and use it in a proprietary, closed source product or distribute binary-only versions;-).|
For a complete list of supported device see
Please note that some of the devices listed below typically are part of "complete" sprectrometers, e.g. the Bruker ESP 300 series EPR spectrometers. fsc2 can thus be used to replace the legacy software used for controlling those spectrometers and also allows to use further devices not supported by the legacy software.
|Magnet power supplies|
|Magnetic field meters|
|Microwave and RF synthesizers|
|Digital voltmeters etc.|
|Data acquisition cards|
fsc2 works with four different GPIB driver/library combinations, the Linux Lab Project driver and its successor, a driver supporting a huge range of different GPIB cards (strongly recommended), as well as the National Instruments driver (please note: currently only tested with the older versions of the drivers, the newer ones may still pose problems - if it doesn't work and you want to try an older versions write me an email, I still have a copy) and a driver for PCII and NI AT-GPIB/TNT (ISA) cards I wrote some years ago.
Due to my background fsc2 had originally been written with different types of EPR (Electron Paramagnetic Resonance) experiments in mind. On the other hand, fsc2's fundamental concepts should make it easy to use it also for a wide range of other types of spectrometers as has been demonstrated by using it for e.g. (optical) single molecule and Raman spectrometers.
Back to homepage
|Last modified: July 1, 2014|
© 2014 Jens Thoms Törring
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation as well as the Creative Commons Attribution/Share-Alike License 3.0.