Passing arrays with Test Stand to DIO 96

Does anyone know the easiest way of sending data arrays from Test Stand to a DIO 96 using a LabView dll? I have a Test Stand sequence where I will need to set bits and read bits from a DIO 96 and am going to make a LabView dll. I guess I will need to pass either arrays to and from each port or numeric data to and from each port to a dll and also figure out how the status of the bits in the DIO 96 will be remembered.
What is the best strategy for dealing with Test Stand and a DIO 96?
Has anyone any ideas or example code?

Hi Steve,
   either approach is perfectly valid, and as you say, the activeX approach does remove some of the flexability of where you get the data from, however, what you've really described is two separate things, rather than two separate styles of approach.
ActiveX or direct passing are simply the means of getting data from and to your TestStand data space.
Step types are a convenient way of wrapping up particular layouts and functionalilty into a very easily re-usable TestStand development item. You would still need some sort of code module to put with a step type, so you're not necessarily limiting your developed code to the Teststand environment.
Making links through ActiveX allows you to make a solid definition on configuration type items, and allow for edit substeps. For example, the NumericLimitTest step type has step.limits.high and step.limits.low. Rather than pass those to the edit substep as a dll call (which is perfectly valid), passing the sequence context (which also allows you to run the termination monitor etc) allows for the fixed references to the fixed data layout of the step. Self containment like this works when the data sources are fixed as you get with a step type to use the edit substep, or the pre/post substeps.
Working on a dll call allows more re-use because then you concentrate on the data, rather than where it's come from, however, for large amounts of different sources, the dll prototype can become very complex and difficult to document. You end up having to pass lots of parameters and some of them you might not use.
The question you're ultimately trying to answer is "what does it do to my architecture?"
The holy grail of TestStand architectures is any step type can be used in any sequence in any sequence file with any process model under any operator interface. Now this isn't always practical, but the closer you get to it, the more flexibility your system as a whole contains, and the easier it becomes to add in or change the layout / functionality of the system
With this comes code re-use, but the extra development time it takes to make good re-usable maintainable code isn't re-couped until the 4th or 5th re-use.
If you want in this case your passing of the array to occur from many different places in your sequences, and you're building up lots of sequences to use them, then making a step type, and passing through the most convenient method you decide upon will make the implementation of the sequences easier to do.
If you only need it in a couple of ways, then you can do without the step type, and if it's not many different data sources, then pass by parameter to the dll through the function prototype directly, and use a regular DLL adapter to acheive it.
Mostly my 2-cents worth.
Thanks
Sacha Emery
National Instruments
// it takes almost no time to rate an answer

