NI TestStand Idea Exchange

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

For simple operations would be nice to have possibility to drag and drop functions from LV functions palette directly (default step type can be Action)

 

Match pattern insert.jpg

Currently, the only way to pass parameters from a subsequence to a caller is by reference.  It would be nice if you could also pass parameters to callers by value to prevent the callers from modifying them.

I have a bunch of times that I need to round a numeric variable in TestStand

example: Locals.A = round(Locals.B)

 

However, it's actually more complicated than that because I need to round it at the Nth position after the decimal point (for example).   This means my expression becomes something like Locals.A = pow(10,-Locals.Digits) * round (Locals.A * pow(10,Locals.Digits) )   (for Locals.Digits == 3, this means that Locals=A becomes 0.123 when Locals.B is 0.1234)

This is a lot more code than I really want to write.  If I am doing the same thing in MS Excel, I just say $B5 = round($B4,$A$1) or something like that.  Notice how the digits of precision to round to is built into the round function.  I'd love if TestStand round function could be expanded the same way

Round(Number, [option], [Digits])

The output messages are a good way of sending status messages from the test solution to the end user.  However the control is not available as one of the controls that can be added to user interfaces.

OutputMessage.jpg

Can this control be made available to be quickly added to a UI and linked to the execution view manager.

Also adding some kind of API interface to be able to capture these messages to a log file would remove the need to implement any custom logging mechanisms.  If possible ability to open multiple file logs within the engine at the same time with each file given some kind of filter rules (for example Severity=”error” or ExecutionId=5).  If logs had to be attributed to an execution ID then they could automatically be closed when the execution ended, otherwise the user would have to manually close each file which could get forgotten and TestStand end up with lots of open file references.

Sometimes it is useful to be able to search for instances of custom data types. Unfortunately, there doesn't appear to be a way to do this in TestStand.  It would be really nice if you could search for instances of types in the Types window or perhaps through the Find/Replace utility:

 

Suggestion.png

 

Suggestion2.png

currently the behavior of the date function is (1) get a short ("MM/DD/YYYY") or long form date string ("Weekday, Month D, YYYY")with nice easy boolean input, (2) pass it N local variables to get all the discrete parts and assemble it myself with a bit of STR() and concatenation.

 

could we create a permutation on this date() function, (does one already exist) so that I can just pass it a %<> syntax string and have it format the current date to my desired format?

 

specifically, I'm looking for a non painful way of building a "YYYY-MM-DD" style string for a report (or even just DD/MM/YYY) without having to lug around 8 locals and a lengthly expression, or call into a LV VI. 

 

We have basic string format symbols available for the STR and VAL functions, why not for date? if anything passing this 1 parameter might save alot of folks creating a bunch of locals because they can just ask for the time item they want directly, and then VAL() the output text to get the numeric data if they need it?

 

it'd be awesome if the function supported standard DB format tags such as (http://www.w3schools.com/sql/func_date_format.asp) or failing that, was consistent with what LabVIEW's time format strings were.

 

Just a thought. Has anyone worked around this in a reasonable way?

 

--Elaine R.

TestStand is in dire need of a way to quickly and effectively find broken steps in long sequences.

 

I'm working on large sequence files which often call and utilize other long sequences. Needless to say, I often need to address steps which have become broken due to code rework. As of now (TS 2017), there are only two ways for me to know if a step will not run.

  1. Text is red within the Step Settings window.
  2. Sequence Analyzer reports an Error.

I would like to suggest a third option, one that would be more readily available than either of the other two options. If the step itself was highlighted, text reddened, or somehow otherwise flagged as an error, then the operator won't have to hunt through each of the step settings windows or the sequence analyzer results. All the operator would have to do is open the sequence file and notice that a step appears out of place.

 

It would be nice if sequences could also show if they have broken steps.

 

Included is an example of how this might look.

 

TS_errors_are_highlighted.png

Download All

There are some macros to specify report file name by expression in report options.

 

Specifying Report File Paths by Expression - NI TestStand 2014 Help - National Instruments
https://www.ni.com/docs/en-US/bundle/teststand/page/specify-report-file-path-by-expression.html

 

$(FileDate) contains speces in the string, e.g., "2015 12 15". If you want to delete space, you need to use $(FileYear), $(FileMonth), and $(FileDate) instead.

 

But there is no similar expression for time, i. e., there is only $(FileTime) and we do not have any macro such as $(FileHour).

 

SearchAndReplace function doesn't work for the macros. It is very helpful if we have $(FileHour), $(FileMin), and $(FileSec) as standard macros.

 

Before:

ReportOptions 01.png

 

After:

ReportOptions 02.png

 

 

 

Because of the way .NET applications and assemblies are invoked in TestStand they are a child process of TestStand.  This means that they share TestStand's resources.  For most applications this is not an issue but if the application or library being instrumented by TestStand is resource intensive this creates a significant problem.  In the scenario that served as the impetus for this suggestion we saw performance 1/10 that when running the target application outside of TestStand.

 

To correct this I recommend the .NET adapter architecture be changed or be able to be configured such that instead of directly instantiating target applications a call to create an object with a .NET adapter would create a separate process that consisted of a TestStand WCF client wrapper process that would host the target .NET process and communicate with the parent TestStand instance via WCF.

 

Here is a simple block diagram of the intended architecture:

 

 

TestStand_dotNET.jpg

