You are on page 1of 17

Tutorial: Step-by-Step on how to use ActiveX in Labview

The following is a step-by-step tutorial on how to use ActiveX in LabView

In this lesson, we will use Ultimaserial ActiveX to develop a data acquisition


application with DATAQ's Starter kit, including DI-194, DI-148U, DI-158U and
DI-710U. You will learn

1. How to import an ActiveX in LabView


2. Use its properties and methods
3. How to convert the variant returned from the ActiveX to data array
4. How to extract members from the converted data array
5. Output the data array to Labview's Waveform Chart or Ultimaserial's
XChart

Before we start, please download and install UltimaSerial.

1. Start Labview. Here we are using LabView 9 so you may notice different
icon, text and/or drop-down menu location when comparing to your version
of LabView. If your LabView is a much older version, please take a look at
the LabView 5 and LabView 6 examples
2. If possible, please open one of the LabView 9 Sample VI as reference.
LabView 9 examples include
1. test.vi, created from this lesson, up to step 36
2. test2.vi, based on test.vi, with added Waveform Chart beyond step 36
3. us9.vi, based on test.vi, but uses dial and list box for sample rate and
COM port selection
3. Follow New->Blank VI to create a new Front Panel
4. Right click on the grid on the Front panel
5. When the drop down menu shows up, click on the double down arrow at
the bottom of the menu, select .NET & ActiveX->ActiveX Container and place
one on the grid of the Front panel:
6. Right click inside the ActiveX container on Front panel, select Insert
ActiveX Object...., then Ultimaserial from the list. If you need to interface
to multiple Windaq Starter kits at the same time, you will need to create one
ActiveX container with Ultimaserial in it for each device
7. Repeat 3) to 5) to insert XChart
8. On the panel grid, follow Right-click->Buttons->Text Button to add a text
button
o Right click on the button
o Under the Appearance tab
 Change the On text to Stop, Off text to Start.
 Change Label to Start/Stop
 Uncheck visible flag for the Label.
o Under Operation tab, change Button behavior to "Switch when
released"
9. On the panel grid, follow Right-click->Num Inds->Num Ind to add a
numeric display
10. Follow Right-click->Num Inds->Num Ind to add another numeric display
11. Follow Right-click->Num Ctrls->Num Ctrl to add a numeric input.
o Right click on it
 Under Appearance table
 Uncheck "Show Increment/decrement buttons".
 Change Label text to Device
12. Follow Right-click->Num Ctrls->Num Ctrl to add another numeric input.
o Right click on it
 Under Appearance table
 Uncheck "Show Increment/decrement buttons".
 Change Label text to "COM"
13. Follow Right-click->Num Ctrls->Num Ctrl to add another numeric input.
o Right click on it
 Under Appearance table
 Uncheck "Show Increment/decrement buttons"
 Change Label text to "Sample Rate"
14. Save the vi as test.vi. Now the front panel of our vi should look like the
following:
15. From the menu bar, follow Window->Show Block Diagram to bring up the
test.vi Block Diagram, which is like the following
16. Right click on the workspace. When the drop down menu shows up, click
on the double down arrow at the bottom of the menu, select Programming-
>Structures->Stacked Sequences
17. Right click on the frame and select "Add Frame after"
18. Inside Frame 0, add "while loop" from RightClick->DoubleDownArrow-
>Programming->Structure->While Loop
19. Create a local variable for Start/Stop button, Change To Read, and connect
it to loop condition
20. Insert another stacked sequence to Frame 1 of the above stacked sequence
21. Add five frames to the new sequence, now the block diagram is like this

22. In Frame 0 of the inner sequence frame, RightClick->DoubeArrowDown-


>Connectivity->ActiveX->Automation. Connect the automation to
Ultimaserial
23. In Frame 1 of the same sequence, right click on Ultiamserial->Create-
>Property for ULTIMASERIAL....class to bring
in ChannelCount, EventLevel, CommPort, Device,AcquisitionMode and Sa
mpleRate
24. Change the above properties to Write
25. Create three numeric constants 2, 1 and 0: RightClick-
>DoubleDownArrow->Mathematics->Numeric->Numeric Co.
26. Link the appropriate inputs to the above properties. With this configuration,
we enable two channels, no trigger condition, update data at highest rate.
27. In Frame 2 of the same sequence, right click on Ultiamserial->Create-
>Method for ULTIMASERIAL....class to bring in Start. To demonstrate how to
use XChart, right click on XChart->Create->Method for XCHART....class to
bring in Ymax (put) and Ymin (put), wire them like this to initialize them so that it
takes the full range of the ADC readings
28. In Frame 3 of the same sequence, follow the above procedure to bring in
Ultmaserial.GetData, Ultimaserial.AvailableData and XChart.Chart
29. Added the followings
0. Multiply from RightClick->DoubleDownArrow->Mathematics-
>Numeric->Multiply
1. Division from RightClick->DoubleDownArrow->Mathematics-
>Numeric->Divide
2. Decrement from RightClick->DoubleDownArrow-
>Mathematics->Numeric->Decrement
3. Array Index from RightClick->DoubleDownArrow-
>Programming->Array->Index Array. You can resize it to show more
input nodes
4. Array Size from RightClick->DoubleDownArrow-
>Programming->Array->Array Size

5. Variant to Data from RightClick->DoubleDownArrow-


>Connectivity->ActiveX->Variant to...,

6. While loop from RightClick->DoubleDownArrow-


>Programming->Structure->While Loop
1. Click on the red circle to change the condition

to

7. Case Structure from RightClick-


>DoubleDownArrow->Programming->Structure->Case Struct...,

8. Array Constant from RightClick->DoubleDownArrow-


>Programming->Array->Array Const...

0. Resize it to two dimensional


1. Create a constant zero as I16 and uncheck Adapt to entered
data

2. Add this constant to Array Constant's data basket


9. Great than zero from RightClick->DoubleDownArrow-
>Programming->Comparison->Greater than...
10. Several numeric constants , , and
30. Wiring
0. connects to the data type of Variant to Data

1. connects to the condition of case


2. The output of Ultimaserial.GetData connects to the input of

XChart.Chart.Data and the input of Variant to Data

3. The output of Variant to Data connects to the input of Array

Size and Array Index


4. The others should be trivial.
31. This is what you should get:
32. Frame 4

33. Frame 5. RightClick->DoubeArrowDown->Connectivity->ActiveX->Close


Ref. Connect the Close Ref to Ultimaserial

34. Switch back to Front Panel window, and Run it


35. Enter device name, COM port and sample rate
36. Click on Start button, and here is the result

37. If you wish to plot the waveform to the Waveform Chart from Labview,
read on
38. Stop the program and switch back the Front Panel view
39. Resize the Panel so that we have room to add LabView's Waveform Chart
to it
40. Right click on the grid, follow Graph Indicators->Chart, and place a chart
on the Front Panel
41. Right click on the Waveform Chart and select properties
42. Select 2 for "Plots shown"

43. Now the Front Panel is like this

44. Switch to Block DIagram view of the project and wire the input of
Waveform Chart to the output of Variant To Data, like this
45. Switch back to Front Panel View, right click on Waveform Chart and
uncheck "Transpose Array"
46. Run it, and here is what you will see

For More Information Contact National Instruments: www.ni.com

You might also like