Similar Messages

  • Is there a way to create a database with Test Stand?

    Anyone know of a way to have Test Stand create a database? My company standard MS Office suite is Microsoft Access 2010, and TestStand does not support the .accmdb extension type(format), so I have to create new databases using old formats. I'm worried about backwards compatability down the road since good ole Microsoft doesn't seem to care about legacy formats.
    I'm still a beginner with databasing, so any suggestions would be greatly appreciated.

    TestStand 2012 SP1, and  we are using a modified Generic Recordset (NI). The problem we are having right now is that the Build SQL instructions are not creating the database tables the way we are configuring them from the "Statements" and "Column/Parameters" tabs under Database Options.
    What is happening is when we validate the schema, and drop all schema tables, it empties all the database tables, but then when you build using the TestStand generated sql file, we get errors(shown below) we are not understanding, and we can no longer write to the database and LabVIEW throws a "Data type mismatch in criteria expression" error like this
    "Possible reason(s):
    ADO Error: 0x80040E07
    Exception occured in Microsoft JET Database Engine: Data type mismatch in criteria expression. in NI_Database_API.lvlib:Conn Execute.vi->TSData - Query Actions.vi->Retrieve Test Data.vi->ARA-63 Data Miner.vi->ARA-63 Data Miner.vi.ProxyCaller"
    ==================================================================================================== > CREATE TABLE UUT_RESULT ( ID COUNTER CONSTRAINT TABLE_CONSTRAINT PRIMARY KEY, STATION_ID VarChar(255), BATCH_SERIAL_NUMBER VarChar(255), TEST_SOCKET_INDEX Long, UUT_SERIAL_NUMBER VarChar(255), USER_LOGIN_NAME VarChar(255), START_DATE_TIME DateTime, EXECUTION_TIME Double, UUT_STATUS VarChar(32), UUT_ERROR_CODE Long, UUT_ERROR_MESSAGE VarChar(255), PART_NUMBER VarChar(255), TSR_FILE_NAME VarChar(255), TSR_FILE_ID VarChar(64), TSR_FILE_CLOSED Bit, PART_NAME VarChar(255), PRG VarChar(255), Comment VarChar(255), Operator VarChar(255)) Command issued.
    > CREATE TABLE STEP_RESULT ( ID COUNTER CONSTRAINT TABLE_CONSTRAINT PRIMARY KEY, UUT_RESULT Long, STEP_PARENT Long, ORDER_NUMBER Long, STEP_NAME VarChar(255), STEP_TYPE VarChar(255), STEP_GROUP VarChar(32), STEP_INDEX Long, STEP_ID VarChar(32), STATUS VarChar(255), REPORT_TEXT VarChar(255), ERROR_CODE Long, ERROR_MESSAGE VarChar(255), CAUSED_SEQFAIL Bit, MODULE_TIME Double, TOTAL_TIME Double, NUM_LOOPS Long, NUM_PASSED Long, NUM_FAILED Long, ENDING_LOOP_INDEX Long, LOOP_INDEX Long, INTERACTIVE_EXENUM Long, CONSTRAINT STEP_RESULT_FK FOREIGN KEY (UUT_RESULT) REFERENCES UUT_RESULT (ID)) Command issued.
    > CREATE TABLE STEP_SEQCALL ( ID COUNTER CONSTRAINT TABLE_CONSTRAINT PRIMARY KEY, STEP_RESULT Long, SEQUENCE_NAME VarChar(255), SEQUENCE_FILE_PATH LongText, CONSTRAINT STEP_SEQCALL_FK FOREIGN KEY (STEP_RESULT) REFERENCES STEP_RESULT (ID)) Command issued.
    > CREATE TABLE PROP_RESULT ( ID COUNTER CONSTRAINT TABLE_CONSTRAINT PRIMARY KEY, STEP_RESULT Long, PROP_PARENT Long, ORDER_NUMBER Long, NAME VarChar(255), PATH LongText, CATEGORY Long, TYPE_VALUE Long, TYPE_NAME VarChar(255), DISPLAY_FORMAT VarChar(32), DATA Double, FORMATTED_DATA VarChar(255), CONSTRAINT STEP_NUMERICLIMIT1_FK FOREIGN KEY (STEP_RESULT) REFERENCES STEP_RESULT (ID)) Command issued.
    > CREATE TABLE PROP_NUMERICLIMIT ( ID COUNTER CONSTRAINT TABLE_CONSTRAINT PRIMARY KEY, PROP_RESULT Long, COMP_OPERATOR VarChar(32), HIGH_LIMIT Double, LOW_LIMIT Double, UNITS VarChar(255), STATUS VarChar(255), HIGH_LIMIT_FORMATTED VarChar(255), LOW_LIMIT_FORMATTED VarChar(255), CONSTRAINT STEP_NUMERICLIMIT2_FK FOREIGN KEY (PROP_RESULT) REFERENCES PROP_RESULT (ID)) Command issued.
    > CREATE TABLE PROP_RESULT ( ID COUNTER CONSTRAINT TABLE_CONSTRAINT PRIMARY KEY, STEP_RESULT Long, PROP_PARENT Long, ORDER_NUMBER Long, NAME VarChar(255), PATH VarChar(255), CATEGORY Long, TYPE_VALUE Long, TYPE_NAME VarChar(255), DISPLAY_FORMAT VarChar(32), DATA VarChar(255), FORMATTED_DATA VarChar(255), CONSTRAINT PROP_MULTINUMERICLIMIT1_FK FOREIGN KEY (STEP_RESULT) REFERENCES STEP_RESULT (ID), CONSTRAINT PROP_MULTINUMERICLIMIT1_FK FOREIGN KEY (PROP_PARENT) REFERENCES PROP_RESULT (ID)) Command failed with the following error...: Table 'PROP_RESULT' already exists. (-2147217900)
    > CREATE TABLE PROP_NUMERICLIMIT ( ID COUNTER CONSTRAINT TABLE_CONSTRAINT PRIMARY KEY, PROP_RESULT Long, COMP_OPERATOR VarChar(32), HIGH_LIMIT Double, LOW_LIMIT Double, UNITS VarChar(255), STATUS VarChar(255), HIGH_LIMIT_FORMATTED VarChar(255), LOW_LIMIT_FORMATTED VarChar(255), CONSTRAINT PROP_MULTINUMERICLIMIT2_FK FOREIGN KEY (PROP_RESULT) REFERENCES PROP_RESULT (ID)) Command failed with the following error...: Table 'PROP_NUMERICLIMIT' already exists. (-2147217900)
    > CREATE TABLE PROP_RESULT ( ID COUNTER CONSTRAINT TABLE_CONSTRAINT PRIMARY KEY, STEP_RESULT Long, PROP_PARENT Long, ORDER_NUMBER Long, NAME VarChar(255), PATH VarChar(255), CATEGORY Long, TYPE_VALUE Long, TYPE_NAME VarChar(255), DISPLAY_FORMAT VarChar(32), DATA VarChar(255), FORMATTED_DATA VarChar(255), CONSTRAINT PROP_RESULT_FK FOREIGN KEY (STEP_RESULT) REFERENCES STEP_RESULT (ID)) Command failed with the following error...: Table 'PROP_RESULT' already exists. (-2147217900)
    > CREATE TABLE PROP_ANALOGWAVEFORM ( ID COUNTER CONSTRAINT TABLE_CONSTRAINT PRIMARY KEY, PROP_RESULT Long, INITIAL_T DateTime, DELTA_T Double, INITIAL_X Double, DELTA_X Double, UPPER_BOUNDS VarChar(32), LOWER_BOUNDS VarChar(32), DATA_FORMAT VarChar(32), DATA LongBinary, ATTRIBUTES LongText, CONSTRAINT PROP_ANALOGWAVEFORM_FK FOREIGN KEY (PROP_RESULT) REFERENCES PROP_RESULT (ID)) Command issued.
    > CREATE TABLE PROP_DIGITALWAVEFORM ( ID COUNTER CONSTRAINT TABLE_CONSTRAINT PRIMARY KEY, PROP_RESULT Long, INITIAL_T DateTime, DELTA_T Double, UPPER_BOUNDS VarChar(32), LOWER_BOUNDS VarChar(32), TRANSITIONS LongBinary, DATA LongBinary, ATTRIBUTES LongText, CONSTRAINT PROP_DIGITALWAVEFORM_FK FOREIGN KEY (PROP_RESULT) REFERENCES PROP_RESULT (ID)) Command issued.
    > CREATE TABLE PROP_ANALOGWAVEFORM ( ID COUNTER CONSTRAINT TABLE_CONSTRAINT PRIMARY KEY, PROP_RESULT Long, INITIAL_X Double, DELTA_X Double, UPPER_BOUNDS VarChar(32), LOWER_BOUNDS VarChar(32), DATA_FORMAT VarChar(32), DATA LongBinary, ATTRIBUTES LongText, CONSTRAINT PROP_IVIWAVE_FK FOREIGN KEY (PROP_RESULT) REFERENCES PROP_RESULT (ID)) Command failed with the following error...: Table 'PROP_ANALOGWAVEFORM' already exists. (-2147217900)
    > CREATE TABLE PROP_ANALOGWAVEFORM ( ID COUNTER CONSTRAINT TABLE_CONSTRAINT PRIMARY KEY, PROP_RESULT Long, INITIAL_X Double, DELTA_X Double, UPPER_BOUNDS VarChar(32), LOWER_BOUNDS VarChar(32), DATA_FORMAT VarChar(32), DATA LongBinary, ATTRIBUTES LongText, CONSTRAINT PROP_IVIWAVEPAIR_FK FOREIGN KEY (PROP_RESULT) REFERENCES PROP_RESULT (ID)) Command failed with the following error...: Table 'PROP_ANALOGWAVEFORM' already exists. (-2147217900)
    > CREATE TABLE PROP_BINARY ( ID COUNTER CONSTRAINT TABLE_CONSTRAINT PRIMARY KEY, PROP_RESULT Long, UPPER_BOUNDS VarChar(32), LOWER_BOUNDS VarChar(32), DATA_FORMAT VarChar(32), DATA LongBinary, CONSTRAINT PROP_BINARY_FK FOREIGN KEY (PROP_RESULT) REFERENCES PROP_RESULT (ID)) Command issued.

  • Using Testexec user interface with test stand

    Hi,
    I want to use the testexec UIR (from cvi) with my Test Stand sequence. My goal is when this operator interface is opened directly, the specified sequence opens automatically.
    Any suggestion!
    Best Regards,

    You can approach this 2 ways:
    1- Hard code the name and path of the sequence file into the CVI code and rebuild testexec.exe.
    2- Associate .seq files with testexec.exe such that when someone clicks on an .seq file it opens in the UI.  Then place a shortcut to your sequence file on the desktop and have users start it by clicking on that.
    I recommend 2.
    As a side note: By default a UI will open the last sequence file that was opened.
    Regards,
    jigg
    CTA, CLA
    teststandhelp.com
    ~Will work for kudos and/or BBQ~

  • IS Test stand support Code written in VC++ ?..IF SO How to integrate with Test Stand

    IS Test stand support Code written in VC++ ?..IF SO How to integrate with Test Stand

    If you have LabWIndows-CVI, you may also look at these threads: (may be useful for TestStand)
    http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=135&HOID=5065000000080000003C1F0000&UCATEGORY_0=_318_&UCATEGORY_S=0

  • Windows Network Drive Mapping properties not being associated with Test Stand deployment

    I recently upgraded a TestStand/LabVIEW (Developer Suite 2012 DS1) deployment project from a Windows XP Pro OS to Windows 7 Enterprise. Now, when I run the Test Stand deployment, Network paths that used to be hard coded into my File Globals are no longer recognized. I re-wrote the vi's, and put "File Dialog" pop-ups so that I could see what path the control is being opened up at, and what appears to be happening is the Network Drive that I am defaulted to is appearing as if it is "disconnected" in the navigation window, and the path is defaulted to my root directory. I can navigate out to my network path no problem from the navigation window, and after the first time I perform this user action, subsequent executions open up to the path I have hard coded in my Sequence File Globals. However, if I reboot my host computer, I again have to go through the exercise of manually pointing to the proper network location? If I use the Windows Explorer to check Mapped Networked Drives, everything is properly mapped and connected.
    Has anyone ever seen this behavior? 

    Hi ATE Dude 22,
    I have not come across this problem before but here is a document from MSDN and one from NI which discuss file path conventions. From what I've seen, UNC is also accepted under Windows XP so I would advise using it for your file globals.
    Cheers,
    KyleP
    Applications Engineer
    National Instruments

  • Passing arrays with Call Library Function does not work after application builder

    Calling a DLL with Call Library Function which requires an array of data works correctly in Labview, but after building an exe with application builder, the call no longer works.  Dereferecing the pointer in the DLL retuns all 0s and not the actual values.
    Solved!
    Go to Solution.
    Attachments:
    TEST.zip ‏28 KB

    I did not run your code because it is a little unclear to me what it does.
    Two things:
    First, is the DLL you are calling the DLL-ified version of PopUpNames.vi? Then the problem is likely that the panel is not being built into the DLL.
    When LabView builds an application / dll, it strips the front panel and block diagram from all VIs that it doesn't think need to show a panel at run time. This reduces file size and increases code security. The App Builder's panel inclusion logic can be overridden by Build Specifications -> Source File Settings -> Remove front panel. A better method is to put a property node on a control in a window you want to show marking it "visible"; this is sufficient to tell the App Builder it should keep the panel.
    Currently Source File Settings shows "no dependencies" (clearly incorrect---another evil side effect of Express VIs I guess) but if you change the settings as shown below to keep ALL panels, one might hope the App Builder can figure it to keep the panel when it deconstructs the Express VI. (Alternatively convert the Express VI into a regular one.)
    A second comment: I am a bit flummoxed at the larger goal here. You are calling LabView DLL from LabView, which doesn't make a lot of sense, so I assume your larger goal is to call LabView from C or vice-versa. In that case be aware that your DLL is x86 (32-bit) but you are passing 64-bit ints as your pointers. In this case it is 32-bit LabView with 32-bit pointers in embedeed in 64-bit containers calling 32-bit LabView with 32-bit pointers in embedeed in 64-bit containers, so it all works, but if your going to call this from C or whatnot you're going to have to follow that same design.
    When calling C code the LabView Call Library Function does have a "unsigned pointer-sized integer" data type that always appears to be 64 bits in the dev env but which actually passes a 64 or 32-bit int to the DLL depending on the environment. The "pointer sized int" has to be 64 bits in the "LabView" part of the code because LabView's strong typing requires the data type to be determined at compile time. Casting all pointers to the largest data type in LabView makes it possible to write platform-independent code, but down at the Call Library level you still have to put the right number of bytes on the stack.

  • Merge Two Access Databases created with Test Stand

    Hello All,
    I am trying to merge 2 databases using LabVIEW.
    When I read the values from the first database some of the numeric fields in the table are NULL.
    When I try to write to the second database, those values are being written as 0 if integers and 0.0000 if doubles.
    Is there a way to write those values as NULL in the second database if they are Null numeric fields in the first database?
    Thank you in advance,
    Stoimen

    Hi Stoimen,
    I am not sure how the flow of your program goes, but you could use the Database Variant to Data to cast the database variant to another type.  This will accept the NULL values from the database and from there you can manipulate them how you wish.  This tutorial may also be helpful in explaining the Database Variant to Data function in LabVIEW, specifically this section: "The null type arises naturally when working with databases (fields in a record are allowed to have null values), so Database Connectivity Toolkit has a special Database Variant to Data function that handles null values, but detecting them requires several steps."
    I hope this helps!
    Kim
    Applications Engineer
    National Instruments

  • Is there a max number of parameters that can be passed to a C function in test stand v. 1.0.1

    I have had an issue with test stand version 1.0.1 (yes, I know; it's quite old) and calling a C function thru an action step. when I call this function with 18 parameters, it seems to hang. I have called a function with 16 and it seems to work. Is this a limit of the software? I am calling the function from a windows DLL that we've created. When I try to pull the function from the dll into test stand I also get a { error...but I get that in the other function's call and it seems to work fine. Any ideas?

    ok, upon re-reading what I posted I can clearly see your confusion. haha. I think there are two separate issues.
    1) Are there a maximum number of parameters one can use when calling a C function from a DLL? Yes, i'm trying to call a C function from test stand.
    2) when I select the "module" tab, and select which DLL contains my function, the prototype has no information associated with it (by clicking the reload prototype button). I'm not sure why, as I'm using a declspec to send the function information out of the dll, but that's another topic. So I click on the source file tab and point the window to the .cpp of my function (within the DLL's project workspace) and when it begins to parse the file, I get an error about mis-matched curly brackets and if I wish to continue, and skip the rest of the parsing.
    I click "OK" and when I go back to the module tab, I am able to see all my functions, along with the parameters in the drop down menu below. I fill in all the parameters and everything looks ok; no syntax errors, or anything else seemingly suspicious. I then run my test stand code and when I get to the step which calls this function, the system hangs and cannot proceed.
    Any thoughts as to what might cause these issues? 

  • Batch Sequence Shutdown Test Stand Randomly

    Hi ,
    I have a problem with Test Stand in one of my projects .
    I'm using TS 4 & CVI 9.1 . TS is using CVI DLL .
    The software is using parallel Device checking for 30 cards , at 25c , 75c and -15c ( temp ).
    While checking 9-10 evrey thing works fine and well buy in 11 and so on TS crashes randomlly about 1 of 10 times at the crash the is no TS message only Windows not responding message .
    My main idea was a Resource leaking at the CVI code but i checked it very carefully in addition i cant see the resource trekking in dll mode .
    Is there any tool , even windows tool or some software i can use to track my memory while working with both programs !? or you have another idea ?
    Thank you .
    Kobi Kalif
    Software Engineer

    There are two possibilities for updating a local in one sequence from a subsequence which that sequence calls.
    1) Pass the variable as a "By Reference" parameter to the subsequence. Then in the subsequence access it with the lookupstring Parameters.MyParameter. To add a parameter to a sequence, simply insert a variable under the Parameters group. Parameters are passed by reference by default (which is what you want). They can also be passed by value (i.e. a copy to which changes don't affect the original) by changing the setting by right-clicking on the variable and unchecking the by reference setting. Using parameters like this is very flexible and future proof. You can even call the same subsequence from multiple sequences and the subsequence doesn't have to worry about who's calling it. Also it doesn't matter what the name or location of the variable is in the caller, the subsequence just always accesses the variable as its parameter. When you specify the sequence call to call the subsequence you specify what to pass for the parameter.
    1a) A variation of this which can help make your code easier to extend is to use a Custom Data Type as the type for your parameter. Make a Custom Data Type that's a container than contains the variables you want to pass. When you need to add a new parameter in the future you can just add it to your Custom Data Type and then you don't have to update any of the places where your subsequences are called to pass the new value. If you go this route I recommend storing the Custom Data Type in a type palette file and keeping it always backwards compatible as much as possible (only add variables, don't remove or change existing variables).
    2) Another way which is less flexible is that you can use RunState.Caller.Locals.foo to access a local variable in the sequence which is calling the current sequence. This creates an interdependency between the two sequences though which can lead to code maintenance problems because someone could change the calling sequence's variables, not realizing a subsequence depended on the variables they are changing.
    Hope this helps,
    -Doug

  • How To Trigger Test Stand To Assign Step = Error

    Hi everyone, I have a LabVIEW VI step in my sequence and I have an abort button the user can select to abort the user interface VI.  I want the "abort button" boolean to pass back to test stand that abort button = TRUE and I want the sequence step to be set to an "ERROR."  Is there a command to send to the Test Stand Engine to flag this step as an error?
    Thanks so much!
    Solved!
    Go to Solution.

    Hi
    Glad It was helpful.
    There are two ways in which you could achive this..
    1. Use this expression: RunState.Engine.TerminateAll()
    But be wary, this will terminate all the current excutions and the report indicates the status as "terminated"
    or
    2. Use this expression: RunState.Execution.Terminate()
    or
    3. You can add a Goto step (comes with teststand. You can find it under Flow Control section of the insertion palette) and select Cleanup as the destination step.
    This way you can run some clean up steps before closing the execution. (eg, Shutting down any hardware, etc.,)
    Deepak

  • Test Stand async Task bool

    I'm trying to learn more about NI Test Stand and calling a .NET Method in a test sequence.  I reviewed and understand the basic examples where you can call something like below...
    public bool DoSomething(out string result, out string error) { //...}
    I have a third-party libary and it includes some async Methods that must be called using the async/await feature that was introduced in .NET 4.5.  When using async, you can not use the out keyword in arguments, so I would have to modify the Method above to something like this...
    public Task<Tuple<bool, string, string>> DoSomething() { /.. }
    So my question is... does anyone know how to call into a .NET library with Test Stand and get the values that are returned via the async Task?  Any basic examples are appreciated.
    BTW, it does not have to be complex like above.  If you can explain something like Task<bool>, it would help, as well.
    Thanks.

    I haven't tried this specific case and am not familiar with the Task API, but you should be able to store the return value of that method in a TestStand Object Reference variable. Then, in a later step, select the class Task<Tuple<bool, string, string>> from your assembly and use the reference you got from the previous call as the class object and then just access the various methods and properties of that class.
    Hope this helps,
    -Doug

  • Good NI Test Stand Examples For a Beginner (Using LabVIEW)

    Hi everyone, I am new to using NI Test Stand.  I have gone through the "Getting Started with NI Test Stand" and "Using LabVIEW with Test Stand" documents.
    I know in the NI Test Stand Example folder there are many examples.  Are there any examples that cater to new users to Test Stand?
    Where can I find good examples (demos) for developing test sequences, local variables, parameters, etc...in Test Stand?
    Thanks so much!

    If you have the SSP you could access online training an do the exercises on the training.
    but the examples is a good way to getting started. just play around with all the options you have.

  • Test Stand: TestStand Engine Process

    I'm looking into an application (written by someone else of course) which calls a "Test Stand Engine" to execute a test.
    First thing is what is this "Test Stand Engine" ?
    I have been using Test Stand GUI (Test Stand Sequence Editor) to execute such test cases in the past so I never knew what do they mean by Test Stand Engine.
    The problem i'm looking into is simple.
    They say that Test Stand Engine is being executed as part of a thread and my task is to make it execute in a process.
    But I Can't find the actual call to test stand engine itself.
    I'm on Windows box and all I can see in Task Manager => Process is TSAUTO~1.EXE which is same whether I run GUI or my application with Test Stand Engine.
    What should I look for in my application code to find the "Test Stand Engine"?
    Any Help?
    Nirvana

    Hi,
      just to clarify that - there's two approaches to making an operator interface with TestStand.
    1) Use the TestStand UI controls and manager controls or 2) Go directly to the TestStand Engine.
    Option 1 actually overwraps the calls to the TestStand Engine anyway to make it easier to implement an operator interface. That's not to say that going directly to the TestStand Engine  ActiveX automation server is difficult, but you have to do certain things, like shutting down in a sepcific way.
    Your best other resource is the TestStand help (rather than the bookshelf pdf's) and have a look at the topic about "Writing an application with the teststand engine"
    As Dennis says - you might get more help on the TestStand forums rather than the LabVIEW ones though.
    Thanks
    Sacha Emery National Instruments (UK)
    Message Edited by SachaE on 02-22-2007 10:26 AM
    // it takes almost no time to rate an answer
    Attachments:
    teststandHelpSection.JPG ‏55 KB

  • How can I pass a variable from Test Stand to CVI by reference

    Hi!
    I can't to pass numeric or boolean variable from Test Stand (for example: FileGlobals.StopFlag) into the step (CVI function).
    Function prototype: 
    void __declspec(dllexport) __cdecl PC2_WaitWhileResponceAppear(tTestData *testData, tTestError *testError, int *iStopFlag).
    When variable has bin changed I can't see this change from my function.
    CVI 2010, Test Stand 2010
    Can anybody help me?

    Hey Rombar,
    It is certainly possible to pass variables by reference; for example, if you go to <TestStand Directory>/Examples/Demo/C and open the computer.seq file, you can see one of the example sequences that uses CVI modules. If you click on one of these steps, you'll see that some of the parameters, such as the error information, is passed with pointers. This is a pass by reference.
    To help narrow this down, it'd be good for us to figure out a few things about how the code is run. First, if you go to Configure > Adapters, select the CVI adapter and choose Configure, you can see options for this adapter. Do you have it configured to run in an external instance of CVI or as an in-process call?
    Also, if you're wanting to see a change made in TestStand in your external code, this makes me think that you're wanting to run the code and then continue to execute your TestStand sequence while the code runs. How did you configure this behavior? For example, are you calling this code as a separate sequence in a new thread, or are you using another method to run this code while the sequence continues to run?
    Finally, if we could see a screenshot of how you're configuring the parameters on the TestStand step, that might be helpful as well.
    Daniel E.
    TestStand Product Support Engineer
    National Instruments

  • Test Stand: How does parameter's value is passed as command line argument?

    Hi All,
    This is my 1st Q on this board.
    I'm using Test Stand Sequence to call a subsequence where I call an executable file and passing few arguments to it.
    SuperSequence.seq => SubSequence.seq
    In SuperSequence.seq I have 3 parameters and their values are specified
    Parameters
    Name      Type    Value
    ==============================
    Name      string    "Nirvana"
    Address  string    "London"
    Tel           Number "123456"
    In SubSeq.seq I call and EXE with following parameters
    Executable Path Name: myApp.exe
    Argument Expressxion:  "Parameters.Name  Parameters.Address  Parameters.Tel"
    In the application I receive parameter names instead of their values?
    E.g. I recevie Parameters.Name  Parameters.Address  Parameters.Tel in myApp.exe as arguments.
    How do I make the values to be passed to myApp.exe instaed of parameter names?
    Cheers
    Nirvana

    Hi,
    You have to make a string containing the arguments that you require
    Try the following expression
    Parameters.Name  + " " + Parameters.Address + " " +Str( Parameters.Tel)
    Regards
    Ray Farmer
    Regards
    Ray Farmer

Maybe you are looking for