NI TestStand Idea Exchange

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

As NI has acknowledged (here, here) for more than 5 years, the Build .sql File button creates schemas with errors.  This is even true for the default schemas in the left of the dialog.  Would be great if NI would go ahead and correct this.  BTW - to create default tables in the meantime, a developer should use a SQL file located here:  <TestStand>\Components\Models\TestStandModels\Database

 

 

TestStand Database Options Dialog.png

To change the adapter settings every time instead of traversing from configure tools menu it would be extremely convienent to launch the adapter  configuration dialog box by just  double clicking on its icon available in the insertion palette.

 

Present implementation :

Left single click on icon sets it as the active adapter. (Requires 4 clicks)

New request :

Double click this to launch the adapter configuration dialog box.(Requires one double click)

 

 

Hi,

 

Expose the sequence file version number to be visible in the file properties. (select file in windows explorer -> right click -> properties -> details).

 

When for example we do right click -> properties -> details tab on .dll assembly we see:

 

FileVer.PNG

 

When we do the same on the .seq file we see:

 

FileVer2.PNG

 

Exposing sequence file version number can simplyfy checking  version file number. Now to chek it we have to open sequence file in editor.

 

 

It would be very handy to have a jump list of recent/pinned files for TestStand.  This could also include simple tasks like creating a new sequence file.

 

Current:

 

Current TS.png

 

Proposed:

 

Proposed TS.png

When I get called to look at an issue that has occurred with a test, the account logged into TestStand is typically a restricted user (i.e. Operator). Since the Operator account has very limited options, in order to really do much immediate troubleshooting I need to stop the test and re-run it in the Administrator account. At best this is inconvenient and inefficient if the spot the error occurred is late in the test. However, it is extremely frustrating when it's an intermittent run-time error and I can't do any real-time debug because Operator is logged in. The only real alternative I can think of (when the problem is intermittent) is to leave it logged in as Administrator so I can debug whenever it happens to occur. This is not really an acceptable practice in most cases.

 

It would be fantastic if there were an override that let's an Administrator provide the proper credentials to perform the desired task that would normally be off-limits to the Operator. The basic premise of this suggestion is similar to the functionality within Windows; if you try to connect to a secured location or perform a task that requires administrator privileges, a dialog box pops up asking you to enter authorized credentials.

 

I run into many situations where I wish this feature was present. The issue is not always within TestStand (could be a database connection issue, etc.), but it is TestStand that throws the error and in Operator mode the only option is "Run Cleanup". Significant time, effort, frustration, and efficiency could be saved if I could simply enter my credentials as an administrator to perform the tasks I need to do.

 

Regards

 

 

On an unrelated side note, I find it humorous that "TestStand" is considered a misspelled word when using the forum spell checker.  🙂

TestStand already has an awesome tool to change multiple steps at one time, but you have to select all of those steps first by clicking on them with the mouse and using the shift and ctrl click methods.  This works fine for a few steps here and there, but when you have 1000 steps you need to select that are scattered among 1500 other steps, it turns into a two day project.
 
I'd like to see something else that's different than the find/replace window that gives you the option to select and highlight the steps you just searched for in the sequence editor.  It could be a checkbox in the find/replace tool window that gives you the option to either search for the text and display the text matches in that window, or to select the actual steps in TestStand.
 
I just had this problem, and ended up creating some ActiveX code to automatically blast through my sequence and change hundreds of NumericLimitTest step types to Action step types.  That example code was attached to that thread.

I find myself creating arrays alot and I usually have the array already made in excel or note pad or another type of file in which the list might be around 20 or more entries.  Now in the past I've come up with a simple way to import the arrayed data from a file, but however i don't believe everyone is doing this and generally I don't need the file in which gets imported (usually a simpler version of the master).  So i suggest could we add the support to copy from excel or from notepad and paste special into an array.

 

TS_Paste.png

 

 

 Conclusion:

This idea might not be the best, fastest, or easiest way to import arrays from other programs, but the idea would be to find an easy way to import arrays.

 

Thanks,

 

Right now, you really can't reliably use anything other than a basic ASCII character set in TestStand, which means that some SI units (such as ohms) cannot be represented in their preferred way (with an omega).  It also means that you can't put non-english characters in your sequence file and reliably have them show up if your sequence file is opened on a different computer with a different language localization (which causes a huge problem if your customer demands support for non-English languages, and has more than one site -- that speaks a different language -- around the world).

 

Make TestStand support Unicode, so we can use the full greek character set for things like units, and so we can type characters from any language in our sequence files, and not have them change to a different character if we open them on a computer with a different localization.

 

