Introduction To OOP For LabVIEW Programmers
Introduction To OOP For LabVIEW Programmers
com
ni.com
ni.com
Configure
Acquire
Measure
ni.com
Configure
Measure
Acquire
Start Task
Read Samples
Stop Task
Savvy programmers will often use SubVIs to wrap API calls to things
like device drivers or loading configuration from a file
ni.com
Task
Graph
Samples
DAQ Task
Clock
Raw Data
Configure
Acquire
Measure
ni.com
Measurement System
Task
Graph
Samples
DAQ Task
Clock
Raw Data
Configure
Acquire
Measure
ni.com
Measurement System
I/O
Graph
Samples
DAQ Task
Raw Data
Clock
Configure
Acquire
ni.com
Measure
Measurement System
Configure Event Case
Task
Clock
Configure
Measurement System
Acquire Event Case
Samples
Raw Data
Acquire
Measurement System
Measure Event Case
Graph
Measure
ni.com
Measurement System
I/O
Event Case
Cloc
k
Samples
Raw Data
Task
Measurement System
I/O
Event Case
Cloc
k
Samples
Raw Data
I/O
Task
Cloc
k
Task
Configure
The methods within this state machine retrieve the information they
need from the cluster and update values as necessary
ni.com
Measurement System
I/O
Event Case
Cloc
k
Samples
Raw Data
Task
Configure
Graph
Samples
Raw Data
Task
Configure
Acquire
Measure
ni.com
I/O
Cloc
k
Samples
Measurement
Class
Raw Data
Task
Measurement
Data
ni.com
Measurement
Graph
Configure
Acquire
Measure
The object wire can be passed into any VI that has the class on the
connector pane, but only VIs that belong to the class can directly
bundle and/or unbundle the data
ni.com
I/O
Cloc
k
Samples
Raw Data
Task
Acquire
Measure
Demonstration
Creating a New Class
ni.com
Measurement System
I/O
Event Case
Cloc
k
Samples
Raw Data
Task
Configure
ni.com
Measurement System
Case
Measurement
ni.com
Configure
Measurement System
Case
Measurement
Configure
What if you want a different definition of how these methods should act?
In this example, consider the different ways in which a measurement might be implemented
ni.com
Measurement
Temp
Finite measurement of a
single channel
Strain
Applies stimuli before
acquiring value
Demonstration
Define inheritance and view the class hierarchy diagram
ni.com
Measurement System
Case
Measurement
Configure
What if you want a different definition of how these methods should act?
In this example, consider the different ways in which a measurement might be implemented
ni.com
Temp
Acquire
Start Task
ni.com
Read Samples
Stop Task
Strain
Acquire
Start AO Task
Start AI Task
ni.com
Stimulate
Output
Sweep Inputs
Strain
Temp
Acquire
610
2
Resistance
Strain.lvclass:
Acquire.vi
ni.com
Temp.lvclass:
Acquire.vi
Resistance.lvclass:
Acquire.vi
Demonstration
Illustrate dynamic dispatch
ni.com
Graph
Configure
Acquire
Measure
Q: Isnt this the same thing as using case structures inside these VIs ?
I/O
Cloc
k
Samples
Raw Data
Task
Configure
Measurement Type
ni.com
Acquire
Measure
Graph
I/O
Clo
ck
Samples
Raw
Data
Task
Configure
Measurement Type
Acquire
Measure
Graph
I/O2
DIO
Trigger
I/O
Clock
Samples
Raw
Data
Task
Configure
Acquire
Measure
Measurement Type
ni.com
Graph
Task
I/O
Samples
Measurement
Thermocouple
Bridge Type
excitation
Strain
Temp
ni.com
I/O2
DIO
Trigger
I/O
Clock
Samples
Raw
Data
Task
Configure
Acquire
Graph
Measure
Measurement Type
Yes, you can dynamically load the VIs called by these VIs, but you have to
have pre-defined the data they have access to. The data in the cluster wire
cannot be changed at run-time, as the connector pane must match exactly.
ni.com
Graph
Configure
ni.com
Acquire
Measure
Graph
Configure
Acquire
Measure
LabVIEW can load a new child at run-time. The class will bring its methods and
its data cluster into memory when loaded. This makes it possible to add
functionality without modifying calling code. The code to load a child class is
referred to as a Factory.
ni.com
Generic Measurement
Parent
Location on Disk
Where Measurements
Classes are Stored
ni.com
Children
Group Exercise
About that Graph output what if my measurements output different data types?
Strain
Graph
Temp
Configure
Configure
Acquire
Measure
Acquire
Boolean
Measure
Dynamically dispatched VIs must have the same connector pane. You cannot have a
different data type output on Measure. So how do we solve this problem?
ni.com
Measure
Strain Result
Temp Result
Resistance Result
Each has a unique private data cluster to store the result of a measurement and
defines how that data is stored or displayed using dynamically dispatched methods
that override the interface defined by the parent Measurement Result
ni.com
ni.com
Measurement Class
Configure
Acquire
Measure
ni.com
Temp
Configure
Measure
Acquire
DMM
Class
Configure
Current
Source
ni.com
Autozero
Read
DMM
Class
Agilent
34401a
ni.com
PXI-4070
Simulated
DMM
Measurement
Class
Configure
?
ni.com
Acquire
Measure
Measurement
Class
Configure
Acquire
Measure
ni.com
Hardware
Power Supply
PXI-4110
ni.com
Simulated
DMM
Simulated
34401a
Generator
Scope
PXI 4070
Simulated
PXIe-5185
Simulated
Measurement
Class
Methods can cast hardware objects to specific children at edittime using the to more specific primitive
Configure
Acquire
Measure
DMM
SCOPE
ni.com
Demonstration
Use these concepts in a real system
ni.com
ni.com
ni.com
20%
40%
as a result of NI Certification
ni.com
Email certification@ni.com
To Schedule Your Exam
ni.com
ni.com
ni.com