The Cryogen-free Measurement System. CryoAdvance, Inc.

LTLab, Inc.



The New Approach to Scientific Equipment Management

  • Read article (in Russian).

While developing and improving for years our software, and implementing new features into hardware, we found that it becomes more and more difficult to implement such features in software. Typical tasks for implementing new parameter include:

  • extending client-server protocol
  • visual interface development
  • writing message handlers for visual interface
  • writing validation functions for input values

These tasks slightly differ for different parameters, but in general are all the same. The most inconvenient task is writing converters from hardware values to real world values and back. Every value requires separate calibration constant, which in turn should be stored somewhere and transferred by protocol.

With time we realized that the number of different parameters types is limited. In general, these are:

  • real values (like voltage)
  • integer values (like number of samples)
  • boolean values (like on/off switch)
  • enumerations (like Tapping, Contact and Tunnel SPM types)
  • and some other types...

When we have outlined this types, it become possible to develop a general protocol for such values description, storage, and manipulation. To avoid writing conversion functions, we have implemented in-place conversions by arbitrary equations, which can be set in human-readable form in variable's description. In equations, variables substitution can be used, a number of common mathematical and logical functions implemented.

Besides static variables, we distinguish two special entities:

processes
continuous process, which can be in two states - on and off, each process should be handled by special process handler
stream
a stream of data, acquired during process, among it parameters it has number of dimensions and associated axes

As a result of our work (which is still in process) we propose three libraries for implementing universal variables technology:

network interface library
Allows easily implement network functionality in your application. Includes Message, thread-safe Message Queue and Buffered Stream (based on WinSock 2.0 library) classes.
universal variables implementation library
Core functions for creating and managing universal variables lists, with automatic dependencies update functionality.
universal variables user interface
"Windows Common Controls"-like library for implementing user interaction with universal variables lists.

FemtoScan Online software is made according to this ideology. If your can't for some reason (usually for lack of time) or don't want to write your own process handler and user interface for your hardware, you can use FemtoScan Online as a data processing software, and as a client side for your own server. Converting existing software into server-side software can be done using first two libraries (network interface and core components). Usually it takes about 6 months for experienced programmer to modify existing application.

Copyright © 2008 LTLab, Inc. All Rights Reserved