LabVIEW is proprietary software for measurement and control systems, and is the hear of the NI design platform.

See Also

open source and uses Tcl/Tk for its GUI.


Running Tool Command Language (Tcl) Scripts from LabVIEW
Introduction to Scripting in Perl, Python and Tcl
Advanced Scripting in Perl, Python and Tcl


LabVIEW allows programming in a language called G, G is flow-based programming, actually they call it dataflow. Its well-documented libraries that come in handy for solving all kinds of 'automation' problems.

  • Signal Processing
  • Image recognition
  • Maths
  • ...

Connects to many instruments/devices by the use of VISA, IVI, GPIB, TCP/IP or UDP, ActiveX... name it LabVIEW plays it.

Programming in LV is (even more) fun (than programming Tcl ;-)) because you do not need to type your program (G), you just draw it. Even kids can do it ! (What would be a starters age for Tcl?)

(The result is something that is sometimes called spagetti-code, in the real meaning of spagetti. Check out google for an impression of what it looks like.)

The most fun part is that it can be glued together with Tcl by the use of tcom as mentioned in Tcl and Labview, 2002-02-04

RWT: You can run Tcl scripts from within LabVIEW by calling the tcl84.dll functions using the "Call Library Function" block. Just instantiate blocks equivalent to this code:

interp = Tcl_CreateInterp();
Tcl_FindExecutable(interp, "labVIEW.exe");
Tcl_Eval(interp, script);

Point the library path to tcl84.dll, run in UI thread, and use "C" calling convention. You can't define types (in LabVIEW 6.1), but defining interp as "32 bit unsigned int" seems to work. And you can make the calls sequential by chaining the output value of interp to the next function in the sequence. Attach input and output controls to the string script and result return value, and you can type in scripts and display the result on your LabVIEW control panel.

Setok: For me the most interesting thing about LabVIEW is that it's really the only programming language I can think of where handling concurrency is just as easy as coding sequentially. Indeed, concurrency is the natural way to do things in LabVIEW (whether it actually runs the threads concurrently is another matter, but there is potential in that type of coding).

marcopolo: I've started to implement the LabView blocks following the instructions of RWT (executing "set var 5") but it didn't work. Is there someone who built the same blocks for LabView 7.1 and could give me the *.vi?

marciorc 2012-05-08 13:57:51:

What is the difference of:

Regards Marcio