Do you ever write an expression in TestStand with a bunch of parenthesis () and get lost halfway through trying to figure out which pairs are open and which are closed. Well, I do. Every Day. And I spend accumulated hours a week just trying to keep track of which ) goes with which (. If I'm lucky I can look for a little red item in the expression, or click on the check expression checkbox, but when I have a 'only runtime evaluatable' expression I'm out of luck (which is rather often) ). Some languages/editors have a parenthesis matching, where the ) your cursor is on causes the matching ( to get bold or flash. Others start coloring each pair a different color, so it's easy to see them all. Why can't TestStand do something like this????
Find yourself placing a Sequence Call step and trying to determine the appropriate value to enter for a numeric parameter called "Direction"? Tired of creating sequences with numeric parameters named like the following: "Direction_0_Up_1_Down_2_Left_3_Right"?
The solution is to support the creation of variables with enumerated type within TestStand. Enums could be created as custom variables and then used as wherever a self-documenting variable is required.
Enum type creation:
As seen from a Sequence Call step to a subsequence that uses an Enum as a parameter:
The current placement creates confusion about what you’re actually closing out of when you click it. It makes me hesitate and wonder what I am about to close.
If you click it when there are multiple files open, it just closes out of the tab on top. If you click it when there is only one file open, it closes out of the whole pane, including the Sequences and Variables windows.
It would eliminate any ambiguity if the X for each file were on the tab for that file and if there were a separate X for the pane, like you typically see in tabbed programs.
You could also just put an X next to the pin on each little window instead, like the X in the Step Settings pane and the Insertion Palette in the screenshot above.
How many times have you found yourself typing double backslashes "C:\\Windows\\System32\\cmd.exe" or even worse, going through a copied path to change every backslash to a double backslash (and inevitably missing one), just so you can pass a file or directory as a constant to a code module or another sequence?
I'd like to see a symbol for 'explicit string' in the TestStand expression language, much like C# does with the @ symbol.
So if we typed @"C:\windows\temp" we would actually get the string "C:\Windows\temp" instead of "C:\Windows<tab>emp".
To really go the extra mile on this:
Drag and drop could be enabled, so that any file dragged from another window into an expression box would automatically paste the filename.
A browse button could be added to the expression browse dialog which would bring up the usual file open dialog and insert the selected filename.
It would be nice if the Step Settings for a Sequence Call step's Module tab would also list the calling sequences comments field and the parameter comments in addition to the prototype information. This would allow sequence calls to easily present information on the expected use of the sequence, along with parameter information (ranges, default options, etc) that would be useful to the developer. I've created a simple mockup of what I'd like to see here:
By adding these features, sequences can contain their own 'help' information which would allow the developer to configure the call without having to leave the step module dialog.
which is horribly difficult to write, maintain, and understand what is happening. It would be MUCH easier if select case on multiple values worked like this:
where it looks just like other text based languages, although it takes up quite a bit of realestate on the screen.
or maybe something like this:
where I can just type in a comma separated list of allowed values. The similarity with text based languages disappears here, but it is much smaller on screen (but notice how it shows nicely in the description field) and lines up better with LabVIEW notation.
Note: LabVIEW already supports doing this, and also supports ranges of values (eg 3, 5..10, 12 for numerics) which would also be nice, and also supports case sensitive and insensitive comparison for cases.
This idea mostly goes along with this idea. I use type def all the time in LabVIEW, especially with enums. TestStand can interact with my VIs with enums, but they are handled as a number. Furthermore, if the enum gets changed, the wrong value of the enum is often used. I really like the idea of custom data type of an enum. The ultimate would be if I only had to alter the enum once (in ctl file) and TestStand would automatically update its data type. This should be the same for clusters.
It would be helpful to be able to provide a regular expression (like Labview Match Pattern) as a string value test limit. We often look for a pattern of data within a string rather than a constant.
Maybe also a regular expression function within the built in functions within TestStand expressions would be a help also. This could provide more flexibility if a user needs it. For example adding option to gain match position, and match length as well as give the option to search in reverse and ignore case.
I have noticed that the TestStand shipping examples are often overlooked when looking for ways to accomplish things with TestStand. This is not the case (as much) in LabVIEW and CVI, and I feel that this is because TestStand does not have an example finder. I would like to see some method of accessing the shipping examples through the sequence editor environment, such as:
Another problem with the current setup is that the only way to know what the example demonstrates is the name of the folder. This makes it easy to overlook examples that would be helpful.
I propose adding a TestStand example finder with these features (in order of importance):
Provide a description for each example (most of this info can be pulled from the sequenceFileLoad callback dialogs in a lot of the examples)
have keywords for the examples, and allow searching
for more advanced examples, provide a batch file to load all necessary components
Provide links to the NI community and developer zone to encourage participation
Currently, when you rename a variable, you have to rename all the places where you are using the variable manually. It would be helpful to have a "smart rename" option which, after renaming the variable will update its uses.
Handling arrays in TestStand is pretty limiting and more often that not you have to pop into a code module to perform any sort of array handling.
The following is the default functions that can be used in expressions:
[Array GetArrayBounds(array, lower, upper) Retrieves the upper and lower bounds of an array. GetNumElements(array) Returns the number of elements in an array. InsertElements(array, index, numElements) Inserts new elements into a one-dimensional array. RemoveElements(array, index, numElements) Removes elements from a one-dimensional array. SetArrayBounds(array, lower, upper) Changes the bounds of an array. SetNumElements(array, numElements) Sets the number of elements in a one-dimensional array.
I would like to see this expanded to avoided have to resort to using code module. The following is some suggestion:
Array Subset function Array Max & Min Replace Array Subset function Search 1D Array Sort 1D Array
I've found that there's a hole in the global map in TestStand - often there's something that I want to access across a project or workspace instance, but not a station (this is especially true when developing on my laptop). I know that there are work arounds for this issue, but none of them are elegant solutions IMHO. I'd like to see workspace and/or project globals implemented.
When loading large sequence files, TestStand does not display progress and appears to "lock up" both TestStand and the LabVIEW OI.Sequences with hundreds of steps can take minutes to load. Operators often incorrectly conclude the application has stopped respoding during long pre-loads.
I am suggesting to implement a responsive progress display, allowing the LabVIEW OI to proceed execution, and post the following UI Messages during step pre-load.
UIMsg_ProgressPercent–(Value: 11) TestStand step modules post this message to the user interface to notify it to update its progress indicator associated with an execution.
UIMsg_ProgressText–(Value: 12) TestStand step modules post this message to the user interface to notify it to update its progress message associated with an execution.
It isn't uncommon to deploy customized TestStand options, such as search directories, on a deployment computer. It would be much easier to do this if the search directories in TestStand were stored in their own .ini file rather than in TestExec.ini. You can obviously set the search directories in TestExec.ini quickly using the built-in search directories GUI, but when distributing the TestExec.ini file to the deployment computer, you have to be careful that none of the other options contained in the file don't inadvertently cause problems when executing TestStand deployments. A separate .ini file for search directories would clearly remedy this situation.
It would be nice to be able to create a new sequence from highlighting steps in a sequence and performing a right mouse click, "Create New Sequence...", this would be a kin to Create SubVI in LabVIEW.
This action could display a dialog to give possible options such as, to copy the Setup and/or Cleanup group, Create in a New SequenceFile or in Current SequenceFile, the option to Move or Copy highlighted Steps. It could also include creating any locals and /or FileGlobals (if creating in a new SequenceFile) used by those highlight steps.