NI TestStand Idea Exchange

Community Browser
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

Recently I came accros situation like that:

 

I have a local container called AAA with the subproperty called "Name".

 

Then I'd like to change the name of the AAA container using the API function ".Name".

 

However, when I call Local.AAA.Name, instead of changing the name of AAA container I'm accessing the subproperty with this name.

 

I think the name "Name" should be reserved as a name of subproperty.

 

 

In TS Sequence Analyzer Results Window:

it would be helpful to be able to have a column of RuleID in the results table.  This way when we are debugging/ troubleshooting results of custom rules that it would be much easier to track down to the specific RuleID that is being used (names/categories/descriptions can all be duplicated)

Right now RuleID is not available as one of the columns of the results table -- add it as an option.

I do NOT think it should be visible by default, but we should be able to show it optionally if we want.

IncludeRuleID.png

 

Also, if you select an analysis message from the results, you can right click on it and choose "Goto Rule"

Now at this point you are in the list of rules, but if you want to go track down what RuleID caused the problem, you are dead in the water -- you need to look at the rule name and description and then manually go to the rule configuration page and search through the list to find the right one.  It would be so much nicer if you could right click on the rule in the analyzer project and be able to open the "Configure available rules" window.

When developing custom TS sequence analyzer methods, it would be beneficial to be able to control how the message gets reported.  Specifically sometimes I would like to automatically add the message into the "ignored" list. 

Reasoning -- I have determined that there is a problem with the code, but based on other stuff I think the user really intended and needs the code written this way, so I still want to flag that I found it, but have it in the ignores list so that the user won't by default see the reported message, but if they go to the ignored list they can see it.

 

Example: If I were doing the #NoValidation directive from scratch, I would have written the rule such that if the "expression validates correctly" rule would check the expression validity regardless of any #NoValidation directives.  Then it would report the message (assuming it has a validation error).  If the expression contained #NoValidation it would be automatically put into the "ignore" list.  This way we have the ability to see that the expression did not validate properly, but recognize that the user has included a flag in their code to specify "this is OK and I want to ignore it" so it goes into the ignored list. -- All done automatically by the analyzer code module without the user having to manually click on the ignore menu item in the Analysis Results window.

 

Hi,

 

Recently I wanted to iterate through ALL my subproperties in the container.

 

I've discovered that the function GetNthSubPropertyName accessing only first level of subproperties and it doesn't get deeper into hierarchy.

 

I wonder if it could be an extension to this function - and to all similar functions - allowing iterating automatically over ALL subproperties. For example a new option could be applied here.

 

Need a search option for searching for TPS like DLLs and providing the Function names of each call.  Also providing a count of each time a function / method is or is not called within a set of sequence files.

 

Hi,

 

It would be good if TS could allow to do a variable multiassociation. By this I mean developers can aassociate output from a module to more than one variable at one go directly from the Step Settings window, from the Module tab, as below.

 

Capture.PNG

The vi templates should use the NI reccommeded 4x2x2x4 connector

 

Also sequence Context should be a required connection and there should be some default documentation

For TestStand Sequence Analyzer:

if you open a sequence analyzer project file in sequence editor and make changes, Undo does not work.

Make Undo work for sequence analyzer project (.tsaproj) file changes.

 

Right now TestStand Sequence Analyzer only supports Relative Paths with respect to the .tsaproj file.

Change this so we can specify path as Absolute when selecting the file to analyze.

SeqAnalyzerSelectFile.png

See discussion here: http://forums.ni.com/t5/NI-TestStand/TestStand-and-LabVIEW-treat-polymorphics-with-instances-with/m-p/3064942#M47429

 

Say I have a LabVIEW Class, and that class contains a method that's a polymorphic VI, and that polymorphic has instances. If I set the instances' access scope to private, and the polymorphic to public, then I can force developers that use the class to use the polymorphic VI (and not call the instances directly). That's awesome. I like that.

 

but...

 

Say I'm building a TestStand API that uses a polymorphic and its instances as described above. I create a LabVIEW action step, with a Class Member Call call type, and I target my class. TestStand doesn't support polymorphic VIs, which means neither the polymorphic nor its instances show up in the Member Name list.

 

