NI TestStand Idea Exchange

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

Hello,

 

CSV Input Stream allow to parse CSV files to input data into a Stream Loop for instance. By default, the separator is a comma (,). I use a non english version of Excel to edit a CSV file, and every CSV format write a semi-colon as separator (;):

A;0;0;2
A;10;30000;5
A;20;15;7
B;75;42;1
B;100;12;0

 

Using an expression, I am able to dynamically (at run-time) change the property SeparatorChar:

Locals.MyInputStream.AsCsvFileInputRecordStream.SeparatorChar = ";"

 

I think it could be more convenient to have a direct access to this parameter in the configuration pane, allowing also to check the content of the file  before execution with Parse Record Prototype funtions.

 

Best regards,

The property loader step allows the source location to be defined via an expression.  However, if that expression does not evaluate to a file on disk at compile time you get an error.  This isn't always desired behavior, for instance, when used in a plugin architecture.

 

Expression.PNG

 

The current workaround is to include a dummy file which could unnecessarily complicate the software & deployments.  A dummy file also has the potential to mask errors that should be presented to the user. 

 

The only validation TestStand does of the property loader source location file is that it exists.  It doesn't do any validation on the file contents.  So is there any benefit?  TestStand properly throws an error if the expression doesn't evaluate to a valid file.

 

Alternatively, a developer could deselect the sequence analyzer rule "Property Loader source should be proper", but this would disable it for all analysis not just the ones that use expressions

The TestStand API doesn't provide a simple, robust mechanism allowing developers to programatically run sequences outside of the ActiveX UIs.

 

On many an occasion I've wanted to wrap the following basic functionality:

  • Run a specific sequence file (with or without a [typically custom] process model)
  • Wait for it to complete.
  • Retrieve the result.

It's something I've needed to do in all of the following situations:

  • Integrating into a customer's existing framework
  • Integrating into my own automated test framework
  • Providing a simple API to a customer
  • Creating customized UIs that rely on UI messages and events rather than the ActiveX Controls

The solution I've ended up defaulting to in the past has been some variation on:

  • Start with the full-featured C# UI.
  • Scrape out all visible ActiveX Controls, and hide the window so that it's running in the background.
  • Integrate a TCP/IP (or equivalent) client into the application that has the ability to listen for requests and then implement them through the AxApplicationMgr.
  • Build a TCP/IP server assembly that launches the client application and exposes the necessary API for simple interactions.

The approach above is time-consuming, error-prone, and feels like a hack -- but given that TestStand does not expose any easy mechanism for simply running a sequence, this is what I've ended up having to resort to.

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.

When opening a version of TestStand which is not the current version, an error dialog shows. It would be helpful if this dialog included a button to open the version selector and/or a button to open the active version.

 

Example.png

 

I would like to enhance the TestStand Message Box step to add a 'Preview' button.  When selected, it would show how the currently configured message box will look when run.

 

I find that I am often switching around the text, fonts, and other aspects and would like to get that straightened out before run time.  I know you can run the step individually by selecting 'Run Selected Step' but that is tedious, plus you have to take into account preconditions and other functionality.  Normally, I have to remove the precondition (if there is one) as often the step cannot be run by itself.

 

So here is my example with the button added.  Not exactly sure what tab it would belong on.

 

 Message Box with Preview


 

Thanks,

 

Paul

 

I would like to see the possibility to add Tools (Menu > Tools) to Toolbars. See the recording below:

tools.gif

 

As you can see from Tools section I can select only "Customize". It could be great to have the ability to use custom tools when customizing toolbars and menus.

Please support triple-clicking like in LabVIEW or Firefox...

 

A double-click selects the word at the click position (OLD behavior),

a triple-click selects the whole text (like <CTRL>+<A>, NEW behavior)

 

Thanks!

right now with TestStand Sequence Analyzer utility, it is limited to analyzing a whole sequence file at once (or as much of it as you analyze before you hit the stop button).

However, if I have a long sequence file this can take quite a while, and I don't really want to wait.

Add a feature where I can select areas to analyze and have sequence analyzer just analyze those areas (for example -- select a few (sub)sequences in my sequence file, or a few steps within a sequence).  This way I can limit the area of my analysis to where I know I made changes (or where I know my biggest problems are) and focus on those and not waste time analyzing everything else. 

TestStand now works incredibly well with LabVIEW Classes, but there is a slight annoyance with the fact that you cannot call a Dynamic Dispatch VI with an empty Object Reference. The implication of this is that when you want to use a .lvclass, for every class instance you have to call a VI that does nothing more than return a wrapped class constant which then populates an Object Reference. Technically this is not a problem, but it means that your Sequence becomes very quickly littered with these VI's and it would be nice if there was a way within the LabVIEW module adapter settings for a class member call if when you first call a Dynamic Dispatch VI that, as within LabVIEW you can just pass in a class constant rather than a previously populated Object Reference.

 

The Problem - All the LabVIEW calls prefixed with 'NEW' are simply returning a class constant.

 

Setup.png

 

A Potentially more integrated way of doing this

 