It would be nice when entering in the Find: control to beable to pop open the Variable dialog (as in the expression editor) to select variable names. It could be linked to the Limit Search to: control. Like wise on the Replace control when that window appears. 

 

I know you have that drop down facility on this control but that only remembers what you have previously entered.

 

Find_Replace.png

Hi,
I would like to show the following problem with the Update Custom Data Type from Cluster tool when updating TestStand container type definition based on LabVIEW cluster.

 

TestStand creates new container type definition according to the LabVIEW cluster items order. The problem apears after you create the TestStand type definition and then reaorder LabVIEW cluster. After this change in LabVIEW, TestStand will not properlly reorder items in its definition. So for example:

  1. We have LabVIEW cluster { 1My String, 2My Numeric, 3My Boolean },
  2. Then we create TestStand type from it and we have { 1My_String, 2My_Numeric, 3My_Boolean},
  3. Now, we change order in LabVIEW { 3My Boolean, 1My String, 2My Numeric },
  4. TestStand do not see change,
  5. Then we add new item in LabVIEW { 3My Boolean, This is new, 1My String, 2My Numeric },
  6. Update in TestStand will be { This_is_new, 1My_String, 2My_Numeric, 3My_Boolean}.

 

So at the end we have:

  • in LabVIEW : { 3My Boolean, This is new, 1My String, 2My Numeric },
  • in TestStand : { This_is_new, 1My_String, 2My_Numeric, 3My_Boolean}.

 

IMO items order can be sometimes (if not always) important part of good style. That's why I would like to suggest to update also items order if you select Force Exact Match.

When TestStand launches, it determines the active LabVIEW version and copies the TestStand API VIs into <LabVIEW>\vi.lib\AddOns if not already present. (SOURCE)

 

I suggest there should be an additional step here and TestStand should call that LabVIEW version to mass compile these VIs.


Currently, the VI version remains unchanged which means when you open a LabVIEW code module which uses these, you'll sometimes find you have a 'dirty dot' due to unsaved changes because of the recompilation. It also means that you wouldn't be able to run a sequence using the LabVIEW Run-Time Engine until you've switched to Development and converted the VIs.

This is a minor annoyance but it would be nice if TestStand could cut out the additional version conversion step.

 

I do wonder whether the transfer of the TestStand API VIs into the vi.lib could actually occur when LabVIEW is installed if a TestStand installation is detected. Perhaps this might be relevant for other addons which existing LabVIEW installations have.

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.

Static enumeration value in a sequence call must be stated as <Enum(String enumType, [String/Number value])>. Please make it possible to select the enumeration directly.

 

 
 

Problem:

I create a model plugin and add some model callbacks to it.  Then I want to access those model callbacks from my client file.  I have to now add them to the process model so they show up in the list when I go to add callbacks.  I get that I can add it as a blue sequence and it will work   However, that is confusing to other developers if they don't know the plugin has the callback in it.  It is painful to change the process model every time I create a new plugin because the process model could be used on hundreds of machines whereas my plugin may only be needed for 1 or 2 machines.

 

Solution:

Option 1: Show all callbacks from any plugins in the callback dialog list

 

Option 2: create a configurable list of model callbacks.  Basically add any sequence files marked as model to the list and it will show all the callbacks from the sequence files in the list to the client, unless it cannot find the file in any search directory.  Then it wouldn't show.

 

Option 3: From the add callback dialog allow the user to browse to a sequence file which contains model callbacks

 

I think adding this functionality will greatly help in making the plugins more abstracted from the process models.  Just saying.

 

Cheers,

Expressions offer the following exponential and logarithmic functions:

 

   Exp()    -> Exponential (base e)

   Log()    -> Logarithm (base e)

   Log10()  -> Logarithm (base 10)

 

Computers always calculating digital. I have to handle binary values very often. Please add the following functions for calculating with binary values:

 

   Exp2()   -> Exponential (base 2)

   Log2()   -> Logarithm (base 2)

 

It is common to want to place a shortcut to a TestStand User Interface or even a TestStand sequence file on the Windows Desktop for each user of a computer.  This is done by placing a shortcut in the Windows All Users Desktop directory.  Currently, the TestStand Deployment Utility only allows you to create a shortcut on the current user's Desktop.  It would be really nice if the TestStand Deployment Utility allowed you to also create shortcuts on the Windows All Users Desktop so that everyone using the computer could see this shortcut on his or her Desktop.

I have extended the multi-numeric step type to use the string and Boolean comparisons.  We have several tests that require string verification to match the exact string and to verify the string format. Therefore I have added the ability for the multi-numeric step type to use string comparisons, including regular expression for string testing. 

 

 

  Multi-Measurement.JPG

MultiMeasurement 2.JPG

 

Currently you can right click the insertion palette and change the position / menu items that are shown / hidden in the insertion palette from a context based dialog box. (can also be done from the same box in the type palettes view).

It would be useful to be able to modify this programatically.

Currently you can only programatically play with the typepalettefilelist from the engine property object and insert new ones or remove old ones.

If a sequence file is loaded that has a step type in it that is not currently loaded by a type palette file, then it shows up in the insertion palette (as it should do), but if the testexec.ini file says this should be set to "hide" then it is hidden.

 

Thoughts

Thanks
Sacha

It would be nice to have an option to resize an array and have the new elements contain the same properties/variables as the first element. The resize array dialog box has a checkbox for "Empty". How about one for "Auto populate from first index" or something?

 

I currently do a copy and paste into each new element, which is no fun.

 

resize array dialog box.jpg