This means that, to support my LabVIEW users and my TestStand users, I need to create two separate APIs. The idea is to modify TestStand to allow for Polymorphic VI spacing between the LabVIEW action step type and the polymorphic member VIs.

When setting arrays, even multi-dimensional arrays, it is possible to initialize them in single assignment expression. For example, "Locals.Array = {1, 2, 3}" will re-define Locals.Array as a 1D array with elements "1", "2", and "3". This is essentially the same as C-style initialization syntax, which also supports structs.

 

It would be helpful if containers could be assigned in a similar manner. For example, the illustrated container:

 

Untitled.png

 

could be assigned completely using "Locals.Container = {True, 1, "foo"}".

 

Currently, that syntax generates a run-time error, "Expected Container, found Array of Containers".

 

The only scenario I could think of where assignment gets a little weird is with Object types, but in that case you'll have to be assigning Nothing, the return of a function call, or an existing object from another property - there's no way to define a literal value to assign there, but that's already the inherent nature of Object types.

 

My use case is often container initialization. There are several kludges around this - keeping an empty copy of the container and assigning it to the working copy to clear the working copy, individually listing out each parameter, and a few others. Another case is when it's useful to assign a constant to module parameter - it's debatable that may be bad form, but would still dramatically improves the ease of skimming parameters if it were implemented. It would be a slight bonus to Sequence adapter in particular, which cannot expand containers in the parameter list, as other adapter types can (go kudos Allow Sequence Adapter to expand containers in the module tab to fix that!).

Hello,

 

When you use LabVIEW action steps, using enum as parameters, the enum update will generate your step to require a reload.

 

This behaviour is OK when current enum values are updated .... and the steps use the modified values !

But when adding a new enum value to the enum, the reload should not be automatic.

 

=> This behaviour doesn't happend with rings ... 

 

Please make the enums works like rings for the LabVIEW actions steps reload !

 

Thanks a lot.

 

Manu.

We already have a collection of sequence files which contain a library of common functions that we perform for all tests which amount to hundreds and hundreds of sub-sequences. The sub-sequence from all the sequence perform a variety of functions which include utilities that are commonly reused in our tests.

 

 

Rather than re-writing these commonly used sub-sequences again and again in the different sequence files we are trying to re-use the same sub-sequences from all the sequence files in one place. "Code Re-use".

 

For the step types which also includes our own custom step types, when a post action property is invoked, there is no way we can use these commonly used sub-sequence from a different file.

 

The work around solution is to call another "Call Sequence" step in the same sequence file which then calls the sub-sequence from another file. Seems kind of cumbersome and awkward.

 

Don't know if NI has already looked at this or not.

 

See attachment of the Post Action Property.

Since our projects involve several developers working in tandem, we manage all project relevant data under SCM (Source Code Management). This way sharing and exchange of data between developers is much easier. To ensure that all developers can access and use the same TestStand Components – especially the language directory – the TestStand configuration directory is also under SCM control.

During the development process if a developer checks out the project folder, for example to „C:\ProjectX“, then the language folder is available under „C:\ProjectX\TestStand\Components\Language“.

 

TestStand ProjectX.jpg

 

In Teststand there is an option to point the configuration directory to a custom directory. To do this, go under the Station Options – Preferences – Configuration Directory,  and change the default path to our custom checkout path.

 

Station Options.png

 

However, even changing this setting, the language files are still get loaded from the default configuration path. In other words, assigning new custom path (which is „C:\ProjectX\TestStand\Components\Language“) seems to have no effect and the older default location (which is „C:\Users\Public\Documents\National Instruments\TestStand“) keeps getting selected instead.

This means, every developer has to copy the ProjectX TestStand folder into the default location manually a SCM update.

 

Suggested solution: make the whole default location directory changeable, to point to a custom directory. Thus during development of different projects, it is much easier to switch between the projects and to have the possibility to check out the code from a SCM to only one directory (and continue working with them).

Recently I've discovered misleading TestStand behavior.

 

In the case where in the sequence we have two steps with the same name and we'd like to refer to the SECOND step via its name like shown below:

 

screen02.png

 

