Case Structure to Obtain 1 Single Measurement

Hi All -
I'm using for DAQ Assistants to measure 4 different voltage signals.  I want to zero them with the click of a button so I am using a case structure and when I click an "OK" button it takes 1 single measurement from each of the 4 signals.  I then want to keep this value and use it in calculations elsewhere in my code.  Do you know how to store that one value and obtain it for use elsewhere?
Thanks!

You can store them in a feedback node or shift register.
(Please show us your code so we can give more detailed advice.)
LabVIEW Champion . Do more with less code and in less time .

Similar Messages

  • Case Structure - multiple selectors, single exit

    I tried searching for an anwser to my question but I could not find one.
    I'm creating an interface for my graduation project (using LabVIEW 7.1) and I will be using several subpanel's, at this point I'm trying to create a selection method. During the design of the interface the users gave preference to buttons for switching between the different subpanels (there is a total of 4 buttons). And a subpanel is chosen based on a numeric value (I have taken the code from the viewer.vi example).
    Now I'm trying to work out some sort of case structure starting from the 4 buttons and resulting in a single numeric value. The idea being that when button 1 is pressed, subpanel 1 is active and every other panel is not. So far I haven't found a working one, especially because of the single numeric value I want to have.
    If the anwser is somewhere on this board then you have my apologies and I would appreciate a link to it.
    If something is not clear: feel free to ask questions.

    That's why a radio button control is better. It automatically allows only one button to be active. Clicking a new one will turn the others off.
    Try it! Just place any number of booleans (any style) inside the radio button control. The output will be a single number. If you wire it to a case structure, you'll get the control label for each as case name.
    (you can also allow or disallow "no selection", etc.)
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    RadioButtons.vi ‏10 KB

  • How do i output multiple arrays from a case structure to create one larger array

    I currently have a vi that has one hardware input that i needed to take a measurement then be moved and take a similar measurement at a different point.  To accomplish this i used a while loop inside a case structure.  The while loop takes the measurement  and finds the numbers i need while the case structure is changed per the new measurement location.  I want to take the data points i have created in each case and output them into a single table.  I assumed to do this the best way would be to get the data from each case into its own built array and build a larger array but I cant get the information out of the case structure so that it all inputs at different places.
    thanks for your help
    Attachments:
    Array.vi ‏30 KB

    Hi Ross,
    attached you will find a solution for your table building problem.
    I would suggest thinking about program design - having the same case content in several cases doesn't make sense. I also would not want my user to press several stop buttons depending on choosen measurement...
    Best regards,
    GerdW
    CLAD, using 2009SP1 + LV2011SP1 + LV2014SP1 on WinXP+Win7+cRIO
    Kudos are welcome
    Attachments:
    Array.vi ‏45 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

  • How do I use a Case Structure with Strings?

    I need to use a string list to set up a set of cases to be performed. Is it possible to tell a single case structure to do "a, b, c, and d, but not e or f" or "do a, c, d, and f, but not b or e" etc... when you use a string containing the cases to be used?

    Blackavar,
    A case structure will only execute a single case at a time. If you want to have multiple cases execute in parallel, then you would need to have multiple copies of the case structure and split the string apart and wire them to all of the needed case structures.
    This could be done with reentrant subVIs to run truely in parallel. Anther method would be to have 6 different case structures, all with 7 cases each. The 7 cases would be "a", "b", "c", "d", "e", "f", and "0". Your input sting will need to be built up so that it will always be 6 characters long and then split up so that each character goes to one of the case structures. You would have your needed code for cases a - f. Case "0" would do nothing.
    Randy Hos
    kin
    Applications Engineer
    Nationsl Instruments
    http://www.ni.com/ask

  • Can I use a formula node to start the execution of a case structure?

    Hi,
    I am working on editing a VI to make it much easier to understand (for colleagues and non LV users). For one reason or another, the VI's creators did not fully make use of the power of case structures and other structure types. In the application we need it for, the instrument cycles and repeats measurements on several objects. We are interested in measuring the motor currents for several motors in the system. As it stands now, for each sample object's run, there is a separate sub-vi diagram which displays its waveform trace and several indicators such as max current, time at max, etc. That code was contained within a T/F case structure and copied and pasted 20 plus times.... Obviously the vi became extrememly cluttered and needed a huge screen to see. The trigger for the current case structures is an EQUALS comparison between one input (which is the sample object counter; and this part I will likely leave unchanged since it makes a lot of sense already) and a constant which was defined 1 through 20+ for case. 
    I have since made one case structure and 20+ instances of that case and have labeled them (at the top selection box near the detent arrows) "1", "2", 3, etc. I am wondering if I can use a formula node to act as the "trigger" which sets each case structure running? I believe that a simple IF statement should work. Please see a snippet of my attempt at making this in C below.
    For the node, I defined X as the input and Y as the output. The input to the node, X, is connected to the sample object counter. The output, Y, is connected to the case selector of the case structure. My attempt at the code is below:
    int32 y
    For(x == 1)
       y = "1";
     For(x == 2)
       y = "2";
    etc, etc.
    Is that above code snippet correct? Do i need something like "ENDIF" or "end if" at the end? Does "y" have to be defined as "int32" or can it be something else?
    Thanks for the help!

    Is your formula node doing anything else besides what is shown?
    Why don't you just wire the value that is going into it at X directly into the selector of the case structure?
    Attachments:
    Example_VI_BD.png ‏2 KB

  • Problem with multiple sub-panels through Enum case structure: "The VI is not in a state compatible with this operation"

    Hello,
    I am using LabVIEW 8.0 and I am attempting to create a sub-panel that displays the front panel of a sub-vi depending on the selection made by the user via the Enum dropdown menu.  I have wired the Enum to a case structure and applied identical coding to each individual case structure except for obviously changing the sub-vi source.  However, I receive an error "The VI is not in a state compatible with this operation."  I was able to successfully make a single sub-vi work within a sub-panel using a true/false case structure and the exact same coding.  However, now that I am using an Enum box wired to a case structure, I receive this error.  I have attached my block diagram as well.  Could anyone assist me as to where it is that I am going wrong?
    Thanks in advance!
    Solved!
    Go to Solution.
    Attachments:
    enum subpanels.JPG ‏22 KB

    torm wrote:
    I have attached my block diagram as well
    I only see a picture. Can you attach the VI instead? At what point do you close the reference?
    torm wrote:
    I have wired the Enum to a case structure and applied identical coding to each individual case structure except for obviously changing the sub-vi source.
    Well, if the code is identical except for the source, only the source should be inside the case, right? Why duplicate code?
    LabVIEW Champion . Do more with less code and in less time .

  • Trying to clear an array inside a case structure

    Good morning all.  I am trying (unsuccessfully, obviously) to clear an array inside a case structure.  (See case structure at right side of vi, I colored it green to make it easy to find).  Here's (briefly) what I'm trying to do.  I have 6 test probes in the process.  All six probes are connected to the Alcatel Detector through a 6-solenoid manifold.  As I run the test, I want to sample 1/second, for let's say 3 minutes.  For the first 30 seconds, I want to pull a sample from from probe 1, so I turn on solenoid one and leave it open for 30 seconds.  Now all 30 values are tagged as having come from Probe 1, and they're stored in array 1.  I can now compute an average value for probe 1. Then I close solenoid 1 and open solenoid 2, saving the next 30 values to array 2.  (and so-on, until I have measured all 6 probes for 30 seconds each).  Then I wait a pre-determined amount of time and repeat the process.  Here's my problem.  I want to clear out each array as I begin the second iteration, so that I can easily compute the average of the last 30 values.  If I initialize the array by connecting a constant 0 to the shift register on the for loop insid ethe case structure, it does not work, nor does it work to place the 0 outide the overall for loop (the next for loop going out, NOT the OVERALL for loop).  I know my programming skills are still crude, but I'm putting everything into this.  Anyone have any suggestions? 
    Attachments:
    HCMF rev 1 25 Apr.vi ‏485 KB

    Altenbach, I definately understand your approach, and I like it much better than my own.  But I still have no luck making it work.   I get the same result as before (my original attempt).  Value 0 of the array simply changes each iteration, with nothing "saved".  Each new value simply overwrites the last value.  Can you take a look at my new vi, with changes, and see if you can find the error of my ways.  I am but a rookie Jedi in the vast reaches of LabVIEW Space, and you are no doubt a Jedi MASTER
    Attachments:
    HCMF rev 1 25 Apr pm.vi ‏374 KB

  • Range setting in case structure

    Hello everyone! I'm working on an engineering project where I read in a sound input and if it's on high volume, a red led connected to a MyDaq box lights up, if it's on low, the green LED lights up, and both will be off if there's no sound input. I posted a screenshot of how my vi currently looks. The problem I'm having is, I want to set the range that will be considered as the low volume, and a range considered as the high volume on my case structures. I'm not sure exactly how to do that. I currently have an "In range" function there where I set the max and min values. THe problem with this is, it outputs a dynamic data that I cannot connect to the appended array. Any help would be great. Thanks!
    Attachments:
    projecttest2.vi ‏91 KB

    Thanks for your response. I'm new to labview (which isn't really an excuse) and we just went through the real basic stuff for this course. That's why my code just looks like a mess. I'm just trying to use the case selector because I thought it'd be more efficient, since, if I think of it in written code, they're kind of like if-else statements, right? I thought I needed to multiply by a thousand because I am measuring the amplitude of sound input. Whenever I test it out, the numbers are really small. I just figured it'd be easier to multiply it by a thousand and set the range with bigger numbers. I'm also trying to get an LED to light up on a range of volume. That's why I need two comparisons. Like, if the volume is between the range of 2000 to 3000, the green LED lights up, and if it's between 1000 to 2000, then the red LED lights up. If the signal is equal to zero, then no light turns on. Anyway, I scrapped the whole idea of using case selectors because I don't have time to learn my way through it and finish on time. I attached a new version of my VI. It's a more simplified version. I don't know how to connect the LED boolean indicators into my array and into the DAQ Assistant (it's not on the vi yet but I do need one so the program knows to read the output into the LED's on my myDaq box. Sorry for the trouble! Thanks for any advice you can give. 
    Attachments:
    projecttest1.vi ‏55 KB

  • Event structure vs case structure?

    I am developing an application that is fairly user input based... lots of boolean control buttons to do different things.
    In the past, I have avoided "value change" event structures, and instead went with a while loop, stacked sequence, and series of case structures. After having done it, I decided this was a terrible idea. This time, I intend to build an array from the booleans, convert it to a number, and feed it in to a single case structure. This will give me the option to add cases for different combinations of the booleans being pressed.
    I guess the question is: What is the best method for doing something like this?  Does one have advantages over the other?
    Edit: I wasn't that clear.  I would like a comparison between the "value change" event structure method, and just feeding everything in to an array -> case structure.  I also am worried that with the bool array -> case structure that I will run in to problems where I end up with too many control variables, and the value of the resulting number gets ugly very quickly. The application has several buttons... next, last, save, load, several different configure setup buttons etc.
    Thanks!
    Solved!
    Go to Solution.

    Aalenox wrote:
    I am developing an application that is fairly user input based... lots of boolean control buttons to do different things.
    In the past, I have avoided "value change" event structures, and instead went with a while loop, stacked sequence, and series of case structures. After having done it, I decided this was a terrible idea. This time, I intend to build an array from the booleans, convert it to a number, and feed it in to a single case structure. This will give me the option to add cases for different combinations of the booleans being pressed.
    I guess the question is: What is the best method for doing something like this?  Does one have advantages over the other?
    Edit: I wasn't that clear.  I would like a comparison between the "value change" event structure method, and just feeding everything in to an array -> case structure.  I also am worried that with the bool array -> case structure that I will run in to problems where I end up with too many control variables, and the value of the resulting number gets ugly very quickly. The application has several buttons... next, last, save, load, several different configure setup buttons etc.
    Thanks!
    Event structure. Among other things, it will allow your loop to "sleep." then wake up when an event happens. With a case structure it's going to be constantly polling. Event structure is pretty much always the right way to go in newer versions of LabVIEW that have it available. I assure you, your first solution was aboslutely wrong and you noticed that, your second is better and was common the way before event structures existed, now that event structures exist, you should go with those.
    CLA, LabVIEW Versions 2010-2013

  • Changing an output box in a case structure to an input box

    Hi, I have been struggling with the following problem in Labview:
    Hi, I was working on a wiring diagram in Labview and I was trying to
    wire an absolute value symbol to the right border of a case structure.
    The problem is that I get an output box (an white filled box with an
    orange border) instead of an input box (an orange filled box). How
    would I change the output box into an input box? I have tried Ray
    Kong's method, which is to add a constant and that would make the box
    solid. It worked only once but when I tried it on another output box
    it did not work. Any suggestions would be appreciated. Please
    include step by step instructions as I am still learning Labview.
    Thank you
    Muhammad Asfour

    The box type will be appropriate for what you have wired to the box.
    When you say you want an "input box", do you REALLY want an input box (ie, a
    connection bringing a value from outside of your case statement to the
    inside of your case statement) or do you mean that you want your output box
    (a connection bringing data from inside your case statement to the outside)
    to be solid orange? The output box will go solid orange when you have a
    connection from EACH case to the box. Remember that a single output box
    (usually on the right side of the case statement) must be connected to
    something in each case of your case statement. It will be filled white
    until all cases are wired.
    Write back if this isn't clear of if I have mis-understood your situation.
    Hope this hel
    ps.
    Jim
    "Muhammad Asfour" wrote in message
    news:[email protected]..
    > Hi, I have been struggling with the following problem in Labview:
    >
    >
    > Hi, I was working on a wiring diagram in Labview and I was trying to
    > wire an absolute value symbol to the right border of a case structure.
    > The problem is that I get an output box (an white filled box with an
    > orange border) instead of an input box (an orange filled box). How
    > would I change the output box into an input box? I have tried Ray
    > Kong's method, which is to add a constant and that would make the box
    > solid. It worked only once but when I tried it on another output box
    > it did not work. Any suggestions would be appreciated. Please
    > include step by step instructions as I am still learning Labview.
    >
    > Thank you
    >
    > Muhammad Asfour

  • How to increase the performance with the case structure?

    Hiii, All
                I want to stop the looping into my vi, which is occuring because of Case structure, as i ve shown in the figure, i am checking for the trigger, either it is Manual or it is Auto, if auto i am going inside the case and checking the loop of either Auto trigger is for Analog values or for digital values, if it is for analog valus, i am checking the set point that, either P.V. has cross the setpoint or not? if it is then i am starting to write the file and the control comes out again to check the Start trigger again, either it is Auto or manual? and because of these contonuous loops inside the while loop, my other while loops inside the vi, decrease the performance mean they are slowing down also with the current while loop, so i think solution is to stopping these nested loops, but what should i do to stop these nested loops? please suggest something.
    Thanks in Advance,
    Nishant
    Attachments:
    Performance.jpg ‏169 KB

    You can consider multithreading the single loop and using a synchronization resource to communicate between threads.  You should also consider cutting down on the global variable dependancies which makes the code hard to follow.
    Paul Falkenstein
    Coleman Technologies Inc.
    CLA, CPI, AIA-Vision
    Labview 4.0- 2013, RT, Vision, FPGA

  • Cluster value lost when leaving case structure

    Hello all,
    I am having an issue with a particular VI I am working on. (FYI this is in Labview 8.0)
    The VI is set up to run a current source, voltmeter, and thermometer and then record and graph data in various ways that are selectable by the user.
    Everything seems to be working fine except one particular graphing method. When I try to graph Current vs. Voltage, the current value is gettiing lost. Within a case structure the current and voltage are combined into a cluster and then exit the case structre to be later appended to a cluster array.
    However, the value of the cluster is being lost when the graph is set for Current vs. Voltage. Any other method and it is working properly.
    I can't seem to figure out why this is happening as it does not make much sense that the other methods of graphing work but this one doesn't when it is coded the exact same other than having different variables.
    I have attached the VI with added indicators showing that the cluster value is being lost once it exits the case structure. Any help would be much appreciated.
    Thank you very much and I apologize for my extremely messy VI.
    - Nathan Cernetic
    Solved!
    Go to Solution.
    Attachments:
    IV-RT.vi ‏185 KB

    You really need to boil this down to something we can run and reproduce the issue.
    Have you tried to break a few relevant connections and rewire? Maybe something is corrupt.
    Beside being a mess, your VI has quite a few glaring mistakes.
    Let's have a look at the structures in the upper right:
    90% of the code is the same in all three case structures, so all that needs to be inside the case structure is the small part where you built the 2D array. Everything else belongs outside the case.
    The sequence structure has no useful function.
    Why do you need to reverse the array with each iteration of the small FOR loop? Once before the loop would be enough. Right?
    Why do you use built array inside the small FOR loop, but don't autoindex at the loop boundary? All you ever get is an array with exactly one element, no matter how much the loop runs. Seems useless! (see below image for an alternative).
    You would not even need to reverse if you would use "built array" instead of "insert into array at position 0" in the central part.
    Others: You constantly hammer all your property nodes. The only need to be called when things change. Again, you have way too many instances. For example in the case structure where you are having problems, the same property nodes exist in all cases. A single instance of the property node belong outside the case and only the string constants inside each case. Whenever code is the same in all cases of a case structure, that code belongs outside!
    Message Edited by altenbach on 06-19-2009 03:39 PM
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    RubeLoopII.png ‏10 KB

  • Stooping a case structure

     Hi everybody..
    I want stop the most inner case structure after executing only once but the count is keep on increasing i cannot use STOP...please help
    Thanks in advavce
    Attachments:
    Modified_DiscreteInput..vi ‏27 KB

    Hi Everybody
    In this VI when Boolean UDA is connected to single case structure is working fine but when it is connected to a another case structure it is showing abnormal result.
    I am attaching both the VI. Any suggestion will be helpful  
    Attachments:
    Modified_DiscreteInput1.vi ‏29 KB
    Modified_DiscreteInput2.vi ‏28 KB

  • Building a case structure with four boolean (true/false) inputs.

    I currently have two boolean inputs that I would like to use to select cases in a case structure. I would like to have four cases, each one dependent on the true/false condtions of the two booleans. If boolean 1 =true, then case 1 should be used, if boolean 2=true, then case 2 should be used, etc.
    What structure should I use to convert these boolean inputs into numeric cases?

    Or build them in to an array and "Search 1d Array".  If you are only looking for a single bool being true, this would be easier because your cases could be {0,1,2,3} instead of {1,2,4,8}

