Notice: Undefined offset: 0 in /home5/crojacko/php/nav-menu.php on line 533

Notice: Trying to get property of non-object in /home5/crojacko/php/nav-menu.php on line 535


About LabVIEW

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 internet connectivity.

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.

Major project:
  • 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 digital control).
  • Focussed-ion-beam nano-fabrication patterning programs (GUI to prepare data files for Ion-Beam station's driving software).
  • Variety of data analysis, and verification programs, including basic TIFF and dxf format decoders, distributed calculation engines (TCP/IP networking, custom protocol specification).

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 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 sharp features.
  • 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.
  • A port of the Perl Compatible Regular Expression Library by Philip Hazel <> 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.
  • 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.
  • 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 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.





LabVIEW Information


National Instruments
LabVIEW Home Pages
The info-labview mailing list home page.


Vi's to Download


Select Files.llb
Recursive File
Get Parameters.llb


White Papers


labview client-server.pdf