The Dynamic Dispatch input has the option of either passing in an Object Reference, or a class constant.

 

Adapter Settings Modified.png

 

 

All compatiable classes are listed in the value box now - either as .ctls, or alternatively as .lvclasses. This could also possibly be more akin to what happens in labVIEW when you call a Class which has available overrides that it gives you a tree view of the class hierachy to choose from.

 

Another way you could do this is to have a checkbox adjacent to the 'Class Path:' or 'Member Name:' named 'First Call' or 'New' or 'Construct' that then changes the 'Derived Class

 

Adapter Settings Modified2.png

 

 

Hi all,

 

At times when I am filling out an expression, I'd like to be able to refer other developers to a specific sequence or step within the file.

 

I think it'd be useful to be able to add clickable "hyperlinks" to other steps or sequences within the same file.

ExpressionCommentLink.png

Would anyone else use this if it were a feature?

 

Thanks as always,

Mr. Jim

Hi all,

 

There are times, for instance, when I am paused at a breakpoint and I want to copy the full name expression of some deeply nested variable that only appears at runtime.

 

I wish there was an option on the context menu that would allow me to copy the full path of some variable.

 

For instance, in the following illustration I want to be able to copy the string

"Parameters.ModelPluginConfiguration.Plugins[0].PluginSpecific.RuntimeVariables.PerSocket[0]"

I've added a context menu option called "Copy Path", but maybe that's the wrong nomenclature.

 

Am I ignorant of some functionality that already does this? (Besides typing it in the watch window?)

 

Thanks as usual,

 

Mr. Jim

 

CopyVariablePath.png

 

Since not every path on the hard drive can be in the drop down list, and some may be higher up in the tree from paths that are in the drop down list (and some may not be there at all) it would be great if we could specify relative paths and/or environment variables.

For example:

TestStand Application Data (for Windows 7) = "C:\ProgramData\National Instruments\TestStand". But, I want to install a file structure starting at "C:\ProgramData". Currently, my only options are to write a custom command to copy the files over after install to some other directory that's in the combo box. But this isn't great because things can be easily left behind on uninstall.

With a relative path, I could specify the subdirectory of to be "..\.." and with Windows environment variable support, I could specify %ALLUSERSPROFILE%. Either would take me to "C:\ProgramData".

Having tried both of these in TS2010sp1 installer builds, neither of these seem to be supported, and it would be awesome if they were in the future.

Thanks!

Add feature to allow commands and sequences created in Tools->Customize->Customize Tool Menu->Add Tools Menu Item.
When customer creates a command or sequence in this section he would like to put it in the toolbar for quick access , TestTand does not allow this task. TestStand allows the toolbar customization for items that are TS native basically

When TestStand has a problem with a module, it provides a Red Exclamation mark to show detail on the problem. 

When you hove over the Red Exclamation mark, you get the details, sometimes with a file path to the detailed error log. 

 

Need a way to copy/paste the data from the details bubble. Better would be a hyperlink to the file location. 

 

Right now my workaround is: 

 - Screen capture while hovering over the red exclamation mark

 - Paste the screen capture in MS Paint

 - Re arrange the windows to show MS Paint & MS Explorer 

  - Navigate down file path to find the log file. 

 

 

mwatkins_0-1594408509848.png

 

When assigning a type to a property, the list of types is in an unordered pile. In the next release, can someone please alphabetize it?

 

(PS. Do not ask about the context of this image. It's not pretty. 😏 )

 

PileOTypes.png

I was in the middle of creating an ugly expression that was parsing a string and building a file path from other standard file paths and realized that I can clean up the expressing by creating a few local variables.  But then I thought do I really want to create these local variables in my sequence that only exist for the purpose of this one expression.  Then I thought, what if I can define a variable within the expression itself, kind of how a variable is defined in C or something similar.  It only exists during the evaluation of the expression.

Currently, if you create a step type and name it OnNewStep, it will execute when an instance of the step is created.  This is pretty confusing to new users - why don't we just have an OnNewStep substep type (like prestep, edit, etc)? Custom steps would then just be meant to be called manually using the Step.ExecuteSubstep() Method as documented in the help.

 

onNewStep.png

 

We could keep the "onNewStep" custom step functionality to maintain backwards compatibility with older step types. 

Hi there,

 

This post is just in order to know why there is a user interface available in LabVIEW language (simple or full-featured) suitable for sequential model and NOT for Batch and Parallel models, while these are available in CVI language ?

 

The customer, who is an allaince member and a famous TestStand user (MESULOG) submitted this idea because he had to translate code from CVI to LabVIEW, and thnik this would be a great thing to add to the next release.

 

Cheers,

 

Mathieu,

 

 

Hi,

 

I have a table in file globals (2D array).

Each column of the table has an associate variable in file global.

For i want my custom step to run N time which is the number of rows in the table.

In each iteration, i want to take each value of the row and assign the value to the asscoiated variable in file global.

so, i want to have a looping mechanism in the expression.

I guess it is not explicitly present right now. Right now, i use teststand API to update the variable.

It would be nice to have looping in expression. This will improve my custom steps performance.

 

Regards,

Muthuraman S