Passing data in case structures Labview 6.1

I have a simple case structure consisting of 4 frames inside a while loop. I want to pass data from the 3 cases thru the while loop and display on indicators.
After running the vi only data from the last case is displayed on the indicator.
How do I pass data from each case to the indicators?
Attache dis the simple vi to show the problem.

Using Local Variables is almost never the way to go. Sometimes they can't be avoided, but most of the time there's another way.
I've modified your example a bit. The new loop below your original one will do the same thing, but without using variables. The For loop automatically indexes through the array and will process each element. The Shift Registers pass data from iteration of the loop of the next, so the values from the first iterations will stay around so they can passed out of the loop.
Ed
Ed Dickens - Certified LabVIEW Architect - DISTek Integration, Inc. - NI Certified Alliance Partner
Using the Abort button to stop your VI is like using a tree to stop your car. It works, but there may be consequences.
Attachments:
LoopTest1_using_For_Loop.vi ‏58 KB

Similar Messages

  • How extract data from case structure

    Hi all, I would like to extract the data from case structure, it's circled in red in the attached file. How should I do it? Thanks for taking your time to look at my post. Your help is greatly appreciated.
    Attachments:
    bp.jpg ‏161 KB

    Thank you guys for your prompt reply.
    As u can see from the vi, there's an error, I need the values in the circled area to be passed on to the block ( Bundled by name)
    Thanks !
    Attachments:
    fyp_bp_only.vi ‏90 KB
    fyp_bp_only.vi ‏90 KB

  • How do you pass values between case structures?

    Hi,
    I have a simple vi where I am measuring voltage in a WHILE LOOP. The WHILE LOOP contains 2 case structures.  Under some measured voltages,  case 1 or case 2 will execute, and under some other voltages, neither case will execute, and the WHILE LOOP simply iterates again. 
    Case 1 and Case 2 both issue commands that are calculated using both the measured voltage and the PREVIOUS command value, using a very simple addition/subtraction sequence.  Case 1 and Case 2 are likely to execute many times before the voltage changes enough to pass into the "in between" range.  Each time either case executes, a new command is issued.  Each new command is a modification of the previous command by the addition/subtraction process.
    The two cases refer to an upper threshold and a lower threshold.voltage value.  There is also a voltage range in between the lower and upper threshold values where we do not issue any commands.  Commands are issued only when Case 1 (voltage<lower threshold) or Case 2 (voltage>upper threshold) is TRUE.
    In the case structures, the measured voltage is used to calculate a command value by adding or subtracting to the previously calculated command, where either Case 1 or Case 2 are TRUE.  The case structures do NOT use any of the voltage values measured in the "in between" range. 
    Suppose that Case 1 is executing and sending commands properly, and then, the voltage value changes to the in-between range and continues to the Case 2 range.  What I want is for the Case 2 to use the last command issued by Case 1 for the Addition/Subtraction.  Recall that many voltage values are likely to be measured in the "in between" range and none of these will result in issued commands.  How do I capture the last command from Case 1.  Of course, I want to go both directions.  A total of four differen sequences are possible:
    Case 1--> In between --> Case 2
    and
    Case 2 -->In between --> Case 1
    and
    Case 1 -->In between --> Case 1
    and
    Case 2 -->In between --> Case 2
    How do I capture that last command issued, and store it until either case becomes TRUE again, and then make the case use this command?  I don't think that a shift register will work because the "in between" range will change the value in the shift register, and I don't see how to implement a shift register with a Case structures.  Will the feedback function work for this?
    Thanks for your thoughts.
    Dave

    Action Engines probably are a good idea.
    I think the state machine in the attached vi should also be sufficient.
    Attachments:
    State Machine Example.vi ‏11 KB

  • Can I put a READ function in a TRUE/FALSE case structure?

    Hi,
    I have a vi that operates as controller for a mechanical system of motors.  There are several sensors of various types, that provide input to the vi, including encoders, whose period is being measured.  The attached vi is the encoder period measuring part. It measures 15 periods and tells me the average of the 15 with each loop iteration.
    In my application, the encoder period measurement is not needed unless the vi knows that ALL THE OTHER sensors in the hardware configuration are measuring values within the desired range.  For example, Sensors A, B and C should all measure between 5-10.  If they are all showing values between 5-10, then, we want the encoder value to read and display.  If only one of the sensors, say A, is measuring 12, then, we don't want the period value to READ or be subsequently processed.  So, it is easy to set up the sensors A, B, C, to give a TRUE or FALSE based on whether they are within range or not, and if all 3 are TRUE, then, that value can easily be passed to the case structure that holds my READ function for the period.  Is this a good way to do this?  The goal is to eliminate unnecessary execution time that the period READ function would consume, as well as all subsequent calculations that are performed on the period value collected.  The period data is of no use if any one of the other sensors is not in the correct range.
    If any one of the other sensors is out of range, we want to skip the encoder READ step altogether.  So, it is easy to structure a BOOLEAN in my vi as shown in the attachment.  If I do it this way, will it throw an error, or just skip the READ until the BOOLEAN is true again?  Is there a better way to prevent the READ from happening if one of my other sensor values is not within the correct range?
    Thanks,
    Dave
    Solved!
    Go to Solution.
    Attachments:
    forum JUly 18.vi ‏26 KB

    Sure, you can put a Read inside a case structure. For your application, just check that your sensors are all within range (Comparisons palette), then AND the T/F's and use the result of that for your case structure. (If you are already doing the in-range check, I can't see it here because you have 5 subVIs that I cannot open here.
    Cameron
    To err is human, but to really foul it up requires a computer.
    The optimist believes we are in the best of all possible worlds - the pessimist fears this is true.
    Profanity is the one language all programmers know best.
    An expert is someone who has made all the possible mistakes.
    To learn something about LabVIEW at no extra cost, work the online LabVIEW tutorial(s):
    LabVIEW Unit 1 - Getting Started
    Learn to Use LabVIEW with MyDAQ

  • Shortcuts for case structure manipulation?

    Hello all.  I'm curious if there are keyboard shortcuts for duplicating cases or deleting cases in a case structure.  I'm also interested if any of you have any tips or secrets to working with large case structures - LabVIEW mods that enable a storyboard-style case structure reorganizer, for example.
    Thanks!

    JLS wrote:
    Another useful feature of case structures is that if you use an enumerated type for the selector, you have the option to "Add Case for Every Value.
    Yes that is handy for enums with a handful of values.
    The other feature I like about enumerated cases is the ability to NOT have a default case.
    When this is the situation, LV will remind me that I have not coded up all of the cases in the event I missed one.
    This is very handy in applications where you have a bunch ( 100 or more) of enum values.
    If at a later date I decide that I need to add enum value #101 then I edit the typedef and then LV reminds of all the places I have to go and fix.
    Just a different approach for a different challenge.
    Ben
    That reminds of a related trick I have not heard anyone mention lately.
    Bonus Q:
    Given a list of all of the enum states (array of strings), what is the easiest way to create an enum with all of those values?
    Correct answers are worth 5-stars!
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • How to implement index array inside case structure for searching a 3D array?

    Well I have a 3D array and I want to index certain elements from that array. And I have thought of one way of doing this is to have multiple index array functions on the block diagram to search the array simultaneously, but that would be messy. Or I could setup some kind of case structure and place each index array function into individual cases. I've tried the latter, but when I connect the 3D array to the case structure at the"?" it doesn't give me permission because it says I'm hooking up two different types of data. Case Structure is for T or F and 3D array is not a boolean.
    So how can I setup the Case Structure to work for a 3D array?

    A case structure's selection tunnel cannot accept an array.  What exactly are your search criteria?  It sounds like a few FOR loops will be needed.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Case structure issue

    I can not get this case structure to run.
    the error is "no case for some selector values"
    Thanks in advance
    tomiee
    Attachments:
    switch.vi ‏19 KB

    You have stumped me on this one.
    The VI you posted runs fine for me.
    Generally speaking that message indicates that LV has not figured out what to do with all of the possible values that can be passed to a case structure. This is not the case in the VI you posted.
    Please recheck what you posted and reply with more info if you still need help.
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • How can I pass data generated in a SubVI inside a Case Structure out of the Case Structure?

    Hello,
    I am using a USB 2701 to control a heater.  I have three SubVIs that are all working properly on their own.  I'd like to use an Enum to select which of the SubVIs is running at a given time.  The problem is that no data is passing out of the case structure.  How can I pass the temperatures and heater outputs acquired by the SubVIs to the main VI?  I've attached my some of my code below.  I can't attach more than 3 files, but you can see how the main VI is configured.  Like I said, the SubVIs are working individually, so you shouldn't really need to look at them.
    Thank you,
    CJones581
    Attachments:
    RampHeater6-21-07.vi ‏305 KB
    69_Heater_Case.vi ‏23 KB
    HeaterTCD6-21-07.vi ‏210 KB

    CJones,
    You might check a couple of things.
    Your HeaterTCD... VI has a While loop with a stop button condition.  HeaterTCD pass out values only when it finishes running.  If it doesn't pop open the front panel (which usually doesn't happen when running a SubVI) you could run into a stuck loop because you don't have access to the Stop button.  This could appear in the form of no data being passed out (because the SubVI never stops running).  The primary VI opens the HeaterTCD VI, starts it, and waits for the VI to finish and pass final values .
    Secondary note: Unless you want your SubVI panel (which probably isn't open when running the main VI) to update continuously, consider moving your Temperature Graph and Temperature oC indicators outside the while loop.  Pass final values to them via a tunnel, since the main VI will only read their values after the loop finishes running, anyway.
    It might help to add error management to HeaterTCD like you have for RampHeater.  If you connect error lines with Error Outs to your main VI, that will help tell if there is an error somewhere that is preventing info output.
    RampHeater SubVI has the same issue with the stop button.  It is also probably getting stuck in the While loop waiting for a manual push of that SubVI's Stop button.
    An easy way to test this would be to set up a logic circuit so that when the While loop iteration counter reaches a certain number, it registers True and sends it to the conditional.  I know this isn't what you want to do long-term, but if that lets your SubVI return outputs it means that the SubVI was just never stopping.
    Hope that helps.
    David C, Applications Engineering
    David C
    Applications Engineering

  • How can I append some data to an array via a case structure?

    Basically i want to do the following thing:
    do
    if control=0
    else
    Data=Data append data1
    end if
    }while(run=1)
    We try to avoid local variable since the size of Data is pretty big. I am pretty sure i can add a shift register in a loop structure.But is it possible to add a shift register in a case structure?
    Thank you!

    The best you will be able to do is going to be a variation on what CC suggested regarding replacing array sub-sets.
    If you do not know how big it will end up then over-allocate but still use the replace array subset.
    The delays you are seeing are due to the memory buffers groing and additional memory need allocated as the array grows. The Replace array subset function operates inplace and re-uses the buffer it is passed. There is no clear KB regarding which array operations operate inplace and which do not.
    http://forums.ni.com/ni/board/message?board.id=170&message.id=74847&requireLogin=False
    Under Tools >>> Advanced >>> Show buffer allocations will show you where buffers are being allocated (LV 7.1).
    If you post a zip or llb of you code I am sure someone will have more to add.
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • How to pass data from a Delphi pascal DLL class to a LabView data cluster?

    Hi all,
    I have the following problem:
    I'm using a dll written in Delphi Pascal to transfer data to LabView using the "Call Library Function Node".
    My Delphi dll contains this class:
      TFlash=class
        Fi:TFileInfo;
        constructor Create;
        procedure LoadFi(Filedir_and_nametring);
      end;
     TFileInfo=record
        Idx:smallint; 
        IdxLstSpl:array[0..4] of longint;
        Ms:word;
        Sp:array[0..4]of word;
      end;
    I've created the TFileInfo record datastructure into a LabView cluster to have the "same" variable.
    My plan was to call a Deplhi DLL function with the "Call Library Function Node" and to pass the address of the TFileInfo record, so the data would be passed to the LabView Cluster.
    When I make a simple delphi dll function like this, it works because I only pass an small integer to Labview (without reference to the data structure):
    var  Data:TFlash; 
    function GetNrOfRows(FilePath: string):integer;stdcall; 
    begin
      Data:=TFlash.Create;
      Data.LoadFi(FilePath); //this function gets the number of rows out of the selected file.
      Result := Data.Fi.Idx;
    end;
    When I try to use this procedure instead of the function above, to pass the address of the whole complex data structure of "Data" (TFileInfo), I'm unable to get the information of "Data" into my Labview cluster:
    procedure LoadFileInfo(FilePath: string; DataPointer: Pointer);stdcall; 
    begin
      Data:=TFlash.Create;
      Data.LoadFi(FilePath);
      DataPointer:=@Data;
    end;
    Call Library Function Node settings:
    - stdcall (WINAPI)
    - Run in UI Thread
    - Function prototype: void LoadFileInfo(PStr FilePath, void *DataPointer);
          * DataPointer --> Type: 'Adapt to Type' and Data format: 'Pointers to Handles'.
          * FilePath --> Type: 'string', string format: 'pascal string pointer'
    I'm struggeling with this problem for almost a week now and I can't really find a solution on the forum or google.
    I've also read the following posts:
    http://forums.ni.com/ni/board/message?board.id=170&message.id=229930&requireLogin=False
    http://forums.ni.com/ni/board/message?board.id=170&message.id=77947&requireLogin=False
    http://forums.ni.com/ni/board/message?board.id=170&message.id=51245&requireLogin=False
    (or did I miss something in these posts?)
    Hope my explanation is clear.
    Thx
    Solved!
    Go to Solution.

    Ok, I'm one step further:
    Because it works when passing an integer from the dll to Labview,
    I tried a simple vi containing a cluster with an small integer (16 bit signed Integer) in it and passing the pointer to that cluster:
    same settings:
    Call Library Function Node settings:
    - stdcall (WINAPI)
    - Run in UI Thread
    - Function prototype: void LoadFileInfo(PStr FilePath, void *DataPointer);
          * DataPointer --> Type: 'Adapt to Type' and Data format: 'Pointers to Handles'. (and the cluster wired to the output of the Call Library Function Node)
          * FilePath --> Type: 'string', string format: 'pascal string pointer'
    Changed the Delphi function to:
    procedure LoadFileInfo(FilePath: string; DataPointer: Pinteger);stdcall; 
    begin
      Data:=TFlash.Create;
      Data.LoadFi(FilePath);  --> this function fills in the data in Data.Fi
      DataPointer^:=Data.Fi.Idx; --> write the smallint on the address given by Labview
    end;
    When I call my DLL this way, the expected value appears in smallint indicator in de cluster on the front panel.
    When I'm passing a pointer from the TFileInfo Type:
    Delphi:
    var  Data:TFlash;
    type  PtrTFileInfo = ^TFileinfo;
    procedure LoadFileInfo(FilePath: string; DataPointer: PtrTFileInfo);stdcall; 
    begin
      Data:=TFlash.Create;
      Data.LoadFi(Copy(FilePath,2,length(FilePath)-1));
      DataPointer^:=Data.Fi;
    end;
    During debugging in my Delphi environment: when I get out of this function and pass this to Labview, an error occurs: access violation at 0x004E7125: read of address failed 0x00002A24. Process stopped.
    Is it actually possible to access data with 2 applications? Delphi--> common stack <--Labview

  • In the attached VI I dont understand why data from the inner case structures are not being transmitted to the array.

    In the attached VI I don't understand why data from the inner case structures are not being transmitted to the array.
    Thank you.
    Solved!
    Go to Solution.
    Attachments:
    TEMP.vi ‏25 KB

    It took me some time to figure what you are trying to do but I think I have it now.
    The SR is still required.
    What is happening is your "Bundle By Name" is replacing all of the fields of the cluster, not just the value coming out of the case structure. So to maintain the cluster stuff you do in earlier iterations you can either...
    1) Put the "Index array, Bundle by name, and Replace array" inside the case structure and ONLY bundle the value you are setting in that iteration. (as you will see Tim post shortly)
    OR
    2) Move the Index array before the Case, unbundle all of the fields and feed teh case structure and run them across the case so that ALL of your output tunnels come from the coresponding input tunnel EXCEPT for the filed you are trying to set.
    Ben
    Message Edited by Ben on 05-05-2010 01:31 PM
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Case Structure timing/ writing data to a excel

    Hi all,
    I have written a program that has the main functions of allowing the user to generate a random number between either 0-10 or 5-15 by using the labelled switch. I also have a control which can switch this function on or off. When this switch is true it will display the random number and also write this number to an excel spreadsheet every 1 second (I hope). When false this will stop displaying the number and hence not write the number to a file.
    However, I am having the following issues:
    1. Excel file is corrupt once I begin to write the generated numbers to the spreadsheet. (I am trying to write to a .xlsx file)
    2. Once I begin to try write the numbers to file, the elapsed timer only displays the time is 1second intervals rather than the full time.
    I changed the .xlsx file to a .csv file and this solved issue 1. but it only recorded one random number rather than the numbers that were generated in that time since switched on/off.
    Should I have the write to spreadsheet function in the timed case structure?
    Should the file path control be outside this case structure?
    Have I set up the write to spreadsheet VI correctly?
    If anyone could help with these issues that would be a big help.
    Thanks!
    Attachments:
    Random Number tester.vi ‏30 KB

    lneill65 wrote:
    There is still an issue with the elapsed time. Once I begin I turn the top boolean control to true, the elapsed time begins changing at the set time increment inside the case structure. Is there anyway to stop this from happening?
    Your elapsed time display is independent of the boolean switches because it is on the toplevel loop diagram. I am not sure why you place a five second wait inside the case structure if you want to write once per second.
    I am not sure why you have two sequential case structures since the calculations of the first structure is not needed unless the other case is also true. Why not place it inside the true case?
    You should also adhere to some basic coding styles. Avoid overlapping and floating objects, hidden wires, right-to-left wiring.
    If it is sufficient if the code reacts once per second, just run the loop with a 1 second wait. If you don't want to display a stale random number if the switch is off, place the indicator after the case structure.
    Here's a quick draft. Modify as needed. I probably would use an event structure, but let's keep it simple at this stage. You should also modify it so it does not try to write with an illegal path and also retain the selected path once selected. I propably would use a file dialog instead of a FP Path control.
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    Random Number testerMOD.vi ‏9 KB

  • Case structure and dynamic data, maybe once again

    Hi there,
    I`m a beginner in Labview. I´d like to know, how to handle the attached case-structure so that the structure works with each point of the signal.
    Right know the signal is only analyzed one time.
    Thanks for your help
    Michael
    Attachments:
    prob.jpg ‏26 KB

    Thank you Lars!!
    Now it works
    Solution is given as attachment
    Attachments:
    lsg.jpg ‏46 KB

  • Disable labview changing a constant that was wired to a Case structure

    Hi,
    When upgrading from Labview 7.1 to 8.2 I get the following warning:
        - LabVIEW 8.2 changed a constant that was wired to a Case structure to a hidden control to maintain compatibility with LabVIEW 7.1 and earlier.
    I have read the post describing why this happens:
    http://forums.ni.com/ni/board/message?board.id=170&message.id=258528&query.id=18820
    Typically I have used a constant wired to case structures to comment out code, and therefore don't really care if the compiler doesn't load into memory.
    Is there anyway to stop Labview 8.2 converting constants wired to case structures into hidden controls?  E.g. As an import option?
    Thanks in advance

    I don't think there is a way to disable that upgrade feature, but it does not really matter, because the function remains the same. Just ignore the upgrade note.
    To disable code, you should now use the "diagram disable structure". It has the big advantage over your solution that the disabled code can be broken and the VI is still runnable. 
    LabVIEW Champion . Do more with less code and in less time .

  • Why does Labview insert quotations in the case structure selector box?

    I was building a case structure with an array of strings.  So, I copied the strings from the array on the FRONT PANEL directly into the SELECTOR LABEL.  My 3 strings have the form; to me, these are 5- character strings with spaces, or 7 characters if you count the spaces as string characters 
    A, B, C   
    A, B, D
    A, B, E
    So, when I copied and pasted them directly into the selector box A, B, C appeared as "A", "B", "C" and A, B, D appeared as "A", "B", "C" and then I got an error for selector values not unique.  Why didn't it appear as "A, B, C"?
    Why did it transform the string I pasted and insert the quotation marks?  I used no quotation marks in my array.  Does the selector label interpret commas as functional characters that require quotation marks??
    Thanks,
    Dave 

    dav2010 wrote:
    I was building a case structure with an array of strings.  So, I copied the strings from the array on the FRONT PANEL directly into the SELECTOR LABEL.  My 3 strings have the form; to me, these are 5- character strings with spaces, or 7 characters if you count the spaces as string characters 
    A, B, C   
    A, B, D
    A, B, E
    So, when I copied and pasted them directly into the selector box A, B, C appeared as "A", "B", "C" and A, B, D appeared as "A", "B", "C" and then I got an error for selector values not unique.  Why didn't it appear as "A, B, C"?
    Why did it transform the string I pasted and insert the quotation marks?  I used no quotation marks in my array.  Does the selector label interpret commas as functional characters that require quotation marks??
    Thanks,
    Dave 
    Actually in CASE STRUCTURE, any frame can have multiple values as 'Case Selector value' and these are separated by a comma. Also if you choose to operate a CASE STRUCTURE using string, it will automatically prefixs & suffixs quotes (") to that string.
    But you can enter  "A, B, C" manually and it will remain as it is. But if you copy and paste A, B, C, the CASE STRUCTURE will automatically change it to "A", "B", "C".
    I am not allergic to Kudos, in fact I love Kudos.
     Make your LabVIEW experience more CONVENIENT.

Maybe you are looking for

  • Airport Extreme Disk works great on OSX and Windows XP but no go on Vista

    Just bought the Airport Extreme and attached a Seagate 320GB HDD to the USB port (formatted MAC journaled). Using the Airport Disk Ultility, I can access the NAS drive and read/write files from a 24" iMac and Windows XP PC. But on the Vista PC, Airpo

  • Embedded PDF won't open in IOS 7

    For months i create EPUB books with embedded PDF files. This way i created product documentation with a french and Dutch extended information file. So when a customer calls i could easily give advise for my products. This worked with a charm till IOS

  • Socket timeouts while downloading huge amount of mails..................

    Problem Statement: I have created a utility(using JavaMail API) which downloads mails from the Exchange Server 2003(MS Windows server 2003) using IMAP service. The utility uses 5 different threads(each creating it's own separate IMAP session) to down

  • Cannot cancel release stratigy after output is printed

    Dear Expert, I has been configuration output for PO ( print auto after release stratigy) After I release stratigy there is a scenario that user need to cancel release stratigy But the system is error not allow to cancel release stratigy after output

  • Installation of Updates for iPhone

    Update for iTunes ist ok and buying apps runns also. But if I try to install an update for the iPhone: "No connection with the internet". The firewall works "automatically" with interactive programs and there are no problems with updates for other pr