Now you will complete the program by adding some code to acquire and display a waveform.
You will use an instrument driver to acquire a waveform from a simulated oscilloscope. Instrument drivers for controlling a GPIB, VXI, or Serial instrument are stored in specialized libraries. LabWindows/CVI has a library of more than 450 instruments covering all of the major instrument vendors. The drivers are included free of charge with LabWindows/CVI, and each driver includes the source code, so that you can optimize, enhance, or convert existing drivers to meet your needs.
Click on the Instrument menu to begin loading an instrument driver.
!
BEGIN_TEXT
!
Loading an Instrument Driver
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
4
3330
3795
5025
1890
0
0
0
0
BEGIN_TEXT
Here you see just a few of the instrument drivers from which you can choose.
Select the "scope.fp" file and click on the Load button to load the scope driver.
!
BEGIN_TEXT
!
Loading the Scope Driver
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
8
1035
4890
4005
2460
0
0
0
0
BEGIN_TEXT
You have just added a custom library to the LabWindows/CVI development environment. You can now access this library in the Instrument menu.
Pull down on the Instrument menu again and select Sample Oscilloscope to display the function tree for the scope driver.
!
BEGIN_TEXT
!
Accessing the Scope Driver
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
12
3060
1395
5535
3690
0
0
0
0
BEGIN_TEXT
You are now looking at the function tree for the scope instrument driver. A function tree is a hierarchical view of the functions in a LabWindows/CVI library.
With an instrument driver, you no longer have to program your instruments using low-level GPIB command strings. The instrument driver gives you intuitive, high-level functions. To control the scope, you can use simple functions like Initialize, Configure, or ReadWaveform. The driver handles all of the command syntax -- GPIB or VXI I/O -- and data parsing and scaling for you. Let's take a closer look at the instrument driver functions.
Click on the Initialize function and click on the Select button.
!
BEGIN_TEXT
!
Scope Driver Function Tree
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
14
885
5085
4035
5955
0
0
0
0
BEGIN_TEXT
You now see a function panel, another key visual development tool in LabWindows/CVI. Every library function in LabWindows/CVI has a function panel. With function panels, you can do the following.
1. View online help describing a particular function.
2. Generate function call syntax automatically
3. Interactively execute the function to experiment with its operation using different parameter values
4. Insert the generated function call into your source file as you build a project.
Let's start with the built-in online help available from every function panel in LabWindows/CVI.
To view a description of function in online help, right-click on the panel.
!
BEGIN_TEXT
!
Function Panels
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
16
4155
255
4605
1755
0
0
0
0
BEGIN_TEXT
You now see a brief description of the Initialize function.
Click on the Done key to exit Help.
!
BEGIN_TEXT
!
Function Help
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
18
1695
3750
4575
2430
0
0
0
0
BEGIN_TEXT
Each control on a function panel represents a parameter for the function call. The Initialize function has a single parameter: the GPIB address for the simulated oscilloscope.
For a detailed description of the parameter, right-click on the Address control.
!
BEGIN_TEXT
!
Function Parameter Descriptions
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
20
4455
240
4485
2040
0
0
0
0
BEGIN_TEXT
This is a detailed description of the Address parameter for the Initialize function. As you can see, function panels act as a valuable online function library reference.
Click on the Done key to close the help window
!
BEGIN_TEXT
!
Function Parameter Descriptions
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
22
1395
3285
5580
3030
0
0
0
0
BEGIN_TEXT
Because the simulated scope is at GPIB address 1, you should be able to use the Initialize function as is. The syntax for the Initialize function call appears at the bottom of the panel (see arrow).
Before you add this line of code to your program, you can interactively test the Initialize function, to be certain that the scope is at address 1 and communicating properly with the computer.
Pull down on the Code menu, and select Run Function Panel to execute the Initialize function.
!
BEGIN_TEXT
!
Interactive Execution
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
ARR_D1R.BMP
ARR_D1_.BMP
351
30
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
26
1320
3300
4815
2475
0
0
0
0
BEGIN_TEXT
The returned Error value of zero indicates that the Initialize function ran successfully; you are communicating with the scope! Now you can insert the line of code you see at the bottom of this panel into your source code.
Select Insert Function Call from the Code menu to insert the Initialize function call into your source file.
!
BEGIN_TEXT
!
Inserting the Function Call
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
ARR_U1G.BMP
ARR_U1_.BMP
339
382
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
30
1965
5745
3570
3375
0
0
0
0
BEGIN_TEXT
As you can see, your main() program now has a call to the scope_init function.
Now you can proceed with acquiring a waveform and displaying it on the graph control. You will use another function from the instrument driver to acquire a waveform.
Pull down on the Instrument menu and select Sample Oscilloscope again.
!
BEGIN_TEXT
!
Acquiring a Waveform
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
ARR_L1R.BMP
ARR_L1_.BMP
129
180
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
34
3420
810
4080
1290
0
0
0
0
BEGIN_TEXT
Highlight the ReadWaveform function and click on the Select button.
!
BEGIN_TEXT
!
The ReadWaveform Function
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
38
960
5430
3855
4155
0
0
0
0
BEGIN_TEXT
The ReadWaveform function performs the following operations:
1. Builds a command string
2. Sends it to the simulated GPIB scope.
3. Reads the data back from the scope.
4. Parses the data received and scales it to voltage values.
5. Places the voltage values into a user-specified array variable in memory.
Now you can specify values in the ReadWaveform function panel controls to build the function call syntax. Start with the Waveform array variable.
Type "wave" in the Waveform control.
!
BEGIN_TEXT
!
Specifying an Array Name
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
42
1815
5145
4080
1920
0
0
0
0
BEGIN_TEXT
With function panels, you can interactively declare variables in memory.
Pull down on the Code menu and select Declare Variable...
!
BEGIN_TEXT
!
Declaring an Array Variable
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
46
4410
3555
5565
2700
0
0
0
0
BEGIN_TEXT
From the Declare Variable dialog box, you can see that the "wave" array is a double precision array. You can specify how many elements to store in the "wave" array. In addition, you can execute the declaration now -- so you can interactively run the function -- and place a declaration statement into the top of the source file you are building (sample.c).
Type "100" for the Number of Elements for the wave array.
!
BEGIN_TEXT
!
Specifying the Array Size
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
49
5190
4410
3570
1230
0
0
0
0
BEGIN_TEXT
Click on the OK button to continue.
!
BEGIN_TEXT
!
Specifying the Array Size
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
51
4470
1185
6915
1875
0
0
0
0
BEGIN_TEXT
We have specified values in the Sample Period and X Zero controls for you. Now you can acquire a waveform from the scope simply by running this function panel to test your instrument and all connections.
Click on the Run Function Panel icon in the toolbar to run the ReadWaveform function.
!
BEGIN_TEXT
!
Acquire the Waveform Interactively
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
ARR_L1R.BMP
ARR_L1_.BMP
32
47
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
53
615
5265
4365
2205
0
0
0
0
BEGIN_TEXT
As you can see, the ReadWaveform function executed successfully. You can view the datapoints of the "wave" array in the Variable display window.
Double-click on the Waveform control to view the "wave" array values.
!
BEGIN_TEXT
!
View the Acquired Datapoints
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
55
135
5175
4095
1650
0
0
0
0
BEGIN_TEXT
The wave array has been filled with datapoints.
Click on the arrow to continue.
!
BEGIN_TEXT
!
The Array Display
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
59
135
5130
4140
1845
0
0
0
0
BEGIN_TEXT
Now you can insert the ReadWaveform function call into your program.
Click on the Insert Function Call icon in the toolbar.
!
BEGIN_TEXT
!
Inserting the Function Call
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
ARR_L1R.BMP
ARR_L1_.BMP
32
78
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
61
1470
4905
4110
3450
0
0
0
0
BEGIN_TEXT
As you can see, the scope_read_waveform function has been added to the AcquireData function. Function panels insert code into a source window wherever you last placed the cursor.
Now you must use a function from the User Interface Library to plot the waveform on the graph control. The PlotY function plots an array variable on a graph.
Click on the arrow to find the PlotY function panel in the User Interface Library.
!
BEGIN_TEXT
!
Plotting the Acquired Waveform
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
ARR_R1B.BMP
ARR_R1_.BMP
298
49
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
-1
3
0
0
DEMCODE1.AVI
0
80
4215
1020
8130
2145
0
0
0
0
BEGIN_TEXT
Now you must specify values for the PlotY function panel controls. First, you must enter the Control ID, or Constant Name, of the graph control that will display the data. LabWindows/CVI has a built-in utility to display all of the Constant Names for your GUI objects, in case you forget what you named your controls.
Click on the binoculars icon on the toolbar to view a list of user interface controls from the sample.uir file.
!
BEGIN_TEXT
!
Selecting the Graph Control ID
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
ARR_U1R.BMP
ARR_U1_.BMP
69
133
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
82
4260
795
5160
1875
0
0
0
0
BEGIN_TEXT
As you can see, there are only three controls on your GUI -- the ACQUIRE button, the QUIT button, and the GRAPH control.
Select the PANEL_GRAPH control and click on the OK button to continue.
!
BEGIN_TEXT
!
Selecting the Graph Control ID
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
86
4260
795
4560
1635
0
0
0
0
BEGIN_TEXT
Now you must specify which array you would like to display on the PANEL_GRAPH control.
Type "wave" into the Y Array control.
!
BEGIN_TEXT
!
Specifying the Array to Plot
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
90
2505
3570
4980
1245
0
0
0
0
BEGIN_TEXT
Type "100" as the Number of Points to plot from the "wave" array.
!
BEGIN_TEXT
!
Specifying the Number of Points to Plot
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
93
4590
255
8700
1560
0
0
0
0
BEGIN_TEXT
The PlotY function has a number of parameters for setting the style, appearance, and color of the plot on the graph. For this example, we will use the default values.
Insert the generated PlotY function call by pressing the Insert Function Call icon in the toolbar.
!
BEGIN_TEXT
!
Inserting the Function Call
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
ARR_L1R.BMP
ARR_L1_.BMP
32
79
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
95
2265
4380
4485
2235
0
0
0
0
BEGIN_TEXT
Your program is complete! When an end-user presses the Acquire Data button, your program will acquire a waveform from the scope and plot it on the graph control.
Click on the Run Project icon to compile and run your program.
!
BEGIN_TEXT
!
Running the Completed Program
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
ARR_U1B.BMP
ARR_U1_.BMP
85
253
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
97
1155
5070
4440
1395
0
0
0
0
BEGIN_TEXT
Click on the Acquire Data button to acquire and plot a waveform. A sine wave appears in your graph control.
!
BEGIN_TEXT
!
Running the Completed Program
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
0
99
4170
3225
4320
1035
0
0
0
0
BEGIN_TEXT
Click on the Quit button to end the program.
!
BEGIN_TEXT
!
Running the Completed Program
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE1.AVI
1
DEMCODE2.AVI
0
1530
3930
5250
5265
3165
4050
5250
3975
BEGIN_TEXT
Now you will modify your program to respond to a right-click on the mouse (a RIGHT_CLICK event). Callback functions, like the AcquireData function, have a fixed prototype. Each time a keyboard or mouse event occurs on the GUI, a great deal of event information is passed into the callback function. The event parameter contains the event type, such as left-click, right-click, keypress, and so on. The eventData1 and eventData2 parameters contain event-specific information. For example, for a mouse-click event, the eventData1 parameter is the Y-coordinate of the mouse cursor and the eventData2 parameter is the X-coordinate of the cursor in pixels. For a keypress event, these parameters contain the ASCII code for the key that a user presses.
For this example, you will add online Help to your program that will appear when a user right-clicks on the Acquire Data button. You must use a User Interface Library function to create a help message display.
Click on the arrow to continue.
!
BEGIN_TEXT
!
Responding to More Events
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE2.AVI
0
8
3840
4035
4830
2640
0
0
0
0
BEGIN_TEXT
We have chosen the Pop-up Panel functions that you need for this example. Pop-up Panels are quick and easy ways to display common dialog boxes or user interface objects -- and they are already built for you. The Message Popup function displays a user-specified string in a pop-up dialog box.
Click on the Message Popup function and click on the Select button to display its function panel.
!
BEGIN_TEXT
!
Pop-up Panels...
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE2.AVI
0
12
2775
285
4800
1860
0
0
0
0
BEGIN_TEXT
Now you can specify a message to display as online help for the Acquire Data button in the function panel controls.
Click on the arrow to continue.
!
BEGIN_TEXT
!
The MessagePopup Function
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
-1
0
0
0
0
3
3
-1
3
0
0
DEMCODE2.AVI
0
15
2775
285
4800
2280
0
0
0
0
BEGIN_TEXT
We have entered a sample message "Acquires and displays a waveform from the simulated scope instrument driver" in the Message control.
To test the operation of this function, pull down on the Code menu and select Run Function Panel to execute the MessagePopup function.
!
BEGIN_TEXT
!
The MessagePopup Function
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
ARR_D1B.BMP
ARR_D1_.BMP
353
187
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE2.AVI
0
19
4530
300
5460
1665
0
0
0
0
BEGIN_TEXT
This is the message that displays when a user right-clicks on the Acquire Data button in your program.
Click on the OK button to continue.
!
BEGIN_TEXT
!
The MessagePopup Function
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE2.AVI
0
21
3090
300
5400
1395
0
0
0
0
BEGIN_TEXT
To insert the MessagePopup function call into your program source code, pull down on the Code menu and select Insert Function Call.
!
BEGIN_TEXT
!
Inserting the Popup Function
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE2.AVI
0
25
1995
480
5445
1290
0
0
0
0
BEGIN_TEXT
Click on the Run Project icon to compile and run your modified program.
!
BEGIN_TEXT
!
Running the Modified Program
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
ARR_U1R.BMP
ARR_U1_.BMP
63
253
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE2.AVI
0
27
4380
405
5535
1815
0
0
0
0
BEGIN_TEXT
Now your program has built-in online help for the Acquire Data button.
Right-click on the Acquire Data button to display the help message.
!
BEGIN_TEXT
!
Responding to a Right-Click
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE2.AVI
0
29
4800
1275
5085
1110
0
0
0
0
BEGIN_TEXT
Click on the OK button to continue.
!
BEGIN_TEXT
!
Responding to a Right-Click
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE2.AVI
0
31
4380
405
5790
1785
0
0
0
0
BEGIN_TEXT
As before, your program acquires and displays a sine wave when you left-click, which is a commit event, on the Acquire Data button.
Click on the Acquire Data button to acquire and display a waveform.
!
BEGIN_TEXT
!
Responding to a Left-Click
0
0
0
0
255
255
255
255
0
0
0
0
0
0
255
255
255
0
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
8
~~
~~
0
0
0
0
0
3
3
0
3
0
-1
DEMCODE2.AVI
0
33
4380
405
8565
2505
0
0
0
0
BEGIN_TEXT
Congratulations! You have successfully developed an event-driven program with LabWindows/CVI. Your program has an intuitive user interface with online help for the users. And, with the help of an instrument driver, you quickly and easily acquired and displayed a waveform.
Continue with other modules of the Demo Program to learn more about the development tools in LabWindows/CVI.
Click on the Quit button to end this part of the demonstration and return to the main menu of the Demo Program.