LabVIEW is a National Instruments software package
which is widely used for data acquisition and instrument
control in many test and measurement environments. It allows
for easy communication with a variety of IEEE-488 and RS232
based instruments in addition to analog and digital data
acquisition cards. Additional packages allow interfacing
to image acquisition and processing systems, database and
Probably the most distinguishing feature of LabVIEW is
the graphical programming language which underpins it.
The program code is literally drawn as a set of interconnected
icons, representing functions and subroutines, connected
by lines representing data transmission paths, not unlike
an electronic schematic diagram.
My LabVIEW Work
Main LabVIEW programmer for research group (~50 people).
I have 9 years programming experience with LabVIEW covering
versions 3.0 to 7.1 using Windows 9x, NT 4, 2000, XP and
MacOS. Experience covers both pure 'G' coding, interfacing
with ActiveX components, and writing wrapper dll's and
code interface nodes to handle speed critical sections.
- Comprehensive superconducting device characterisation.
Interfaces to variety of IEEE-488 and RS-232 instruments
(HP power-supplies, Keithley DMMs, Lakeshore and Oxford
Instruments temperature controllers. Uses NI A/D-D/A
cards to interface to custom-built low-noise electronics.
- Minor projects:
- Magnetic device characterisation (resistance vs. magnetic
field and temperature) for a variety of novel Giant and
Colossal Magnetoresistive devices. Interfacing IEEE-488
and A/D Cards.
- Thin film deposition system control - control of stepper
motors and high voltage power supplies (analogue and
- Focussed-ion-beam nano-fabrication patterning programs
(GUI to prepare data files for Ion-Beam station's driving
- Variety of data analysis, and verification programs,
including basic TIFF and dxf format decoders, distributed
calculation engines (TCP/IP networking, custom protocol
Some LabVIEW Code
Here is a small selection of routines that I have written
over the years. They have all been written in LabVIEW v4.0-5.1.1
under Windows NT 4. These routines are mostly utlity routines
for our major pieces of code.
- Select Files.llb This
library contains routines to select individual files,
directories and whole directory structures to a list
from the files on disc. Written in LabVIEW 4, it also
includes a routine for recursively searching within directories.
- Recursive File
Search.vi This routine also recursively searches
directory trees for files matching a specific pattern,
but is written in LabVIEW 5.x and utilizes the vi-server
functionality of this version to perform true recursion.
- Savitsky.llb This library
contains routines to perform Savtsky-Goulay Filtering
- a form of sliding window filtering that is very effective
at smoothing and differentiating data whilst retaining
- Get Parameters.llb Routines
written in LabVIEW 5.x for interogating an arbitary routine
to determine the names and types of its inputs (controls)
or outputs (indicators). This routine is essential underpinning
for producing a totally flexible plugin architecture
using LabVIEW code. In effect, this routine provides
the interface discovery mechanism.
- pcre-2.08-lv.zip A port
of the Perl Compatible Regular Expression Library by
Philip Hazel <email@example.com> to Win32 and LabVIEW.
Contains the C source code for the pcre dll and the Code
Interface Node used for the LabVIEW routine. Perl Compatible
Regular Expressions are much more flexible than the built-in
Match Expressions function, particularly as the routine
will return matching sub-expressions.
- dmg.hash.zip A collection
of routines written in LabVIEW 7.1 that implement a hash-array
(aka a dictionary or an associative array). Basically,
an array in which the elements (variant type) are indexed
by a key (string). Uses a separate dll (provided) to
implement a fast binary search of the index, so not really
cross-platform as it stands.
- dmg.comm.zip A collection
of routines that provides a client-server architechture
using queues. Written in LabVIEW 7.1 as an improved version
of the routines described in my white paper below.
- dmg.linked list.zip A
collection of routines that implements a classic linked-list
structure. Written in LabVIEW 7.1.
Some White Papers
I am building a selection of white papers that describe
some of the LabVIEW techniques that I have employed in
various projects. The papers are in pdf format.
labview client-server.pdf This
white paper describes how I implemented a client-server
approach within labview to support dynamic loading of routines.
It shows how a generic client-server architecture can be
implemented using the new communication and synchronisation
routines introduced with LabVIEW 5. The simple case is
then built upon to build a fully featured dynamic routine
server that loads plugin components on demand.