You are here: Start » Appendices » Quick Start Guide for the Users of LabVIEW

Quick Start Guide for the Users of LabVIEW

Both Adaptive Vision Studio and LabVIEW are based on the idea that the data-flow programming model can be very useful in data-processing applications. This makes the two applications similar on the general level, but still they are very different in the details. Adaptive Vision Studio has been primarily designed for machine vision engineers, whereas LabVIEW is advertised as "software ideal for any measurement or control systems". This results in a completely different design of the user interface with Adaptive Vision Studio concentrating on more sequential algorithms and Data Previews accessible directly within the Main Window.

If you have used LabVIEW before, below you will find a list of key differences that will allow you to start working with Adaptive Vision Studio more quickly by mapping the new concepts to what you already know:

LabVIEW Adaptive Vision Studio Notes
Nodes Filter Instances In both environments these elements have several inputs and outputs, and are the basic data processing elements.
Wires Connections Connections in Adaptive Vision Studio encompass more program complexity than wires in LabVIEW. Like in LabVIEW there are basic connections and connections with data conversion (LabVIEW: coercion). There are, however, also array connections that transmit data in a loop and conditional connections that can make the target filter not executed at all.
Basic Data Types Adaptive Vision Studio has two numeric data types: Integer and Real, both 32-bit. There are also Booleans (LabVIEW: Boolean), Strings, File (LabVIEW: Path) and enumerated types.
Arrays and Clusters Arrays and Structures Arrays and Structures are more similar to the corresponding elements of the C language. Arrays in Adaptive Vision Studio can be multi-dimensional, e.g. one can have arrays of arrays of arrays of integer numbers. Structure types are predefined and their elements can be "bundled" and "unbundled" with appropriate Make and Access filters.
Local Variables Labels The programming model of Adaptive Vision Studio enforces the use of data flow connections instead of procedural-style variables. Instead of local variables you can use labels, that replace connections visually, but not actually.
Global Variables Global Parameters Global Variables in LabVIEW are recommended mainly for passing information between VIs that run simultaneously. In Adaptive Vision Studio this is similar – global parameters should be used to communicate between Parallel Tasks and with HMI Events.
Dynamic values / Polymorphic VIs Generic Filters Generic Filters of Adaptive Vision Studio are more similar to templates of the C++ programming language. The user specifies the actual type explicitly and thus the environment is able to control the types of connections in a more precise way.
Waveform Profile A sequence of numeric values that can be depicted with a 2D chart is called Profile.
Virtual Instrument (VI, SubVI) Macrofilter A macrofilter is a sequence of other filters hidden beyond an interfaces of several inputs and outputs. It can be used in many places of a program as it was a regular filter. Macrofilters do not have their individual front panels. Instead, the environment of Adaptive Vision Studio is designed to allow output data preview and input data control.
Front Panel HMI In Adaptive Vision Studio, HMI (Human-Machine Interface) is created for the end user of the machine vision system. There is thus single HMI for a project. There are no blocks in the Program Editor that correspond to HMI controls. The connections between the algorithm and the HMI controls are represented with "HMI" labels.
For Loop, While Loop Array Connections, Task Macrofilter There are two methods to create loops. The first one is straightforward – when the user connects an output that contains an array to an input that accepts a single element, then an array connection is used. A for-each loop is here created implicitly. The second is more like the structures of LabVIEW, but also more implicit – the entire Task macrofilter works in a loop. Thus, when you need a nested loop you can simply create a new Task macrofilter. These loops are controlled by the filters that are used – more iterations are performed when there are filters signaling ability to generate new data.
Shift Registers Registers Registers in Adaptive Vision Studio are very similar to Shift Registers. One difference is that the types and initial values of registers have to be set explicitly. Step macrofilters preserve the state of registers between subsequent executions within a single execution of the Task that contains them. There are no Stacked Shift Registers, but you can use the LastTwoObjects / AccumulateElements filters instead.
Case Structures Variant Macrofilter While Task Macrofilters can be considered an equivalent of the While Loops of LabVIEW, Variant Macrofilters can be considered an equivalent of the Case Structures. Selector Terminals and Cases are called Forking Ports and Variants respectively.
Sequence Structures All macrofilters in Adaptive Vision Studio are executed sequentially, so explicit Sequence Structures are not needed.
Controls Palette HMI Controls
Functions Palette Toolbox
Formula / Expression Nodes Formula Blocks Formula Blocks are used to define values with standard textual expressions. Several inputs and outputs are possible, but loops and other C-like statements are not. This feature is thus something between LabVIEW's Expression and Formula Nodes. If you need C-like statements, just use C++ User Filters that are well integrated with Adaptive Vision Studio.
Breakpoints Iterate Current Macrofilter As there are no explicit loops other than the loops of Task macrofilters, a macrofilter is actually the most appropriate unit of program debugging. One can use the Iterate Current Macrofilter command to continue the program to the end of an iteration of the selected macrofilter.
Error Handling In Adaptive Vision Studio there are no error in/out ports. Instead, errors are handled in separate subprograms called Error Handlers. In some cases when an output of a tool cannot be computed, conditional outputs are used. The special value Nil is then signaling a special case. This is for example when you try to find the intersection of two line segments which actually do not intersect.
Call Library Function Node User Filter User Filters can be used to execute pieces of code written in Microsoft Visual C++. The process of creating and using User Filters is highly automated.
Previous: Backward Compatibility Policy Next: Quick Start Guide for C/C++ Programmers