Can we run two while loops independently in one application?

I am acquiring two channels using PCI-6052.both channels to be read at 2ks/s,but I want to scans read at a time different for each channel,So I put two AI-read vi's in two different while loops.but the second while loop waits until the first is completed.Can we run independently both while loops?

Dear Haider Abbas,
you can scan two different channels at the same time with the same AI Read if your hardware device is cabable of it, e.g. you must have one A/D converter for each channel. If you have one A/D converter only and your channels are multiplexed then it won't work.
You can try running both loops indepentendly by using delays but in this case the data acquisition will not be at the same time. You have also to consider that every time you call for AI Read the DAQ card will be initialised with takes some time
Hope this will help you.
Stephan

Similar Messages

  • How do I run two while loops independent of each other?

    I have a simple VI. I have loop 1 with and LED and a stop button and I have loop 2 with an LED and stop button.  They are both in while loops.  When I run the VI,if I stop loop 1, I can not turn it back on.  If I stop loop 2, it will not stop.  I've attached a file with my VI.  
    Attachments:
    2 Loops.vi ‏9 KB

    bebesbabe,
    This looks like a learning exercise, so I will not present a complete solution.
    1. It is not polite to post to the Forum a VI which will not stop except by pressing the Abort button.  The Abort button should only be used to stop a VI if something is wrong with the program during development. Add a stop button to the outer loop.
    2. A loop with no delay will try to run as fast as possible, consuming all the CPU resources it can get. Since these loops are for user interfaces, delays of 100 to 200 ms are appropriate. Use the Wait (ms) function.
    3. Your main problem is understanding dataflow. In LabVIEW any node may execute only when all of its inputs have been given data and it will not complete its execution until all nodes inside it have completed.  Your VI does not have external inputs so waiting for data is not a factor. Each loop is considered a node. So the outer loop will iterate only after BOTH of the inner loops have stopped.  On the next iteration both inner loops will be started again.  Of course if the stop buttons are still pressed, the will stop after one iteration, which will seem almost instantaneous. But because of dataflow as I have described, your program cannot really work the way you want. You cannot restart one loop until both have stopped. Put an indicator on the "i" terminal of the outer loop.
    4. You may wish to consider changing the mechanical action on your stop buttons to Latch when Released.  Read the help to learn about mechanical actions.
    The way the instructions on the front panel read, it is not clear what the intended solution is. What control or user action or program action is required to turn the loops back on? Changing the stop button?  Automatically after a delay? A separate On switch?  How is the entire program supposed to stop?
    Lynn

  • Can I run two seperate PID functions in one VI

    I need to controll two different valves. THey must be run by a PID function. Can I run two seperate PID modules? If so do they need to be in the same while loop?
    Solved!
    Go to Solution.

    Hi,
    yes, you can run 2 PID functions in one VI.
    No, they don't need to be in the same loop.
    Best regards,
    GerdW
    CLAD, using 2009SP1 + LV2011SP1 + LV2014SP1 on WinXP+Win7+cRIO
    Kudos are welcome

  • Can you run two songs at once? One to write and one to record?

    I have dozens of midi objects, cable routings for writing and now have added dozens of audio tracks and inputs for recording my external and internal synths. (24 tracks in realtime one pass. Not bouncing but tracking. Its so cool.)
    PROBLEM: As I improve the audio workflow in a song, importing that layer into older songs creates D.I.S.CO.R.D. (Digital Input Sequencer Copy Object Reassignment Disaster!)
    QUERY: Can I just use one song for writing and playing and then run another "audio input based" song in the background locked via internal time code so it can RECORD or CAPTURE what this song plays?
    Or is there finally a way to import audio layers without "rebuilding the whole house"?

    Maybe I'm not understanding your difficulty, but I
    don't see why you have to have multiple setups, or
    copy/paste/import/whatever from one song to another.
    ..........Been tracking and mixing in the same sequence for
    years.
    Why? Well......
    1) there's dozens of midi modules, virtual modules and custom transformer splitter objects at the writing stage,
    2) dozens of tracks, input objects and reverb busses at the "tracking stage"
    3) and multiple master inserts at the mixing and output stage that output anywhere from 2 to 24 stems with their own reverbs.
    When the room works it works beautifully but there are different configurations of the above for a tv series gig, movie gig, album gig etc and I'd love to be able to change config 2 or 3 without having objects jumble all over config 1.
    I write and work in combinations of old and new gear from Spectrasonics and NI softsynth engines to an Oberheim Expander Roland JX10 and and Yamaha TX 816s. They all have different personalities and all work reliably and have far outlived their sys ex storage software (remember Galaxy/Sounddiver? Bye Bye since System 10)
    Last year I expelled my dig gear (after too many DAE errors for all that money) and I went MOTU native and love it. But I started one interface at a time and built up my new tricks and routings gradually. As a result everytime I add another MOTU interface and change some routings around all my songs have to be retaught new routings even when its just callin up a midi writing template. Hence the need for better importing of environents or a way to reliably alter one area of the above without having to recheck all the others. And it may mean a 2 computer rig. The second computer becomes the "multitrack/master recorder", and only changes during a major upgrade while midi modules and virtual synths can come and go on computer 1.
    In a few weeks my studio setup tech will come in and we'll redo all our flow charts which I'll send to you if interested. Then you'll either empathize with my problem or think I'm nuts.
    Thanks for your continued interest. Its nice to lament to someone who at least knows the vocabulary.
    Amin
    G5 dual 2.5   Mac OS X (10.3.9)   Stylus AND my original Minimoog. Lots of MOTU. No more Digi.

  • Can I run two different iPod minis from one computer??

    We bought a second iPod mini and now our computer will not recognize that either one is plugged in. Suggestions?

    Molly,
    Check this out.
    Natalie Beresford, "Multiple iPods/iTunes Installations", 04:04am Nov 26, 2004 CDT

  • Open two GUI( JFrame) simultaneously for one application

    Can we open two GUI( JFrame) simultaneously for one application at tha same time.if yes why ?and if no why?

    OK, its really simple, basically, you need a desktop frame to stor all the other frames and then you just pop them in, from a new class each time.
    Here's the code from the demo I learnt it from:
    (The demo itself)
    import javax.swing.JInternalFrame;
    import javax.swing.JDesktopPane;
    import javax.swing.JMenu;
    import javax.swing.JMenuItem;
    import javax.swing.JMenuBar;
    import javax.swing.JFrame;
    import javax.swing.KeyStroke;
    import java.awt.event.*;
    import java.awt.*;
    * InternalFrameDemo.java requires:
    * MyInternalFrame.java
    public class InternalFrameDemo extends JFrame
    implements ActionListener {
    JDesktopPane desktop;
    public InternalFrameDemo() {
    super("InternalFrameDemo");
    //Make the big window be indented 50 pixels from each edge
    //of the screen.
    int inset = 50;
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    setBounds(inset, inset,
    screenSize.width - inset*2,
    screenSize.height - inset*2);
    //Set up the GUI.
    desktop = new JDesktopPane(); //a specialized layered pane
    createFrame(); //create first "window"
    setContentPane(desktop);
    setJMenuBar(createMenuBar());
    //Make dragging a little faster but perhaps uglier.
    desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
    protected JMenuBar createMenuBar() {
    JMenuBar menuBar = new JMenuBar();
    //Set up the lone menu.
    JMenu menu = new JMenu("File");
    menu.setMnemonic(KeyEvent.VK_D);
    menuBar.add(menu);
    //Set up the first menu item.
    JMenuItem menuItem = new JMenuItem("New");
    menuItem.setMnemonic(KeyEvent.VK_N);
    menuItem.setAccelerator(KeyStroke.getKeyStroke(
    KeyEvent.VK_N, ActionEvent.ALT_MASK));
    menuItem.setActionCommand("New");
    menuItem.addActionListener(this);
    menu.add(menuItem);
    //Set up the second menu item.
    menuItem = new JMenuItem("Quit");
    menuItem.setMnemonic(KeyEvent.VK_Q);
    menuItem.setAccelerator(KeyStroke.getKeyStroke(
    KeyEvent.VK_Q, ActionEvent.ALT_MASK));
    menuItem.setActionCommand("Quit");
    menuItem.addActionListener(this);
    menu.add(menuItem);
    return menuBar;
    //React to menu selections.
    public void actionPerformed(ActionEvent e) {
    if ("New".equals(e.getActionCommand())) { //new
    createFrame();
    } else { //quit
    quit();
    //Create a new internal frame.
    protected void createFrame() {
    MyInternalFrame frame = new MyInternalFrame();
    frame.setVisible(true); //necessary as of 1.3
    desktop.add(frame);
    try {
    frame.setSelected(true);
    } catch (java.beans.PropertyVetoException e) {}
    //Quit the application.
    protected void quit() {
    System.exit(0);
    * Create the GUI and show it. For thread safety,
    * this method should be invoked from the
    * event-dispatching thread.
    private static void createAndShowGUI() {
    //Make sure we have nice window decorations.
    JFrame.setDefaultLookAndFeelDecorated(true);
    //Create and set up the window.
    InternalFrameDemo frame = new InternalFrameDemo();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //Display the window.
    frame.setVisible(true);
    public static void main(String[] args) {
    //Schedule a job for the event-dispatching thread:
    //creating and showing this application's GUI.
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    createAndShowGUI();
    Myinternalframe.java:
    import javax.swing.JInternalFrame;
    import java.awt.event.*;
    import java.awt.*;
    public class MyInternalFrame extends JInternalFrame {
    static int openFrameCount = 0;
    static final int xOffset = 30, yOffset = 30;
    public MyInternalFrame() {
    super("Document #" + (++openFrameCount),
    true, //resizable
    true, //closable
    true, //maximizable
    true);//iconifiable
    //...Create the GUI and put it in the window...
    //...Then set the window size or call pack...
    setSize(300,300);
    //Set the window's location.
    setLocation(xOffset*openFrameCount, yOffset*openFrameCount);
    You should be able to tell from that

  • I currently have one input but need to run two loops. I cannot get the two while loops to run so that they both pick up the same data, they are both picking up alternate samples. How can I get them to both pick up all of the values?

    The system I am trying to create calculates a number of values based on an input. I need to make the calculations and display the values for an entire production run and for each hour. The only way I know to do this is to create two while loops, one looking at all the values that are received and one looking only at the values for hour long periods.
    Any help would be great.
    Thanks
    RossH

    Why do you think that you have to have two loops to accomplish this task? Why not use one loop and accumulate the same data into two data sets based on the two sets of criteria?

  • How can I transfer data between two while loops in parallel

    Hello,
    I have two while loops in parallel and I want to transfer data from the first to the second loop. The problem isthat data are transfered only when the first loop ends. I tried with queue but it doesn't work. How can I do, preferentially without global variable ?
    Thanks.

    I join a very simplified VI's because the real works with PXI, RT, ...
    When you run the "secondVI.vi", no data comes in array from the "firstVI.vi".
    As I said in my first message, I tried with queue too but it doesn't work, because when the terminal go out from the while loop, while loop have to be ended to send data.
    Attachments:
    transfer_data.zip ‏20 KB

  • How can I run two DML in one FORALL statement?

    How can I run 1) select 2) update in one FORALL for each item as below?
    OPEN FXCUR;
      LOOP
            FETCH FXCUR BULK COLLECT INTO v_ims_trde_oids LIMIT 1000;
            EXIT  WHEN v_ims_trde_oids.COUNT() = 0;
         FORALL i IN v_ims_trde_oids.FIRST .. v_ims_trde_oids.LAST     
              SELECT EXTRACTVALUE(XMLTYPE(CNTNT),'/InboundGTMXML/ProcessingIndicators/ClientCLSEligibleIndicator')        INTO v_cls_ind
              FROM IMS_TOMS_MSGE  WHERE ims_trde_oid = v_ims_trde_oids(i);
             IF v_cls_ind      IS NOT NULL THEN
                      v_cls_ind       := '~2136|S|'||v_cls_ind||'|';
             UPDATE ims_alctn_hstry  SET CHNGE_DATA_1   =concat(CHNGE_DATA_1,v_cls_ind)
             WHERE ims_trde_hstry_id = (select max(ims_trde_hstry_id) from ims_alctn_hstry where ims_trde_oid=v_ims_trde_oids(i));
             DBMS_OUTPUT.PUT_LINE('Trade oid: '||v_ims_trde_oids(i)||'   CLS Eligible Indicator: '||v_cls_ind);
          END IF;
      END LOOP;
      CLOSE FXCUR;Your help will be appreciated.
    Thanks
    Edited by: PhoenixBai on Aug 6, 2010 6:05 PM

    I came through this forum while googling on the issue of 'using two DML's in one FORALL statement.
    Thanks for all the useful information guys.
    I need to extend this functionality a bit.
    My present scenario is as follows:
    FOR I in 1..collection1.count Loop
         BEGIN
              insert into tab1(col1)
              values collection1(I) ;
         EXCEPTION
              WHEN OTHERS THEN
              RAISE_APPLICATION_ERROR('ERROR AT'||collection1(I));
         END;
         BEGIN
              UPDATE tab2
              SET col1 = collection1(I);
         EXCEPTION
              WHEN OTHERS THEN
              RAISE_APPLICATION_ERROR('ERROR AT'||collection1(I));
         END;
    commit;
    END LOOP;
    I need to use the FORALL functionality in this scenario, but without using the SAVE EXCEPTIONS clause keeping in mind that I also need to get value in the
    collection that led to the error.Also, the each INSERT statement has to be followed by an UPDATE and then the cycle goes on(Hence I cannot use 2 FORALL statements for INSERT and UPDATE coz then all the INSERT will be performed at once and similarly the UPDATEs). So I created something like this:
    DECLARE
    l_stmt varchar2(1000);
    BEGIN
    l_stmt := 'BEGIN '||
              'insert into tab1(col1) '||
              'values collection1(I) ; '||
         'EXCEPTION '||
              'WHEN OTHERS THEN '||
              'RAISE_APPLICATION_ERROR(''ERROR AT''|| :1); '||
         'END; '||
         'BEGIN '||
              'UPDATE tab2 '||
              'SET col1 = :1; '||
         'EXCEPTION '||
              'WHEN OTHERS THEN '||
              'RAISE_APPLICATION_ERROR(''ERROR AT''|| :1); '||
         'END;'
    FORALL I in 1..collection1.count
    EXECUTE IMMEDIATE l_stmt USING Collection1(SQL%BULK_EXCEPTIONS(1).ERROR_INDEX);
    END;
    Will this approach work? Or is there any better aproach to this? I am trying to avoid the traditional FOR ..LOOP to achieve better performance of query

  • How to make a button to stop and run a while loop?

    Hi all,
    I am a beginner in the Labview. I did a program that contains a while loop, its stop condition is connected to button. I selected “switch when pressed” to be the operation of this button. Our teacher asked us to make this button stops the loop if it is pressed and its name is converted to run instead of stop. And if it is pressed then again it starts the loop from the point it stopped in.
    Can anybody help me, please?

    First, please use a smaller font when composing your messages.
    You will need two while loops.  An inner loop which has its stop terminal attached to the stop button.  Put that in the False case of a case structure.  Wire a local variable of that stop button to the case selector of the case structure.  Put the case selector inside another while loop which is the one that keeps the program running no matter what the state of the original Stop button.  You will need a master stop button to stop the outer loop when you are ready to end the whole program.  Don't forget to put small millisecond waits in each of the loops so that the loops don't eat up all the CPU resources.
    For that stop button, you could rename the True title to Run, so that when it is pressed to stop the inner loop, the button will show the word Run.  Pressing it again pops it back out, allows the false case to execute and the innermost while loop to run.
    You could also change the words on the buttons by using property nodes.

  • Code golf: stop two while loops with guaranteed iteration ratio

    Proposal
    In the vein of the Perl tradition, I'd like to see if there's any interest in solving short programming puzzles in LabVIEW. Anyone can post a problem and define the rules for solving it.
    Here's a beginning/intermediate question to whet your "palette".
    Description
    With one user-action, how would you stop two while loops such that the ratio of their iterations is the always the same? One concrete way to visualize this situation is in taking measurements: two instruments use the same timing source to take measurements, but second divides the clock down so that it is an integer factor slower than the first. For example, if the slower instrument is four times slower, then at the end of the VI, if the slower instrument takes 100 measurements, the faster instrument has taken 400.
    Rules
    You may only use vi.lib
    You cannot include any other subVIs
    Your solution must pass for loop1 interval as low as 25 ms
    Template (attached in LabVIEW 2009)
    If folks are interested in this, then let's figure out how to make future problems better. Please post your suggestions and critiques, but only if you also post a submission ;-)
    Solved!
    Go to Solution.
    Attachments:
    Multirate Loop Code Golf.vi ‏11 KB

    Norbert_B wrote:
    a) You work with an integer factor of speed. While this matches many application areas, there are still cases where the factor has to be floating point (e.g. 2.5). Additionally, the factor might "invert", so the master loop runs slower than the slave (factor 0.5 for instance).
    It sounds like you're about to post another code golf question. If you think the problem scope is too small, you're welcome to fashion one to your taste. Thanks for volunteering :-D
    Norbert_B wrote:
    b) This example does not take into account that the hardware has to be synchronized with more accuracy than the software supplies (PXI?). If hardware synchronization is required, there are two possible ways:
    - The factor can be included in the synchronization (using PLL for instance)
    - The factor has to be software implemented by data reduction for the task running at the lower pace.
    Hrm, maybe puzzles aren't really your thing after all. You are correct: I did not define every constraint that can lead to a provable best closed-form solution, but that does not prevent people from stating their assumptions and forming creative, well-reasoned, and still correct designs. I overlooked this reading of the description and neglected to add a statement that said solvers were free to add their own conditions. I will do so in the fugure :-)
    If we choose the first of your suggestions, the VI must still retrieve the data at different rates. You can dedicate a loop for each instrument to decouple any jitter and latency introduced by their connectivity or internal operation; this adds some margin of safety when there is thread and driver contention. You can also implement a single counting loop like altenbach and forego the multiloop complexity.
    Norbert_B wrote:
    c) You don't state anything about "what happens with the data". Is this time consuming? Does it introduce additional delay in loop iterations? Is it OK to have data loss?
    I don't know -- you decide, you disclose, and you solve :-)
    In my specific situation, the measurements are time consuming and do add delay (each data "sample" is 5-20 megabytes), none can be lost, and the data must be available for others to analyze later. In addition, the amount of data is saturating the hard disk throughput. If a particular write takes too long, the instrument driver may overwrite a yet unfetched sample, which is unacceptable. I did not add these details to the problem discripton becuase they don't impact the puzzle.
    I don't want to burden people with my situation and ask them to solve my problem: I want to encourage them to bring their intuition and experience to a discussion. This is the design process at its heart: understanding why and how constraints affect your decisions. If a person states the additional conditions they've assumed, readers can learn why, and more importantly, when a Notifier might be more desirable than an Occurance or a Queue more robust than a Data Value Reference.
    The best NI-published advice for stopping multiple while loops (https://www.google.com/search?q=labview+stop+multiple+while+loops) is laughable (and is the "solution" in my template).
    Would you care to re-approach and contribute to this puzzle? I suspect you have a lot to offer :-)

  • Can you run two separate vi's in parallel

    Can you run two seperate Vi's in parallel? Will this make response considerably slower? 
    Solved!
    Go to Solution.

    eugeniap wrote:
    Hi, what more detail is needed? They are two entirely seperate independent vi's with no shared sub vis.
    I just wanted to know if you can run two independent vi's at the same time, as in just have two seperate programs and run them.
    Separate isn't the same as independent.  That's why they wanted more information. 
    Your second question asked about slowed response.  That's another place you didn't offer anywhere near enough information for a true answer.  How many loops are you running in each of these independent VIs?  How many cores does your processor have?  Are you including a 0ms wait in your loops to avoid railing your processor?
    It's possible you'll see such a negligible change in processing that you won't notice.  It's also possible you'll feel like you're draining your system.  It's generally best to err on the side of too many details rather than too few when you're asking questions.  If you don't know the answer, you likely don't know how each piece plays a part in the answer.  More information allows others to pick out the relevant pieces and give you a better answer.

  • Two while loops working in parallel at the same time

    Hello, how can I run a .vi with two while loops working in parallel at the same time? . I want that when I run a vi both can be activated o desactivate, but I can't get it. What can I do?
    Thanks a lot.
    Luz

    Here are some links for state machines.
    http://zone.ni.com/devzone/conceptd.nsf/webmain/c7​4cec177a289dbd86256c4e00600196
    http://zone.ni.com/devzone/conceptd.nsf/webmain/8C​4EECACF084F8E986256802007B9186
    http://sine.ni.com/nips/cds/view/p/lang/en/nid/137​47
    http://sine.ni.com/apps/utf8/niepd_web_display.dis​play_epd4?p_guid=B45EACE3DE6756A4E034080020E74861
    http://sine.ni.com/apps/utf8/niepd_web_display.dis​play_epd4?p_guid=B45EACE3E1E956A4E034080020E74861

  • How to calculate the ratio between the maximum and minimum peaks of the two waves using two while loops?

    hello everyone,
    i'm rai from indonesia
    I have a final project about pulse oximetriy, I have some problems,
    how to calculate the ratio between the maximum and minimum peaks of the two waves using two while loops to calculate SpO2 ?
    My program image can be seen below predicament ?
    Attachments:
    spo2 akusisi data with filter lpf hpf smoot nilai max min ir merah.vi ‏249 KB

    Hi Rai,
    You should post this into the LabVIEW forum rather than Real-Time since this isn't a Real-Time application. Your post will see more replies in the LabVIEW forum. 
    As far as your question is concerned, you can write the max and min from the respective loops to a local variable to send the data out of the loops to a third loop or just do the calculation in one of the loops. This would be ideal if you're trying to do this while the loop is running. 
    -Jayk
    Applications Engineering
    National Instruments

  • Can I run two DSL lines into my airport network?

    I have a 1.5M line from Qwest and can not get faster speed from anyoe else in my semi-rural community. Can I run two 1.5 DSL lines into one or two airport extremes and get the equivalent of a 3.0 line?

    If I have two DSL lines each connected to its own Actiontec modem with each modem connected via ethernet to its own airport extreme then it sounds like I need to have two wireless networks to take advantage of the second DSL connection. Correct? We have a lot of computers being used in the household so could put the kids on their own network.
    Apparently the airport extreme can not manage a network with two internet connections even if they are connected via separate airport extremes? I have worked at companies that have done this for internet connection redundancy purposes so there must be devices that can handle this.
    Message was edited by: David in Colorado
    Message was edited by: David in Colorado

Maybe you are looking for

  • How to Edit information of existing vendors

    Hi All, How to edit the information of existing suppliers using Supplier Open Interface Import Program. This information is exists in PO_VENDORS table. I have successfully imported new Supplier with Status = NEW and now I want to edit it. Can anyone

  • Switch off the automatic update of profit centers on the Balance Sheet acco

    Dear all, In CO I am using only CCA and PCA. But I don't want to have the profit center updated on the balance sheet items. For example I have it activated for all the automatical BS postings from MM I need it only for the PL accounts. How can I swit

  • PSE 5.02: Catalog cannot be opened (hour glass)

    Please help me: I have a big problem: A rather new Vista PC, PSE 5.02, rather big catalog (18MB). PSE has frozen (no reaction, only hour glass). After I killed PSE I restarted it. The PSE Windows shows up (without any pictures) and again immediatly P

  • Captivate 5 :: Bilingual Toggling Courses

    Hello, With Captivate 5 is it now possible somehow create an online course in two languages so that at any time (whether in the course content or quizes) the language can be toggled with a button (that will always be present in the navigation menu) f

  • JSP Tag Library not being parsed

    I have a tag library that has its tld, the corresponding class file, but           if I put it in defaultWebApp (under Portal 7) it doesn't parse. If I put           it under a sampleportal it can't parse the deployment descriptor. Is this