Maybe you are looking for

  • Why can I not open a file in lightroom to an external editor?

    I have recently restored my photo library on an external drive via time machine and all has been good. Now I have updated lightroom to 4.4 and cannot open any files to an external editor... photoshop cs4 or any nik software program. I am running OS X

  • Yamaha KX61 USb MIDI keyboard doesn't work in Garage Band

    I have installed latest Yamaha USB-MIDI driver V1.2.0 for Yamaha KX61. I have connected USB cable to Mac Mini and turned the keyboard on. In Other section of System Preferences I can see an icon for Yamaha USB-MIDI. In there I can see Device Name: Ya

  • Broken links to BLAF Guidelines

    I originally posted this to the Documentation forum, but will also post here... The Release 12.1.3 OA Framework Developer's Guide (MOS Note 1107973.1) contains many links to the BLAF UI Guidelines to help customers follow standards when designing Ora

  • Premiere pro 2.0: where is the audio track?

    Hello, I just uninstalled Premiere Pro CS4, because my processor was too bad for it, and installed the testversion of Premiere Pro 2.0. This seemed to work fine, but when I imported a normal .avi file (it was a mpg converted to avi), I noticed that t

  • FORGOT PASSWORD FOR BLACKBERRY CURVE

    does anyone know how to retrieve a forgotten passcode protection that prompts to use your phone? it only gives me 5 tries and i cant remember!! blackberry website no help they dont recognize the pins entered from package. help!!