TSomega.png

If you add an array as a parameter to a sequence, you have the option of setting the array bounds. If you set the array bound to [1..3] for example and call this sequence and try to access the array element [3] there is an array out of bounds error. It looks like arrays as parameters with the size N are always seen as an array with the bounds [0..N-1]. Maybe it makes sense to change this to the expected behavior!

Within the Teststand workspace it would be reall useful if the "Code Modules" under the sequence could auto-populate and also if it could display the filepath of the code module. That would make it much easier to keep track of what code a sequence is calling and where from on disk.

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.

Hello,

 

Today the UUT container and other Socket important informations are only available at run time and using long expressions. Smiley Mad

The access to these properties is not valid ate edit time but will be valid only at runtime. Smiley Mad

 

It would be nice to give a rapid access to these informations using a kind of direct pointer access. Smiley Tongue

 

Something like this would be nice ...

 

  • CurrentSocket.UUT
  • CurrentSocket.Error...
  • CurrentSocket.Status
  • CurrentSocket.reportText

Using always existing properties would also be nice, in order to use Expression intellisense ! Smiley Very Happy

 

Thanks a lot.

 

Manu.

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.

A Rendezvous has a fixed size. If size needs to be changed the rendezvous must first be destroyed and created again which results in an error for objects already waiting for the rendezvous. I suggest the size of the rendezvous might be incremented/decremented dynamically as in LabVIEW.

Even the "simple " operator interface is too complex for some applications.  It can also be somewhat intimidating to new developers,    

 

Many developers might benefit by having a "bare bones" (ie simplest possible) Operator Interface example to start with

 

 

Some test sequencing tools incorporate the idea of configuration based variant handling, where you could define different test variants (e.g. testing at ambient temperature, hot, cold), each variant having it's own set of test limits.

Individual test steps can then be assigned to the previously defined variants. By chossing the desired test variant, the according steps will be executed without having the need to implement additional logic within the sequence.

 

 

 

 

 

Hi,

 

Exactly like in the subject.

 

Now property loader can cope with the first sheet only. It would be good if it can cope with multiple sheets.

 

Kamil

When LV throws an error, it's all very easy to catch via callback and/or is auto propigated through the system to Runstate.SequenceError etc.so it can be detected.

 

When LV throws a warning... the data doesn't seem to go much of anywhere in TS... and unlike LV it doesn't propigate from step to step either.

 

I'd like to catch and log these warnings in my error handlers (naturally with different logic, but I don't want to lose the data either, it's important sometimes!)

 

from poking around, it looks like my options are:

(1) creating a custom steptype wrapper around all LabVIEW step calls,

(2) editing each VI called by TS manually

(3) some fun expression(s) in the 'add additional result' or 'post expressions' sectionsof each LV step, to create new variables in TS on the fly...  (or using a post-step callback to do the same)

 

It would be nice if the LV adapter / LV steptypes had some native way of catching this 'almost error' behavior and getting it into the report at least. I don't know if leaning on the error callback is the right answer, since, afterall, these aren't errors... but having a warning callback feels too LV specific...

 

How about a checkbox in the LV adapter, where you could specify 'treat warnings like errors' and then in the Error callback you could check to see if the bool was false, and punt as desired?

 

Is there something I'm not seeing that would be a better solution?

 

--Elaine R.

 

It is really easy to get a user in system by name via the current API methods

 

User = Engine.GetUser("loginName")

 

but if you want to (A) delete that user, or (B) update values related to that user (password/fullname/loginname) there feels like an unnecessary number of hoops that must be vaulted through related to digging through UserFile->userList->AsPropertyObject-> Get/SetPropertyObjectByOffset()

 

in both cases, I'm obliged to loop through the userList to find the element I want, and then fetch/set/delete it.

 

I would love if there was some shortcut in the API to take on this chore for me in a more efficient manner.  Something as simple as:

index = Engine.GetUserIndex("loginName")

 

would match behavior that already exists with Sequences and Steps so that I can efficiently know what array element I want to interact with based on the current name.

 

or if we wanted to get fancy we could have an:

 

success = Engine.UpdateUser("loginName", UpdatedUser obj) 

 

function that would go all the way and actually take a replacement user object and do the array overwrite & save the file for me... but I'd be content to do that myself if there was just an easier way to get the information I wanted in/out of the userlist having to maintain my own search list for users in memory feels tedious.  We already have GetStepIndex() and GetSequenceIndex(), so why not one for users too?

 

--Elaine R.