Writing and maintaining software for data acquisition can be a painful experience, particularly if all of the code is to be compiled into a monolithic executable which must be recompiled if even a small change is required. The alternative is to write small portions of compiled code and to "glue" them together in a scripting language. This is the approach being taken for data acquisition for the new inelastic spectrometers under development at NIST. Low level control of pieces of instrumentation is achieved through modularized device drivers written as extensions to Tcl/Tk. Through the intrinsic properties of Tcl/Tk and its extensions available on the internet it is possible to quickly develop user-friendly, platform-independent instrument control software which retains the capabilities of compiled code.
Examples of Tcl extensions written include motor controllers, temperature controllers, event counters, GPIB and VME device control, and an extension to read and write hierarchical data format (HDF) files compliant with the NeXus standard for neutron/x-ray data. An associated paper will discuss a set of Tcl tools for data visualization and analysis.