TestStand allows us to do this, but during the execution, this reference is bind to the FIRST instance of the step:

 

screen01.png

 

In this caseTest D should fail showing result 12 not 10.

 

So, TS allows me to pick a step I want, however it looks like TS binds it to the first match on the list; so it is a lie.

 

In my opinion TS should either:

--don't let me do this, or

--implicitly bind it using unique step ID.

 

Anyway the current behavior (TS2014) is ambiguos and shall be treated as a bug.

It looks like there is no "gentle" way to access the results of the executed tests in ongoing execution during this execution.

Sometimes there is a need to access the test results during the execution, before the data will be committed to the database, and execution is still ongoing. The reason for that could be we can reuse the some data of the test in other tests, or we can use for example the status of the test to drive the flow in our sequence.

It looks like there is no other general way to do that as only described by Sasha here: http://forums.ni.com/t5/NI-TestStand/RunState-ProcessModelClient-How-to-access-the-results-from-the/td-p/2796658

So, theoretically, - please read Sasha post - we have recipe to access all results we want. However, problem with accessing the result list is that, that it is done via the index of the ResultList array.

 

It leads us to two problems:

 

1. the elements in that list depends on the step position in the sequence file, which makes the editing sequence almost impossible,
2. if our sequence contain loops the problem from the point above is even more impossible.

Therefore, the idea:

Please prepare the easy accessible, not index based as it is now, method (container?) which developers can access the Results containers of the steps on the fly during the execution.

Handler proposal 1:
Step name (binded as unique ID) + execution order number

Handler proposal 2:
Callers path + StepName +execution order number

 

where execution order number could be the handler which could be number 0 by default unless the step is called few times.

 

 

 


Other post: https://forums.ni.com/t5/NI-TestStand/Accessing-measured-data-from-further-steps/td-p/1144710

In thw Sequence editor, in Tools -> Update VI calls  - > Type of calls To Update -> Process Standard VI Calls another two entries could be added in the combo box. Apart from existing:

    * Report Problems Only (No Changes Will Be Made)
    * Reload Prototype if Modified
    * Force Prototype to Reload

These two options below shall be consider to be added.

    * Resave (recompile?) Code Module (VI)
    * Resave (recompile?) Code Module (VI) with all dependencies

I think this feature could be used in case like happened to me:


I had to update one of my global TypeDefinition (*.ctl) which is called by a lot of VIs from my project. When I did it, a lot of VIs were suddenly unable to load under RTE. So, manually I had to open every VI called by TS and do Open and Save (accepting recompiling) actions. I don't have to tellyou that was very boring and long task...

It would be nice to be able to log all requirement links during execution in the report. I think the option should be similar to "Include Attributes".

 

Currently, loging requirement links in steps is easy as additional result (preconfigured, just include it in step settings).

But logging requirement links in sequences or sequence files is not easily done. It requires either a dummy step which transfers the requirement list to the step requirements or an overelaborate expression in the sequence call step.

 

I think a drop down would be a good option:

"Log requirements list:

- For all steps

- For steps and sequences

- For steps, sequences and sequence files"

 

I am not sure if more options are necessary as empty requirement lists wouldn't appear in the report at all.

 

Norbert

Hi,

 

As in the subject: Get the focus out from the OK button in the Expression Browser window.

 

Now, when you write an expression in the Expression Browser and you'd like to go to new line by hitting Enter, instead of going to new line the Expression Browser closes down.

 

O course we can use Shift+Enter combination to get to the new line, but the habit is to hit the Enter key.

 

However, if the focus would be not on the OK button but inside of Expression window the problem would dissapear.

 

K.

Hello,

 

For the moment the runtime error handling can be managed by using ...

 

  • Runtime error options
  • Ignore runtime error flags
  • Manually, for action steps, by handling actions returns

It should be nice to add such a kind TRY CATCH block, in order to modify the error handling in a local section of a sequence.

 

TRY

    Steps ...

    Steps ...

CATCH

     case 35  // Error code = 35

     end

     case default // All other error codes

     end

End

 

Doing so, could be a way to handle runtime errors, in an other way that the global configured way.

 

Manu.