LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

DAQ+storage must happen independent of other screens OR user interaction

I have a problem here.
Program has 3 screens


screen 1
To save user entered parameters. Example - acquisition period value, data storage location, averaging

screen 2
-data acquisition(DAQ) takes place
-graphs are displayed for user
-additional user parameter selection (user selected momentary temperature acquisition)

screen 3:
Zoomed displays of graphs user has selected from screen2 graphs



Problem:
When I go from screen2 to screen1/screen3 , data acquisition should not stop. It must continue.
And the user entered parametrs on screen1 must be immediately effective in screen2 (DAQ + storage part)


What is the best Tree structure? How should be interdependability? 'tab'
control won't work and I guess neither event structure would. I have LabVIEW 7.0
Since this is basic part of program structure, once begun , it's hard to modify the basic frame.

Thanks in advance for Inputs, Ideas,help.

Sandeep
0 Kudos
Message 1 of 4
(2,746 Views)
The best way to implement this is using a background VI for DAQ+storage. Load this VI from your main VI with Open VI Reference and start the VI with the Invoke node Run VI. Use a named queue to send data from your UI VI to the background VI. Use a strict typedef for the data to transfer over the queue. This way the background VI will get the configuration information. Use another named queue or a named notifier to send the aquired data from the background VI to the UI VI. Notifiers have the advantage that more than one reader can receive the data but if he is to slow he will loose data. Queues don't loose data but you can have only one reader. If screen3 is a subVI of screen2 it can also create a named queue with the same name as in screen2 and read the dat
a. If screen3 is closed screen2 will read the data but the data read by screen3 will be missing. If you don't want this you have to load screen3 and run it with Run VI and screen2 has to forward the data to screen3 over another named queue.
Look for Bens example of who to run UI VIs independently. You only need to add the fourth VI for the DAQ+storage and the queue to communicate between the VIs and of course the code and controls to do the things you want.

Waldemar
Waldemar

Using 7.1.1, 8.5.1, 8.6.1, 2009 on XP and RT
Don't forget to give Kudos to good answers and/or questions
0 Kudos
Message 2 of 4
(2,746 Views)
Hi Waldemar,

I didnot follow the 'named queue/notifier' part of your explaination. Would you mind putting it in a simplest example? (frame1/frame2/frame3). That will be clearer.

thanks much.
Sandeep
0 Kudos
Message 3 of 4
(2,746 Views)
There are some examples how to use named queue.

LV 6.0.2: Search Examples >> Advanced Examples >> Execution control Examples >> Synchronisation examples >> Named Queue

LV 6.1 & LV 7.0: Find Examples >> Optimizing Applications >> Synchronizing Tasks >> Queue Message Loging.vi

In this example they use multpile sender and one receiver, but they show using a named queue to communicate between parallel running VIs.

In the same example categories are also examples for notifiers who demonstrate how to send data from one sender to multiple receivers.

I hope this will help you but feel free to ask again.

Waldemar
Waldemar

Using 7.1.1, 8.5.1, 8.6.1, 2009 on XP and RT
Don't forget to give Kudos to good answers and/or questions
0 Kudos
Message 4 of 4
(2,746 Views)