Strategy for array of tests on front panel

I'm building a test program that has a lot of tests. The basic strategy
that I'm trying is to have an array of tests on the front panel which would
have an on/off button, result, spec, and pass/fail indicator showing. The
array would also have all other information needed for that test hidden.
This array gets indexed into a for loop that does all the tests. So the
elements of the array are used in a lot of sub-vi's. The problem is how do
I handle changes to the format of the element during the programming
process? I keep finding things I need to add to the element that I didnt
think of before. When I first started the project my idea was to make a
custom variable of that element so that when I made a change
it would update
all at once. The problem with that is the array in the main vi loses the
information it's storing when its elements update from the custom control.
Then I'd have to retype everything back in. So I quit using a custom
control and now when I make a change to the format of the element I need to
copy the array/element onto all subvi's that use it. Comments?

Isn't humorous how simple projects can turn into monsters? I will suggest an answer to the question/problem of "loosing information stored upon updating your elements in the array".
As long as you are in development mode, you may find it helpful to spend a few minutes and build a VI (Write/Read to/from files VIs) that records the information/data for quick uploading after you update your code. Another option (if you only need the last set of values) is setting the last values to Default (use property nodes). I don't believe shift registers will fully handle your situation. Just some ideas to jog you along - Good Luck - Doug

Similar Messages

  • Dynamic cluster/array follow up question - front panel

    Thanks for the responses to my last question - they were great and fast!
    I'm still stumped on how to create the front panel. It doesn't really matter whether it is an array or cluster. It sounds like either way, once I have it I can autoindex through it. The basic application here is that I have a VI that will store one XY plot to our database. I'd like to wrap that in a VI that will take N XY plots and store them all in our database regardless of what N actually is. So in terms of creating the front panel, I tried to create an array control and drop a XY graph in it, but it doesn't seem to like that. It said that I hadn't added an element to the array. I also tried to drop a XY graph into a cluster control and that cleared the broken run arrow, but wouldn't I have to know how many XY graphs are being passed in? It seems like I'd have to put one graph in the cluster control for each graph coming which defeats my purpose? Remember I won't know how many XY graphs are coming into my VI in the array or cluster. Anybody know how I can set up the front panel?
    Again thanks for the quick replies!!!
    Best Regards,
    Steve

    Look at the attached VI.
    It has a single XY graph inside a cluster container, and that is inside an array container.
    With this setup, it wouldn't matter how many graphs you pass to the subVI since it's an array, it will take whatever is passed to it.
    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:
    XY Graph in Array.vi ‏13 KB

  • Display a particular array element on the front panel

    Hello,
    I was wondering if it's possible to change which element of an array control is displayed on the front panel from within the program.
    Here's why I want to do it: I have an array of clusters, each of which contains a set of controls.  The controls in each cluster specify a bunch of different parameters for a few different instruments that are being controlled by Labview.  The user changes all the values on the front panel before the program starts, then the program steps through the array elements one by one.  I'd like to be able to change the array's display so that the user can know which set of parameters is active (and thus what is currently in force) while the program is going -- otherwise the element that is displayed is just wherever the user left it last.
    Thanks in advance for any help.

    See also: http://forums.ni.com/ni/board/message?board.id=170&view=by_date_ascending&message.id=317419#M317419
    LabVIEW Champion . Do more with less code and in less time .

  • Passing array of values from front panel to menu

    I am working with a group programming a multichannel current stimulation device and we are currently having trouble setting up the run time menu. The burning question that we have is trying to figure out how to pass an array of values from the front panel to the menu that we are setting up in the block diagram, any advice?
    Thank you

    Take a look at this. Its just a simple menu update using a for loop. Uses whatever your values are as the item tag and item names. Remember, item tags need to be unique. This specifically goes under the sub menu of channel, which has to be created before.
    Attachments:
    menu.vi ‏12 KB

  • Passing arrays with Test Stand to DIO 96

    Does anyone know the easiest way of sending data arrays from Test Stand to a DIO 96 using a LabView dll? I have a Test Stand sequence where I will need to set bits and read bits from a DIO 96 and am going to make a LabView dll. I guess I will need to pass either arrays to and from each port or numeric data to and from each port to a dll and also figure out how the status of the bits in the DIO 96 will be remembered.
    What is the best strategy for dealing with Test Stand and a DIO 96?
    Has anyone any ideas or example code?

    Hi Steve,
       either approach is perfectly valid, and as you say, the activeX approach does remove some of the flexability of where you get the data from, however, what you've really described is two separate things, rather than two separate styles of approach.
    ActiveX or direct passing are simply the means of getting data from and to your TestStand data space.
    Step types are a convenient way of wrapping up particular layouts and functionalilty into a very easily re-usable TestStand development item. You would still need some sort of code module to put with a step type, so you're not necessarily limiting your developed code to the Teststand environment.
    Making links through ActiveX allows you to make a solid definition on configuration type items, and allow for edit substeps. For example, the NumericLimitTest step type has step.limits.high and step.limits.low. Rather than pass those to the edit substep as a dll call (which is perfectly valid), passing the sequence context (which also allows you to run the termination monitor etc) allows for the fixed references to the fixed data layout of the step. Self containment like this works when the data sources are fixed as you get with a step type to use the edit substep, or the pre/post substeps.
    Working on a dll call allows more re-use because then you concentrate on the data, rather than where it's come from, however, for large amounts of different sources, the dll prototype can become very complex and difficult to document. You end up having to pass lots of parameters and some of them you might not use.
    The question you're ultimately trying to answer is "what does it do to my architecture?"
    The holy grail of TestStand architectures is any step type can be used in any sequence in any sequence file with any process model under any operator interface. Now this isn't always practical, but the closer you get to it, the more flexibility your system as a whole contains, and the easier it becomes to add in or change the layout / functionality of the system
    With this comes code re-use, but the extra development time it takes to make good re-usable maintainable code isn't re-couped until the 4th or 5th re-use.
    If you want in this case your passing of the array to occur from many different places in your sequences, and you're building up lots of sequences to use them, then making a step type, and passing through the most convenient method you decide upon will make the implementation of the sequences easier to do.
    If you only need it in a couple of ways, then you can do without the step type, and if it's not many different data sources, then pass by parameter to the dll through the function prototype directly, and use a regular DLL adapter to acheive it.
    Mostly my 2-cents worth.
    Thanks
    Sacha Emery
    National Instruments
    // it takes almost no time to rate an answer

  • Using Front Panel Audio with Fatality Professional

    I have a query regarding connections on the Titanium Fatality PCIe.
    I have an XFi XtremeMusic PCI card and am considering replacing it with the Titanium Fatality XFi card. A couple of reasons, I like the shrouded enclosure, I like the little XFi LED logo, I want to move away from PCI cards in my system.
    But one of the main reasons is to allow me to connect my Intel HD Audio connector to the card so I can use the Headphone/Mic socket on my case. So if anyone has these cards can they confirm that they have an Intel HD Audio connector on them. If so does connecting the headphone to the case socket mute the speakers?
    Cheers

    Well, I don't personally have one, but I was under the impression that every X-Fi had one. I know my X-Fi Fatal1ty (original PCI version) included it, and my Recon3D definitely does.
    Plus if you check their shop website for the Titanium Fatal1ty Professional than the specs page lists a 2x 5-pin connector for "Intel HD Audio Compatible Front Panel Header" so it most likely does.
    I would assume it would mute the speakers only if your case is fully Azalia compliant. By that, I mean the standard (as dictated by Intel) involves the use of two normally-open switches - one each on the headphone and microphone jack - which are closed as a result of plugging something into them. Some cases have these jacks which means it can detect when you plug something in and respond accordingly, but others use cheaper (we're talking differences in cents - not exactly substantial savings, but when you do it thousands of times over it adds up) switchless jacks and simply report them as always plugged in.
    Just remember to set up the X-Fi panels to mute the speakers when you plug headphones in, as well as switch the output to headphone mode. You can actually set those two options separately on X-Fis.

  • Extending Mic & Headphone connection to Front Panel Ja

    I have a SB Li've 5. (SB000) and I need to extend the "Mic In" Jack and "Line Out" Jack (for Headphones) connectors to the front panel jacks. Are the connector pins included in the "Audio Extension" (AUD_EXT) connector? If so, which are the pins? If not, how can this be done. I have seen the information about the connector on:http://img463.imageshack.us/my.php?image=li'vepins0jh.gif?However,?I still do not know how to make the connections. All help appreciated. Thanks,?Mike.

    I do not know what the pinouts are, but the Front panel IO connect into the lower right corner of your motherboard. You also have an F_audio1 in the lower  left. You should be able to follow these wires. Also, I would install the card, leaving the wires connected to the mobo and not mess them first to see if you still have full functionality. You might not need to mess with them.
    ... an HP employee expressing his own opinion.
    Please post rather than send me a Message. It's good for the community and I might not be able to get back quickly. - Thank you.

  • How to lock a pane within front panel

    Hello,
    i am trying to lock a single specific pane of my front panel while handling an event.
    or the inverse
    in the event structure, one can lock the front panel while performing the event. i would like this to happen, in order to avoid queuing other user events in the mean time.
    except for some commands, which i all put in a single pane (like a taskbar), and which includes important features that should be accessed at all time.
    however i could not find any property of the pane or the front panel that allows me to do so.
    any idea?
    ... And here's where I keep assorted lengths of wires...

    Thanks  Partha,
    i have looked at this thread before, did not think it related too much.
    if i want to set busy, i still cant use the pane 1 of my front panel. or, the inverse, if i set controls to "disable" i would have to do it for all the controls in the pane 2, for every event that is fired. anyway it is reported there to not work as desired.
    i think we might have here a suggestion for improvement:
    i could not find anywhere except in the options for specific event, the option to lock the front panel. to my taste this should be an avaible property node. then, this option would also automatically exist for every pane in the front panel.
    what do you think?
    in the mean time, i still need a workaround. an idea i had, but makes my code more complicated, is to implement an external vi that would be always on top, and would be as the pane 1 in my curent vi. i would not like to do this actually...
    ... And here's where I keep assorted lengths of wires...

  • Remote front panel SSH support?

    Does the LabVIEW HTTP server which delivers remote front panel "content" have the option of running in SSH mode? If not, what are my alternatives for securing connections to remote front panel servers?

    I am not aware of any options for SSH in LabVIEW. However, there are other ways to keep you remote panels secure. To prevent a user from gaining control of a VI, click the lower left corner of the front panel and select Lock Control from the shortcut menu. This option prevents a viewer from requesting control of the VI on the Web until you unlock it. Similarly, you can regain control of a VI from any Web client.
    To configure more Web Server security options, select Tools»Options, select Web Server: Configuration from the top pull-down menu, and enter the Root Directory. After you enter a root directory, Web clients have access only to files in that directory and its subdirectories. All other files on your computer are not accessible on the Web. Select Web Server
    : Browser Access to grant or deny viewing and/or controlling access to different IP addresses, so only known clients can view or run your application. Select Web Server: Visible VIs for control over which VIs in your Web Server directory are visible to a client, and to limit the time that a client can maintain control of a VI. Refer to the LabVIEW Help, which you can access by selecting Help»VI, Function, & How-To Help, for more information about configuring the Web Server.
    Alternatively, you can program security into the VI itself. For example, you can require a user to log in when the VI first runs, and disable all other aspects of the VI until you verify the login. To do so, place a login field on one page of a tab control, the other controls on subsequent pages, and enable the other pages after the user successfully logs in.
    J.R. Allen

  • Keeping front panel objects aligned on target machine

    I have a simple little program that looks fine on my development station but looks like crap on the target machine.
    Indicators that are aligned on the dev machine are not aligned on the target machine?
    I don't get it, why does it look so bad on the target machine? Worst of all is everyone sees the target machine so it makes me look bad!
    Message Edited by RTSLVU on 08-06-2008 10:42 AM
    Attachments:
    Dev screen.jpg ‏170 KB
    Target Screen.jpg ‏219 KB

    Hi RTSLVU,
    These instructions worked for me:
    - Open the VI front panel. Click in File > VI properties > Windows Size
    - Enable: Maintain proportions of window for different monitor resolutions
    - Disable: Scale all objects on front panel as the window resizes
    Check if monitor resolutions are equals.
    Klein
    Message Edited by Klein on 08-06-2008 11:50 AM
    Message Edited by Klein on 08-06-2008 11:50 AM

  • HIde Front panel - enjoy Ctrl-Key shortcut

    It is not a question, it is a link to a good old idea:
    http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Allow-ONLY-the-Block-Diagram-to-be-opened-Without-Fron...
    and Ctrl-Key shortcut attached.
    Shortcut hides (including taskbar) and restores front panel window.
    It always activates block diagram after all:
    If you use shortcut with the hidden FP, it will activate block diagram (unlike simple Ctrl+E activates front panel)
    Attention! It will be hard to find VI, if you have hidden it's front panel and closed block diagram - that is why we still need this to be integrated into LabVIEW
    PS Use: Place into C:\Program Files\National Instruments\LabVIEW 2011\resource\dialog\QuickDrop\plugins and set shortcut in VI Shortcut window (Ctrl+Space -> Shortcuts -> Ctrl-Key Shortcuts)
    Attachments:
    Hide front panel.vi ‏19 KB

    It is a custom quick drop shortcut: Labview description is here:
    http://zone.ni.com/reference/en-XX/help/371361L-01/lvhowto/qd_keyboard_shortcuts/
    Place the vi to C:\Program Files\National Instruments\LabVIEW 2011\resource\dialog\QuickDrop\plugins
    Next time labview launches, it will be available, but you need to set a quick button for it:
    Press Ctrl+Space, it will open Quick drop window.
    Press Shortcuts..., switch to Ctrl key shortcuts tab (see picture)
    Set the button (E) for the selected plugin vi.
    Next time you press ctrl+space, followed by Ctrl+E, LabVIEW executes plugin vi.
    Correction for my description: if the front panel is hidden, closing block diagram closes the vi (with confirm dialog, as usual). This is not a problem
    Attachments:
    Untitled.png ‏28 KB

  • I have a VI and an attched .txt data file. Now I want to read the data from the .txt file and display it as an array in the front panel. But the result is not right. Any help?

    I have a VI and an attched .txt data file. Now I want to read the data from the .txt file and display it as an array in the front panel. But the result is not right. Any help?
    Attachments:
    try2.txt ‏2 KB
    read_array.vi ‏21 KB

    The problem is in the delimiters in your text file. By default, Read From Spreadsheet File.vi expects a tab delimited file. You can specify a delimiter (like a space), but Read From Spreadsheet File.vi has a problem with repeated delimiters: if you specify a single space as a delimiter and Read From Spreadsheet File.vi finds two spaces back-to-back, it stops reading that line. Your file (as I got it from your earlier post) is delimited by 4 spaces.
    Here are some of your choices to fix your problem.
    1. Change the source file to a tab delimited file. Your VI will then run as is.
    2. Change the source file to be delimited by a single space (rather than 4), then wire a string constant containing one space to the delimiter input of Read From Spreadsheet File.vi.
    3. Wire a string constant containing 4 spaces to the delimiter input of Read From Spreadsheet File.vi. Then your text file will run as is.
    Depending on where your text file comes from (see more comments below), I'd vote for choice 1: a tab delimited text file. It's the most common text output of spreadsheet programs.
    Comments for choices 1 and 2: Where does the text file come from? Is it automatically generated or manually generated? Will it be generated multiple times or just once? If it's manually generated or generated just once, you can use any text editor to change 4 spaces to a tab or to a single space. Note: if you want to change it to a tab delimited file, you can't enter a tab directly into a box in the search & replace dialog of many programs like notepad, but you can do a cut and paste. Before you start your search and replace (just in the text window of the editor), press tab. A tab character will be entered. Press Shift-LeftArrow (not Backspace) to highlight the tab character. Press Ctrl-X to cut the tab character. Start your search and replace (Ctrl-H in notepad in Windows 2000). Click into the Find What box. Enter four spaces. Click into the Replace With box. Press Ctrl-V to paste the tab character. And another thing: older versions of notepad don't have search and replace. Use any editor or word processor that does.

  • How to bring a VI front panel to the front (of all open windows) when the parent VI calls a sub-VI in Test Stand.

    In Test Stand when I call a sub-VI front panel, the pop-up window goes behind all the windows and the user just waits for the screen. I want the pop-up to come to the front so that the user can know what to do. I couldn't find any property that I can set which would make the called VI go to the front.

    What version of TestStand are you using? Here are the TestStand palettes in LabVIEW for TestStand 2.0 and 3.1. You can also set a VI to be modal in  VI Properties>Window Appearance. Select Dialog or go to Cutomize and change the Window Behavior.
    Message Edited by Dennis Knutson on 03-07-2006 10:32 AM
    Attachments:
    TestStand palettes.JPG ‏37 KB

  • Can I have an array of controls without having them in the array front panel holder?

    I would like to link a number of boolean control buttons in an array without grouping them on the front panel the way it does when you make an array and then put in a boolean control.
    Here's the background:
    I have 8 linear motors controlled by CANbus, and so each button type (Move, Stop, Home, etc) is duplicated 8 fold.  I have an event structure that is currently triggered with a separate case for EVERY button with only a very small difference in the code inside each case.  Ideally I could have the buttons in arrays and then check the new array value against the old value on a value change event.  The alternative for me is to have each case handle the 8 buttons (with a Mouse Down? filter event) and then use the Boolean.Text value from the CtlRef and search an array of all Boolean.Text Values for the 8 buttons to see which name matches and process accordingly.  I have something like 200 buttons, so making the arrays of Boolean.Text values from the reference nodes is WAY too time consuming as I have to go through like 5 levels of right click menus.  Any suggestions?  

    Mark,
    You might consider using clusters on the front panel.  Create a type def'd cluster that has all the boolean controls for 1 channel.  You can drop 8 of these on the front panel and the event structure can detect a change in a cluster.  Easy to convert cluster to array behind the scenes.  Remember that order of cluster determines index of value in array.
    Message Edited by Wayne.C on 04-09-2010 05:19 PM

  • Is there a way to rotate an array on the front panel?

    Is there a way to rotate an array on the front panel?  For example, I want element [0] to be at the bottom of an array that's expanded to show the elements vertically.
    Thanks in advance.

    I do not think that there is any way to make an array control or indicator display that way.
    You might be able to reverse the array, creating an upside down display. If you also need the user to index it, then it gets trickier.  Hide the array index display.  Create another numeric control to look like the index control.  When the value of the new control is changed, subtract the value from the last index of the array and use the difference to index the array.  You may need to adjust by +/-1, so try it to be sure.
    Lynn

Maybe you are looking for