Attaching User ComboBox to TestStand API

I am using a custom interface that gives my application an Office 2003 look incliding the dockable panels and toolbars, I would like to use the ComboBox controls that I normally use rather than the NI ComboBox that comes with TestStand, How do I connect those custom Combo boxes to the TestStand API?

There is no simply way to connect non-TestStand UI control to a manager control such that it behaves the same way as a connected TestStand UI control. Instead, you must implement the desired behavior in the usual way you program your controls.
This means you have to use the methods and events that your combo box offers to add and remove items and to respond to user selections.
To obtain the data to populate the combobox or to perform an action in response to a user selection, you might need to call the TestStand API. Which methods you call would of course depend on what you are showing in the combo box.

Similar Messages

  • Teststand api Creating/deleting Users

    Hi,
    I am using Teststand API with Labwindows and i have a problem with creating/deleting Users.
    In fact, to explain easily my problem when you use the full-featured Teststand  with the "CreateDeleteUsers.seq" sequence and create a user, then close the full-featured Teststand, you loose your new users in the previous opening.
    Whereas, with the Teststand 4.0, with the same "CreateDeleteUsers.seq", when you close, it propose to save the changed file "UserManagement" (Users.ini) and everything's fine...
    And as i am using a Labwindows project to login/logout to teststand, i am using TS_... functions i can't find a way to save or to have this save popup to keep my users.
    I hope that i am clear, and that someone will be able to help me ! 

    Hello,
    As you could see in the following KB: How Can I Edit and Save Changes for the Current User? you have to get the users file as a PropertyObjectFile as it's done in the CreateDeleteUsers sequence, and then use two methods, IncChangeCount() wich is also already done in the example sequence, and the SaveFileIfModified().
    See attached file below for the example sequence changed with the file saving.
    Regards,
    Olivier L. | Certified LabVIEW Developer
    Attachments:
    CreateDeleteUsersAndSave.seq ‏11 KB

  • TestStand API terminate all notification

    I've developed a LabWindows based user interface using the TestStand UI controls and the TestStand API. I have a sequence file that has several cleanup steps, some of which take a while to finish. One function of the user interface is an Emergency Stop button. When this is pressed, an Engine.TerminateAll is issued via the API. The test fixture has 8 sockets which are using the Batch Model TestUUts entry point. Is there any easy way via callback or other means of knowing when all the terminations have completed. I would like to display a popup telling the operator to wait while the cleanup steps are being carried out. I also want to disable the START button and reenable it when the terminations are complete.
    I am launching the execution with TS_EngineNewExecution and I can get the id. I tried to wait until I saw this execution end with the ApplicationMgr  EndExecution event or the Execution VIew Manager EndExecution event but I saw a bunch of exection id's except the one that I was looking for. It may be my fault but I wanted to ask and see what is the best approach for what I am trying to accomplish.
    John

    Hey John,
    Your method will work, and your assumptions are partially
    correct.  If you look in the Batch Process Model, inside of the
    Cleanup Step Group of Test UUTs there are steps that tell all
    TestSocket executions to stop.  There is also a wait step that
    forces the Process Model execution to wait until all of the TestSocket
    executions have terminated. There are going to be multiple EndExecution
    events because it is going to occur for each execution that finishes
    whether it is the Process Model execution or one of the TestSocket
    executions. However, the Process Model will always be after all of the
    TestSocket executions have completed. 
    Another thing to keep in mind is that this is only happening because it
    is built into the process model.  Normally if you spawn off a new
    execution it is separate from your original execution, and the new
    execution would not terminate by calling the terminate method on your
    original execution.  You would have to either do a terminate on
    each execution or use the terminate all method of the application
    manager. Hope this helps to clear things up a little.
    Pat P.
    Software Engineer
    National Instruments

  • Import User List in TestStand 1.0

    Looking for a solution to import users list from a text file using TestStand 1.0 ?

    [Rough translation then...]
    Hi,
    There are 2 solutions with your problem
    1) Knowing that the user details are stored in the file users.ini (cf..\Teststand\Cfg), you can format your text file to match the tags used in the .ini file, and drop this in as a replacement.
    [How you're going to handle the passwords which is held in another encrypted file though is another problem!!]
    2) You can also use TestStand API which exposes the User classes, UserList. However the API one of TestStand 1.0 being less complete than that of the versions 2.x and 3.x you will unfortunately be limited in the utility you could build.
    [The main lacking thing is the ability to delete users]
    Sincere greetings
    [End translation]
    Sacha Emery
    National Ins
    truments (UK)
    // it takes almost no time to rate an answer

  • How do you get a handle to a TestStand API SequenceCallModule Object?

    I am trying to programatically specify the SequenceName for a sub sequence, created using the TestStand API called from LabView.  SequenceName is a property of the SequenceCallModule object but I cant see how to get the object handle.
    Can anyone help?
    Regards
    Steve
    There are 10 types of people in the world that understand binary, those that do and those that don't.

    Hi,
      you can actually do this. I was speaking to Steve yesterday on this :
    starting with the handle to the appropriate step (I've done it in the attached sequence file in TS, but should translate nicely to LV)
    so I use the sequence to get the step by name
    I can then get the step.module
    then using the TESTAND ADAPTER API (and not the Teststand API)
    I can use the module returned above with the SequenceCallModule class from the TestStand AdapterAPI then. (you have to know ahead of time what the appropriate module / adapter type is otherwise it will have problems)
    Hope that helps
    Sacha Emery
    National Instruments (UK)
    // it takes almost no time to rate an answer
    Attachments:
    3_0 using adapter specific sequencecallmodule.seq ‏39 KB

  • Teststand API in LABVIEW

    Hello Friends,
    In the sequence editor , i am able to get the TestStand API  RunState.Step.Module.AsLabVIEWModule.RemoteHost = ""
    But i am not able to get the same Teststand API properties in Labview with sequence Context. Herewith in attached the image for your ref.
    Anyone knows how i can get the above teststand API in LABVIEW.
    Thanks
    Prithivi
    Attachments:
    Labview Teststand API properites1.JPG ‏51 KB

    Hi Prithivi,
    you have to cast the Module Reference to LabVIEWModule Type before you can use it. Following document will be useful to you:
    How Can I Programmatically Access Information about a Code Module that a Step Executes (e.g. Name, Path)?
    http://digital.ni.com/public.nsf/allkb/ADC6909C20E27D4886256E94005424E3?OpenDocument
    Regards
    MY
    Attachments:
    LVModule.JPG ‏17 KB

  • TestStand API External Component Modified Since Last VI Save

    I'm using TestStand 3.5 with LabVIEW, and deploying my code across multiple stations.  The code is managed by Perforce (source code control).  I'm keeping the stations identical by installing NI software from the same CDs (which I'll refer to as an "Original Station"), but it seems that over time the TestStand API will somehow be externally modified ("Modified Station"), which causes LabVIEW to recompile the VI.  The Explain Changes dialog box states "VI recompiled.  External component modified since last VI Save."  If I save the recompiled changes on a Modified Station and submit the changes, an Original Station opening the VI will then recompile VI, stating that an external component has been modified since the last VI save.  If I resave the VI on an Original Station, then the next time I open it on a Modified Station the recompile will occur.
    This is problematic, because there will be a performance hit if LabVIEW has to recompile when opening VIs.  In addition, it makes debugging difficult, because LabVIEW will prompt to save changes on all the VIs if they were saved on a different station state.  Not to mention the unnecessary copies made in the source code control to maintain the history of the recompiling.
    My current solution is to reinstall TestStand on all the Modified Stations.  I set any TestStand strict typedefs that I use to non-strict typdefs, mass compile the TestStand addon folder in vi.lib, and then the station becomes an Original Station again.  Overtime, it will modify itself and turn into a Modified Station.  Since these stations are at multiple sites, it is very inconvenient to manage.
    My questions are the following:
    1. What is causing this external modification?  Is there anyway to prevent it, so that the installation and code will not get modified so that all will remain Original Stations?
    2. If it is not preventable, how can I force all stations to become a Modified Station, so at least they are all the same?
    I've attached LabVIEW 8.5 VIs that demonstrate the VI differences.  I've observed this behavior in LabVIEW 7.1 and 8.2 previously.  If anyone also experience this behavior or has a work around, please post to this thread.  If NI has insight on what is causing this behavior and how to prevent it, it will help me out greatly.
    Thanks!
    Attachments:
    test_recompile_original_lv85.vi ‏7 KB
    test_recompile_modified_lv85.vi ‏7 KB

     Wilbur,
    Do you have more than one version of TestStand or LabVIEW on the stations?   Switching the active version of TestStand changes the registered version of the TestStand API which I believe is the external change that forces a recompile.  If version switching is the cause of the problem you could prevent these changes by not sharing any TestStand VIs between different versions of TestStand.  If each version of TestStand has its own VIs then a VI is compiled against one and only one engine version.
    -Rick Francis

  • How to change Analyzer user password with Administration API?

    Hi,<BR>I would like to change Analyzer user password with Administration API. Can someone post some sample commands to do the task?<BR><BR>I would just like to write an application to change end user's Analyzer password.<BR>As I see I would need to do the following:<BR>1. login with admin userid/password<BR>2. execute some method to change password for required userid. I think the input parameter should be userid (of the user I would like to change password) and new password (the new password for the user).<BR>3. logout<BR><BR>Can someone post some sample code (commands to execute)?<BR><BR>Thanks,<BR>grofaty<BR><BR>My system:<BR>Analyzer Server 7.0.1.<BR>Essbase server 7.1<BR>Windows XP SP2<BR>

    <blockquote>quote:<br><hr><i>Originally posted by: <b>knightrich</b></i><BR>Hello Mr. Jordan.<BR><BR>I would like to exchange some thoughts about "housekeeping" Analyzer reports in preparation for migration from Analyzer 7.0.0.0.01472 to 9.x:<BR><BR>...<BR><BR>Did you solved such a problem or do you have an idea if it could be solved with the Admin API methods?<BR> ...<BR>Migration from 7.00 to 9.x: As we heard last week the "Migration Wizard for Reports" in 9.3 should be able to migrate reports. Do you have experience or more detailed information about that Wizard?<BR><BR>Many thanks in advance<BR><BR>knigthrich<hr></blockquote><BR><BR>knighrich, <BR>I'd like to be more help, but I have no experience with System 9. I did substantial cleanup when we migrated from Analyzer 6 to Analyzer 7.1, and even more cleanup when moving up to 7.2, but our installation is smaller in scale than yours and we didn't need to automate report cleanup.<BR><BR>You might be able to get the ownership information you need through the back door, doing a direct query on the database, but simpler might be an export users, at least from 7.0. (This facility probably doesn't exist in system 9; it was dropped in 7.2 in favor of an undocumented API) The export file is an xml file that could easily be parsed to identify reports that have the administrator as user and then a second pass to delete those with otuer ownership as well. As previously suggested, you might be able to get this by a well crafted SQL query against the repository.<BR><BR>Procedurally, we have both public reports that have the blessing of management and are widely available, owned by a "public owner", and private reports developed by indivdual users and shared or not. Our team maintains the public reports, but not the private reports. We may be asked to make a previously private report public and take over maintenance of it. <BR><BR>I hope that you can find a solution that meets your needs. Certainly a call to customer support to identify a poorly documented feature would be in order.<BR>

  • Returning error while listing  reportees of a user by using worklist api.

    Hi,
    I am trying to list reportees of a user by using bpel worklist APi in custom application.the following is the code fragment of that:
    BPMUser bpmUser = gu.getWorkflowServiceClient().getAuthorizationService("dm.hoogly").lookupUser(gu.getWorkflowServiceClient().getTaskQueryService().getWorkflowContext("dm.hoogly").getUser());
    List directs = bpmUser.getReportees(1);
    System.out.println(" size..."+directs.size());
    its retuning error.
    Can any one help me how to list a reportees of a user by using BPELworklist api
    thanks
    Murali

    Hi..
    I am using 10.1.3.3 SOA suite.
    thanks
    Murali

  • Error while creating new user via new MDM API

    Hi
    I have two questions:
    1) Is it possible to create a user in MDM via MDM4J?
    2) I am trying to create a user through new MDM API (not the MDM4J). When I execute the command CreateUserCommand, I get following error:
    com.sap.mdm.commands.CommandException: com.sap.mdm.internal.protocol.manual.ServerException: MDM repository data is out-of-date or is locked by another MDM Server. Refresh the data and try the operation again. If the error persists, contact the system administrator.
         at com.sap.mdm.security.commands.CreateUserCommand.execute(CreateUserCommand.java:93)
         at demo.dm.GetRoleList.main(GetRoleList.java:206)
    Here is the code that I execute:
              CreateUserCommand createusercommand =
                   new CreateUserCommand(connections);
              createusercommand.setSession(repsessionId);
              UserProperties userpp = new UserProperties();
              userpp.setName("Vijendra");
              //userpp.setRoleIds(roleids);
              createusercommand.setUser(userpp);
              //createusercommand.setInChangeStamp(-1);
              //System.out.println(createusercommand.getOutChangeStamp());
              try {
                   createusercommand.execute();
              } catch (CommandException e) {
                   e.printStackTrace();
                   return;
    Thanks
    Vijendra
    Edited by: Vijendra Bhanot on Feb 22, 2008 6:42 PM
    Edited by: Vijendra Bhanot on Feb 22, 2008 6:49 PM

    Hi
    I am also getting same exception.
    com.sap.mdm.internal.protocol.manual.ServerException: MDM repository data is out-of-date or is locked by another MDM Server. Refresh the data and try the operation again. If the error persists, contact the system administrator.
    Please help me.
    Thanks & Regards
    Vinit

  • Creating user's objective through API ot working

    I am making use of the HR_OBJECTIVES_API API to create objective for users. to test the API, I run the small script below. It create a new row in the per_objective table but the HRMS interface fail to recognize it. It does not appear in the scorecard of the user. What am I missing?
    /* Auto Generation of Script Start */
    DECLARE
         -- Start of Variable declarations, Initialize Variables with appropriate values to test the script
         -- VARCHAR2 size is set to 2000 by default, please enter target table name to retrieve the exact limit
         -- Input Variables
         V_VALIDATE                      BOOLEAN:=false;
         V_EFFECTIVE_DATE                DATE := trunc(sysdate);
         V_BUSINESS_GROUP_ID             NUMBER:=81;
         V_NAME                          VARCHAR2(2000):='Just a Second test from TOAD';
         V_START_DATE                    DATE:=trunc(sysdate);
         V_OWNING_PERSON_ID              NUMBER:=264;
         V_TARGET_DATE                   DATE;
         V_ACHIEVEMENT_DATE              DATE;
         V_DETAIL                        VARCHAR2(2000);
         V_COMMENTS                      VARCHAR2(2000);
         V_SUCCESS_CRITERIA              VARCHAR2(2000);
         V_APPRAISAL_ID                  NUMBER;
         V_ATTRIBUTE_CATEGORY            VARCHAR2(2000);
         V_ATTRIBUTE1                    VARCHAR2(2000);
         V_ATTRIBUTE2                    VARCHAR2(2000);
         V_ATTRIBUTE3                    VARCHAR2(2000);
         V_ATTRIBUTE4                    VARCHAR2(2000);
         V_ATTRIBUTE5                    VARCHAR2(2000);
         V_ATTRIBUTE6                    VARCHAR2(2000);
         V_ATTRIBUTE7                    VARCHAR2(2000);
         V_ATTRIBUTE8                    VARCHAR2(2000);
         V_ATTRIBUTE9                    VARCHAR2(2000);
         V_ATTRIBUTE10                   VARCHAR2(2000);
         V_ATTRIBUTE11                   VARCHAR2(2000);
         V_ATTRIBUTE12                   VARCHAR2(2000);
         V_ATTRIBUTE13                   VARCHAR2(2000);
         V_ATTRIBUTE14                   VARCHAR2(2000);
         V_ATTRIBUTE15                   VARCHAR2(2000);
         V_ATTRIBUTE16                   VARCHAR2(2000);
         V_ATTRIBUTE17                   VARCHAR2(2000);
         V_ATTRIBUTE18                   VARCHAR2(2000);
         V_ATTRIBUTE19                   VARCHAR2(2000);
         V_ATTRIBUTE20                   VARCHAR2(2000);
         V_ATTRIBUTE21                   VARCHAR2(2000);
         V_ATTRIBUTE22                   VARCHAR2(2000);
         V_ATTRIBUTE23                   VARCHAR2(2000);
         V_ATTRIBUTE24                   VARCHAR2(2000);
         V_ATTRIBUTE25                   VARCHAR2(2000);
         V_ATTRIBUTE26                   VARCHAR2(2000);
         V_ATTRIBUTE27                   VARCHAR2(2000);
         V_ATTRIBUTE28                   VARCHAR2(2000);
         V_ATTRIBUTE29                   VARCHAR2(2000);
         V_ATTRIBUTE30                   VARCHAR2(2000);
         V_SCORECARD_ID                  NUMBER:=9193;
         V_COPIED_FROM_LIBRARY_ID        NUMBER;
         V_COPIED_FROM_OBJECTIVE_ID      NUMBER;
         V_ALIGNED_WITH_OBJECTIVE_ID     NUMBER;
         V_NEXT_REVIEW_DATE              DATE;
         V_GROUP_CODE                    VARCHAR2(2000);
         V_PRIORITY_CODE                 VARCHAR2(2000);
         V_APPRAISE_FLAG                 VARCHAR2(2000):='Y';
         V_VERIFIED_FLAG                 VARCHAR2(2000);
         V_TARGET_VALUE                  NUMBER;
         V_ACTUAL_VALUE                  NUMBER;
         V_WEIGHTING_PERCENT             NUMBER;
         V_COMPLETE_PERCENT              NUMBER;
         V_UOM_CODE                      VARCHAR2(2000);
         V_MEASUREMENT_STYLE_CODE        VARCHAR2(2000):='N_M';
         V_MEASURE_NAME                  VARCHAR2(2000);
         V_MEASURE_TYPE_CODE             VARCHAR2(2000);
         V_MEASURE_COMMENTS              VARCHAR2(2000);
         V_SHARING_ACCESS_CODE           VARCHAR2(2000);
         -- Output Variables
         V_WEIGHTING_OVER_100_WARNING    BOOLEAN;
         V_WEIGHTING_APPRAISAL_WARNING   BOOLEAN;
         V_OBJECTIVE_ID                  NUMBER;
         V_OBJECT_VERSION_NUMBER         NUMBER;
    BEGIN
        DBMS_output.enable(800000);
         --  Calling API HR_OBJECTIVES_API.CREATE_OBJECTIVE
         HR_OBJECTIVES_API.CREATE_OBJECTIVE(P_VALIDATE                     => V_VALIDATE
                                           ,P_EFFECTIVE_DATE               => V_EFFECTIVE_DATE
                                           ,P_BUSINESS_GROUP_ID            => V_BUSINESS_GROUP_ID
                                           ,P_NAME                         => V_NAME
                                           ,P_START_DATE                   => V_START_DATE
                                           ,P_OWNING_PERSON_ID             => V_OWNING_PERSON_ID
                                           ,P_TARGET_DATE                  => V_TARGET_DATE
                                           ,P_ACHIEVEMENT_DATE             => V_ACHIEVEMENT_DATE
                                           ,P_DETAIL                       => V_DETAIL
                                           ,P_COMMENTS                     => V_COMMENTS
                                           ,P_SUCCESS_CRITERIA             => V_SUCCESS_CRITERIA
                                           ,P_APPRAISAL_ID                 => V_APPRAISAL_ID
                                           ,P_ATTRIBUTE_CATEGORY           => V_ATTRIBUTE_CATEGORY
                                           ,P_ATTRIBUTE1                   => V_ATTRIBUTE1
                                           ,P_ATTRIBUTE2                   => V_ATTRIBUTE2
                                           ,P_ATTRIBUTE3                   => V_ATTRIBUTE3
                                           ,P_ATTRIBUTE4                   => V_ATTRIBUTE4
                                           ,P_ATTRIBUTE5                   => V_ATTRIBUTE5
                                           ,P_ATTRIBUTE6                   => V_ATTRIBUTE6
                                           ,P_ATTRIBUTE7                   => V_ATTRIBUTE7
                                           ,P_ATTRIBUTE8                   => V_ATTRIBUTE8
                                           ,P_ATTRIBUTE9                   => V_ATTRIBUTE9
                                           ,P_ATTRIBUTE10                  => V_ATTRIBUTE10
                                           ,P_ATTRIBUTE11                  => V_ATTRIBUTE11
                                           ,P_ATTRIBUTE12                  => V_ATTRIBUTE12
                                           ,P_ATTRIBUTE13                  => V_ATTRIBUTE13
                                           ,P_ATTRIBUTE14                  => V_ATTRIBUTE14
                                           ,P_ATTRIBUTE15                  => V_ATTRIBUTE15
                                           ,P_ATTRIBUTE16                  => V_ATTRIBUTE16
                                           ,P_ATTRIBUTE17                  => V_ATTRIBUTE17
                                           ,P_ATTRIBUTE18                  => V_ATTRIBUTE18
                                           ,P_ATTRIBUTE19                  => V_ATTRIBUTE19
                                           ,P_ATTRIBUTE20                  => V_ATTRIBUTE20
                                           ,P_ATTRIBUTE21                  => V_ATTRIBUTE21
                                           ,P_ATTRIBUTE22                  => V_ATTRIBUTE22
                                           ,P_ATTRIBUTE23                  => V_ATTRIBUTE23
                                           ,P_ATTRIBUTE24                  => V_ATTRIBUTE24
                                           ,P_ATTRIBUTE25                  => V_ATTRIBUTE25
                                           ,P_ATTRIBUTE26                  => V_ATTRIBUTE26
                                           ,P_ATTRIBUTE27                  => V_ATTRIBUTE27
                                           ,P_ATTRIBUTE28                  => V_ATTRIBUTE28
                                           ,P_ATTRIBUTE29                  => V_ATTRIBUTE29
                                           ,P_ATTRIBUTE30                  => V_ATTRIBUTE30
                                           ,P_SCORECARD_ID                 => V_SCORECARD_ID
                                           ,P_COPIED_FROM_LIBRARY_ID       => V_COPIED_FROM_LIBRARY_ID
                                           ,P_COPIED_FROM_OBJECTIVE_ID     => V_COPIED_FROM_OBJECTIVE_ID
                                           ,P_ALIGNED_WITH_OBJECTIVE_ID    => V_ALIGNED_WITH_OBJECTIVE_ID
                                           ,P_NEXT_REVIEW_DATE             => V_NEXT_REVIEW_DATE
                                           ,P_GROUP_CODE                   => V_GROUP_CODE
                                           ,P_PRIORITY_CODE                => V_PRIORITY_CODE
                                           ,P_APPRAISE_FLAG                => V_APPRAISE_FLAG
                                           ,P_VERIFIED_FLAG                => V_VERIFIED_FLAG
                                           ,P_TARGET_VALUE                 => V_TARGET_VALUE
                                           ,P_ACTUAL_VALUE                 => V_ACTUAL_VALUE
                                           ,P_WEIGHTING_PERCENT            => V_WEIGHTING_PERCENT
                                           ,P_COMPLETE_PERCENT             => V_COMPLETE_PERCENT
                                           ,P_UOM_CODE                     => V_UOM_CODE
                                           ,P_MEASUREMENT_STYLE_CODE       => V_MEASUREMENT_STYLE_CODE
                                           ,P_MEASURE_NAME                 => V_MEASURE_NAME
                                           ,P_MEASURE_TYPE_CODE            => V_MEASURE_TYPE_CODE
                                           ,P_MEASURE_COMMENTS             => V_MEASURE_COMMENTS
                                           ,P_SHARING_ACCESS_CODE          => V_SHARING_ACCESS_CODE
                                           ,P_WEIGHTING_OVER_100_WARNING   => V_WEIGHTING_OVER_100_WARNING
                                           ,P_WEIGHTING_APPRAISAL_WARNING  => V_WEIGHTING_APPRAISAL_WARNING
                                           ,P_OBJECTIVE_ID                 => V_OBJECTIVE_ID
                                           ,P_OBJECT_VERSION_NUMBER        => V_OBJECT_VERSION_NUMBER
    dbms_output.put_line('Successfully created objective: ' || v_objective_id ||
         ' for TARGET PERSON_ID: ' || v_owning_person_id );
    exception when others then
         dbms_output.put_line('error : ' || sqlerrm);
    END;

    Hi,
           Can you just try by giving effective date and start date as some previous date rather than sysdate?
    Regards,
    Vinod

  • TestStand API in C#

    Hi,
    we develop a software in C# which uses the TestStand API.
    we note that TestStand API allocates memory at the first execution of a TestStand sequence
    All the memory of this first execution is not deallocate at the end.
    why ?
    Is it a problem with Active X technology ?
    Is it a conserved memory for the next execution ?
    Is it possible to not have this comportment ?
    For information, we have deactivated the generation of the TestStand report.
    Thanks for the answers
    Best regards

    There is memory allocated when an execution is run for many different reasons. Please be more specific as to which memory you are referring. Choose one of the following (or add your own if I have forgotten one).
    1) Memory used by result collection (to store results under Locals.ResultList while an execution is running). These are typically freed once the process model is done processing them typically for report generation or database logging. By default the process model processes them between runs of the mainsequence on the UUT. These results are also freed when the execution completes (i.e. stops running). If you are not using a process model or do not need results for specific steps or sequences you can disable result collection on a per-step, per-sequence, or global basis.
    2) Memory used to keep the sequences and executions themselves in memory. These datastructures stay in memory as long as you have a reference to them. One additional twist with .NET is that you might not think you have a reference to them, but you really still do because .NET hasn't gotten around to garbage collecting the references yet. You can force garbage collection as follows with the following code:
            public static void DoSynchronousGCForCOMObjectDestruction()
                // To make sure activex refs are synchronously released
                // we need to call GC.Collect() and GC.WaitForPendingFinalizers()
                // at least twice, according to the following document:
                // http://msdn.microsoft.com/en-us/library/aa679807%28v=office.11%29.aspx
                // The reason we have to do it twice is that the the first call
                // might just sweep the objects into generation 2 rather than collecting
                // them immediately.
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
                GC.WaitForPendingFinalizers();
    3) Memory used by code modules being loaded. This memory is freed when the step settings on your code modules say to unload your modules, but the behavior is somewhat different depending on the adapter. Some adapters can unload code modules on a per-code module basis, but the .NET adapter can only unload code modules when all code modules and .NET objects created by the .NET adapter are no longer supposed to be loaded or referenced. That is because in .NET the only way to unload code modules is to unload the appdomain containing them. TestStand uses a single appdomain for the .NET adapter and unload that appdomain when all .NET code modules referenced by the adapter are unloaded and all .NET references gotten from those code modules into TestStand are no longer in scope.
    Hope this helps explain things.
    -Doug

  • Activating locks using TestStand API

    Hello,
    I have a question... how do I lock and unlock a lock, created in TestStand, in Visual Basic (by using the teststand API)?
    Greetz Jan Toebes

    Hello,
    To understand you correctly you are trying to perform a lock or unlock through Visual Basic. For this you have to use the synchronization server, which has a different API for itself. You can get more information about this under "TestStand Supplemental Reference Help" section in the TestStand Help.
    For simplicity sake, lets assume that you have a lock step created in teststand and you want to perform an unlock using Visual Basic.
    To perform this task, you need the SyncManager. This is the main class for all Synchronization objects. This class helps manage the creation and sharing of the different Synchronization objects between threads. You must create all Synchronization objects using this class.
    To get the appropriate instance of the TestStand Synchronization Manager call the Engine.GetSyncManager TestStand API method. The Engine.GetSyncManager method returns the TestStand Synchronization Manager for the appropriate process based on the name of the Synchronization object. So the call would be
    SyncManager = Engine.GetSyncManager(* Name_of_the_lock_Step)
    where the Name_of_the_Step is the actual name of the lock step that we created in TestStand. The "*" before that indicates that this lock step was created in a separate thread and is being shared.
    Now Mutex is the class that implements the Lock synchronization and is used to implement the Lock step type in TestStand. So using the SynCManager will get an instance of this Mutex class by using:
    Mutex = SyncManager.GetMutex(* Mame_of_the_lock_step)
    Now using Mutex you can perform an unlock by using:
    Mutex.EarlyUnlockMutex ( threadId)
    Please refer to the help for more information regarding these functions. I hope this helps.
    SijinK
    National Instruments

  • Visual Studio TestStand API runtime enable/disable XML reporting file creation

    I am looking for a Visual Studio C# solution to selectively disable creation of the report generation XML file using the TestStand API.
    These XML files are useful for active troubleshooting for technicians, but wind up cluttering important directories with useless information most of the time.
    I am aware that the XML file creation can be disabled through the TestStand Sequence Editor menu item Configure | Result Processing | Output Name Report | Enabled unchecked option.
    This is helpful, but:
    1. I have not found a way to check-uncheck this feature at runtime.
    2. I do not believe that this would be an effective solution for my instal-less Base Deployment Paradigm.
    Any help or ideas would be appreciated!
    Solved!
    Go to Solution.

    Thank you for the quick and concise response James_Grey!
    This is useful, complete, and implementable but not exactly what I was hoping for.
    I was hoping to be able to enable/disable the XML file creation for the currently executing instance of the engine prior to sequence start.
    I would rather not disable reporting through a configuration file that would effectively disable it for all uses of TestStand until it was re-enabled again.
    Are my expectations unrealistic?
    Does anyone have any idea how creation of the XML file can be enabled/disabled for an active instance of the engine prior to sequence start through the API without altering the file based configuration of TestStand?
    I have seen some postings around 2008 that indicate this can be done, but I was unsuccessful implementing those solutions in TestStand 2013.

  • TestStand API: Set relative path

    Dear NI community!
    Could someone help, please, with the following - is there is some option to set file path to code modules, inside test sequence, to have relative, but not absolute path? I add programmatically code modules to sequence steps, but currently they have absolute path. Is it possible to change it to relative with TestStand API?
    Thanks in advance.
    Solved!
    Go to Solution.

    I was wrong. It's possible to manually cut path to file (according to Search Directories of TestStand). Then code modules will be added with relative pathes. But one should be careful - path should be cut correctly.
    For example, I have full path
    E:\Development\source code\supplementary\TestVIs\Code Modules\Service\Print.vi
    My Search Directory is 
    E:\Development\source code\supplementary\TestVIs\
    So, I need to cut like this:
    Code Modules\Service\Print.vi
    and without slash at the beginning!
    Then it will be OK.

Maybe you are looking for

  • How to make iCloud calendar appointments appear in the To-Do Bar in Outlook 2010

    I'm using Win 7 and iCloud control panel 4.0.  I understand that only the default calendar shows up in the to do bar. I tried setting iCloud as the default data file but then I can't write an email because I use IMAP which requires write access to th

  • Best fit curve (gaussian)

    I am having an issue implementing the gaussian best fit line on the data in the attached vi. How can i get this done? Will appreciate any help! -FredFred Attachments: best fitvi.vi ‏58 KB

  • FI Implementation blue print

    Hello Gurus, I am new to SAP FI.  I was wondering if there is any website or if anyone can forward me a sample blue print for SAP FI/CO.  Pls respond. Thanks in advance

  • Systems programming in Java

    Is it possible to write system programs in java language? where can i find examples?

  • NO GR without PO

    Hi gurus,                How to prevent posting of goods receipt document without a PO. Otherwise users shouldnot do GR if PO is unvailable.  Please suggest us how to config. Thanks Raj