Debugging Labwindows dll in teststand with CVI 9.1.1

Is there a known problem when debugging Labwindows DLL used as Teststand Code module ( using the Labwindows CVI Adapter)?
My setup includes to powersupplies with IVI instrument drivers ( Agilent 6032A and and E3634 A) a a few other instruments with non-IVI instruments drivers. When start CVI, load the dll project and then start the Teststand Sequence editor as program to be debugged an then step into the C-Code it looks like there is process that watches both powersupplies and tries to reset them again if I access them from my C code through the instrument driver. There is no such effect with the non-IVI instruments and also if I run the code outside the debugger there is no such effect.
Any Ideas whats going wrong here ?
Solved!
Go to Solution.

some more information. I#ve updated now to CVI 2010 and the effect still exists. To demonstrate it I've attached a NI SPY log. The 6032A lives at GPIB ID 3 the E3634 at GPIB ID 5. I'am running the following code:
Fmt(resource_id,"GPIB::%d::INSTR",addr_PS_P24V);
tsErrChk(status = hp6xxxa_init (resource_id, VI_ON, VI_ON, 2, &Instr_Handle_PS_P24V));
// Export Instrument handle for PS_P24V
tsErrChk (TS_PropertySetValNumber (testData->seqContextCVI, &errorInfo,
"FileGlobals.Instr_Handle_PS_P24V", 0x1,
Instr_Handle_PS_P24V));
//set limit voltage and current
// status = hp6xxxa_603xA_soft_limits (Instr_Handle_PS_P24V, 30, 0.5);
tsErrChk (status = hp6xxxa_603xA_fold (Instr_Handle_PS_P24V, 0));
//set voltage and current depending on device A/AP 10A B/C 11.5 A
if ( is_ALA_B_device( testData->seqContextCVI) || is_ALA_C_device( testData->seqContextCVI) )
tsErrChk (status = hp6xxxa_volt_curr (Instr_Handle_PS_P24V, 26.0, 11.5, 1));
else
tsErrChk (status = hp6xxxa_volt_curr (Instr_Handle_PS_P24V, 26.0, 10.0, 1));
tsErrChk (status = hp6xxxa_delay (Instr_Handle_PS_P24V, 0.500, 1));
Delay(.2);
//output off
tsErrChk (status = hp6xxxa_output_onoff (Instr_Handle_PS_P24V, 0, 1));
Delay(.2);
[... later for the E3634]
// Get GPIB-Adress of PS_P3V3
tsErrChk(TS_PropertyExists(testData->seqContextCVI, &errorInfo, "FileGlobals.GPIB_ADDR_PS_P3V3", 0, &propertyExists));
if (propertyExists)
tsErrChk (TS_PropertyGetValNumber(testData->seqContextCVI, &errorInfo,
"FileGlobals.GPIB_ADDR_PS_P3V3",
0, &GPIB_ADDR_PS_P3V3));
addr_PS_P3V3 = GPIB_ADDR_PS_P3V3;
#ifndef NO3V3 // NO 3.3V programmable source on TK2
// Initialize PS_P3V3
Fmt(resource_id,"GPIB::%d::INSTR",addr_PS_P3V3);
tsErrChk(hpe363xa_init (resource_id, VI_TRUE, VI_TRUE, &Instr_Handle_PS_P3V3));
// Export Instrument handle for PS_P3V3
tsErrChk (TS_PropertySetValNumber (testData->seqContextCVI, &errorInfo,
"FileGlobals.Instr_Handle_PS_P3V3", 0x1,
Instr_Handle_PS_P3V3));
hpe363xa_ConfigureOutputRange (Instr_Handle_PS_P3V3, "",
HPE363XA_VAL_RANGE_VOLTAGE, 5);
hpe363xa_ConfigureVoltageLevel (Instr_Handle_PS_P3V3, "", 3.3);
// Output off
hpe363xa_ConfigureOutputEnabled (Instr_Handle_PS_P3V3, "", VI_FALSE);
hpe363xa_ConfigureCurrentLimit (Instr_Handle_PS_P3V3, "",
HPE363XA_VAL_CURRENT_REGULATE, 0.5);
hpe363xa_ConfigureOVP (Instr_Handle_PS_P3V3, "", VI_TRUE, 4);
#endif
#ifdef TK3 // use E3640 powersupply for TK3
Fmt(resource_id,"GPIB::%d::INSTR",addr_PS_P3V3);
tsErrChk(hpe364xa_init (resource_id, VI_TRUE, VI_TRUE, &Instr_Handle_PS_P3V3));
// Export Instrument handle for PS_P3V3
tsErrChk (TS_PropertySetValNumber (testData->seqContextCVI, &errorInfo,
"FileGlobals.Instr_Handle_PS_P3V3", 0x1,
Instr_Handle_PS_P3V3));
hpe364xa_ConfigureOutputRange (Instr_Handle_PS_P3V3, "1",
HPE364XA_VAL_RANGE_VOLTAGE, 5);
hpe364xa_ConfigureVoltageLevel (Instr_Handle_PS_P3V3, "1", 3.3);
hpe364xa_ConfigureCurrentLimit (Instr_Handle_PS_P3V3, "1",
HPE364XA_VAL_CURRENT_REGULATE, 0.5);
hpe364xa_ConfigureOVP (Instr_Handle_PS_P3V3, "1", VI_TRUE, 4);
// Output on
hpe364xa_ConfigureOutputEnabled (Instr_Handle_PS_P3V3, "1", VI_TRUE);
#endif
If you look into the Spy Log you will see at #241 the first hit of that strange process, which beginns with a viOpenDefaultRM
and ends with a viClose at #252
after issuing an *IDN?, which fails because the 6032A doesn't support *IDN?. Then the first driver call ( init function) can be identified.
later on , when the code goes to the E3642 using ID5 at #1142 in SPY log you will see that the strange process will finally send a *RST if the *IDN? succeeds.

Similar Messages

  • Ho to run LV-DLL in TestStand with bool-parameters?

    Hello,
    i´m using LabView 8.21 and Teststand 3.5. Currentlly i´m playing with the project-Explorer where i´m creating DLLs.
    The first and easiest step was to create a new VI with string-in and string-out.
    Then i added this vi to my project and created a DLL from it.
    This DLL is called in TestStand where the parameters are automatically detected and everything works perfect.
    But when i add an boolean-input and boolean-output und do exactly the same then Teststand says:
     "This function either does not have parameter-information in the DLL or uses types not recognised by teststand."
    The type of the boolean is "LVBOOLEAN" in the created header-file.
    What
    am i doing wrong? Why is this simple bool-value not working? If bool
    works not then i can never use the Labview-error-out-cluster inside a
    DLL?
    Or is there an easy trick to solve this?
    Thanks for your help

    Hi OnlyOne,
    I just verified your issue and figured out that a boolean value cannot be transfered to a LV dll, because the datatype representation of a boolean is different in LabVIEW than in C.
    The flexible Prototype adapter from TesStand can identify the functions of your LabVIEW dll when you use basic datatypes like scalars, pointer to scalars or C strings. That's the reason why it works in your "String dll".
    When one uses LabVIEW specific datatypes there will no typelibrary provided and it's essential to define the prototype manual in TestStand. I found a link that provides some more information to that:
    http://digital.ni.com/public.nsf/websearch/DBCE27265FFB554986256C9400026FE8?OpenDocument
    One possibillity to transfer boolean values simply to a LV dll would be to use a numeric value, for example an integer and use a comparison like "!0" in the LV dll to determine if the status means "true" or "false".
    Hope that helps to come along with your application,
    regards,
    Nikolai

  • How can I debug a DLL created with MS Visual Studio C++ using CVI?

    I have developed a DLL using MS Visual Studio C++, which is called by an other application written in CVI.
    My goal is to debug the DLL written with C++ when is called from CVI.
    So far I have some msg popups, but I would like to have more debugging capabilities.
    Thanks, Adalbert

    Hello Adi11,
    As documented in the CVI Help under "Debugging DLLs": "In the LabWindows/CVI development environment, you can debug only DLLs you create in LabWindows/CVI with the Create Debuggable Dynamic Link Library command. Other development environments cannot debug DLLs you create in LabWindows/CVI."
    This information was also mentioned on the following discussion forum.
    Thanks.
    Wendy L
    LabWindows/CVI Developer Newsletter - ni.com/cvinews

  • Intermittent problem with TestStand calling CVI DLL calling MSCV DLL

    Sorry about cross post, but I am not sure which group is best to address
    this issue.
    Setup:
    Windows 2000 SP1
    TestStand 2.01f
    CVI 6.0
    MSVC++ 6.0 SP5
    Problem:
    I have a CVI Test Library DLL that contains test functions called by
    TestStand using the C/CVI adapter. The CVI Test Library DLL in turn makes
    several calls to another DLL written in MSVC++. I am experiencing an
    intermittent problem with one of the MSVC functions. The problem ~appears~
    to be stack related, but I am not sure. Among other things, this MSVC
    function accepts a const char * argument that is a TestStand lookup string.
    The function uses this string to access the TestStand API.
    What happens is this: Everything works fine. I then recompile the CVI DLL
    after making some mod, then run. The MSVC++ DLL asserts that the const char
    * arg passed by the CVI DLL is NULL. However, this is not the case if I
    single step through the CVI code. It has happened both with passing
    variables as the const char * argument and as hardcoded strings literals, so
    its not that I am actually passing NULL. The other argument to this
    function is the TestStand sequence context dispatch pointer (LPDISPATCH
    pobjSequenceContextDisp) and it always ~appears~ to be passed correctly.
    The problem is frustrating and hard to debug because I can not
    deterministically reproduce it. The problem ~never~ appears when I debug my
    MSVC++ DLL in Visual Studio. And it only occasionally appears otherwise.
    The problem, when it appears, always appears on the first run after
    recompiling the CVI DLL, though the problem does not happen after ~every~
    recompilation. I'd say it happens 1 in 6 times after a recompile.
    Recompiling the exact same code does not always make the problem disappear.
    If I change the CVI code (code that has nothing to do with the argument
    itself though) and recompile the problem almost always goes away. Selecting
    'Mark all for compilation' and rebuilding does not make the problem go away.
    Only tweaking the CVI code and recompiling does (usually).
    Whats more, the problem appears:
    * With the CVI DLL built as Debug or Release mode.
    * With the CVI default calling convention set to __stdcall or __cdecl.
    * With the C/CVI TestStand adapter set to run in-process or external
    instance of CVI.
    The problem appears to be some sort of stack or argument passing problem
    between CVI and MSVC, though thats just a guess based on the symptoms. I
    have quadruple checked the calling conventions of all declared functions.
    The CVI DLL functions all use TX_TEST (which resolves to __cdecl). The MSVC
    DLL functions all explicitly use __stdcall. Is there a problem with calling
    __stdcall MSVC functions from a __cdecl CVI function?
    I can find no other memory leaks or indications of memory corruption
    elsewhere in either the CVI or MSVC DLLs. Its only this one function that
    exhibits this strange 'null const char *' problem.
    Can anyone offer any ideas about what may be causing this problem? Anything
    else I should check/verify?
    Regards,
    Joe

    Silvius,
    > Although I'm not sure if any of the following are the real cause of
    > your problem, I have the following suggestions:
    Thanks for the reply. At this point any and all suggestions are welcome...
    > 1. There could be a problem with calling
    > __stdcall MSVC functions from a __cdecl CVI function. As a workaround
    > wrap the _cdecl call inside a _stdcall call that is exposed or
    > exported to TestStand or vice-versa. This can be a problem because if
    > _cdecl is used, the calling function is responsible for cleaning up
    > the stack and if _stdcall is used, the called function is responsible
    > for cleaning up the stack.
    I was under the impression that as long as everything was explicitly and
    consistently declared, you could safely mix cdecl and stdcall f
    unction
    calls. Is it bad to do this? Is this a known issue with the CVI compiler?
    I've never seen a problem with doing this under MSVC++.
    I'll try wrapping them in cdecl calls for CVI - though we have a
    depressingly large number of stdcall functions in the MSVC DLL ;-). They
    need to remain stdcall in the DLL because we also call them from Visual
    Basic.
    > 2.Don't mix Debug version of one DLL with the Release version of the
    > other DLL. I had some bad experiences doing this and both DLLs where
    > developed in MSVC. Allways use either Debug either Release versions of
    > DLLs.
    I verified that the MSVC DLLs were either ALL Debug or Release. I too have
    seen nasty problems when MSVC Debug and Release is mixed.
    One thing I had not thought of until your reply: What about mixing CVI Debug
    DLLs with MSVC Release DLLs? Have you ever seen issues with doing this?
    Thanks!
    Joe

  • Remote Debug problem with CVI Runtime Versions.

    Development Platform - CVI Version 8.5.1
    Target has DAQmx 9.4 installed on it along with CVI Runtime Engine ver: 9.1.0.428
    Developmenrt Platform was recently upgraded to DAQmx 9.4
    Re-installed CVI RTE (ver 9.1.0.428) on Development Platform - even though it was already installed.
    I keep on getting this error message on the Target system "The LabWindows/CVI Run-Time Engine on the target is more recent than your Lab Windows/CVI environment.  You have to upgrade the Lab/Windows environment if you want to debug your application."
    Both systems (Development Platform & Target) have the same versions of CVI RTE and DAQmx.  I have done a complete re-compile of the application .exe that I am trying to excute on the Target.  I have re-installed CVI RTE on the Development Platform.
    What is wrong here? 
    Solved!
    Go to Solution.

    LabWindows/CVI Environment == Development platform.
    I.e.: you must either downgrade the runtime engine on your target to match the existing 8.5.1 of the debugging machine or upgrade CVI installation on the development machine to match the 9.1 on the target (if I'm not wrong 9.1 means CVI 2009 SP1). The two machines must have the same version or the debugging machine must be more recent than the target one.
    Proud to use LW/CVI from 3.1 on.
    My contributions to the Developer Zone Community
    If I have helped you, why not giving me a kudos?

  • How sharing a COM object with severeal test dlls in teststand

    I have several tests (dlls) accessing a DAQ board (not VI compliant) thanks to a COM object. I would like to keep one instance of this object, passing its reference to each test dll, instead of creating one in each test. How can I do that with TestStand?

    You can do one of two things to store a reference to the COM object in the context of TestStand so that you can pass it to successive steps in order for them to all use the same object instance.
    First, if you create the object in TestStand with an ActiveX Automation Adapter step, the method call to instantiate the object should return a reference to the object. If you designate an activex reference type local variable as the property to receive the reference during the creation operation, you should be able to pass this into methods that use IDispatch* parameters, or you can use the TestStand API to access the TestStand variable instead.
    The second scenario is very similar, in that if you don't create the object in TestStand but inside of a dll instea
    d, you can simply pass the parameter back from a function into a TestStand activex reference property variable or use the TestStand API inside of the dll to set the value of an activex reference property to the IDispatch of the object.
    To better understand how to use the ActiveX Automation Adapter and ActiveX Reference Variable Types, look at Chapter 13 of the TestStand User Manual under the section entitled "ActiveX Automation Adapter". I have also attached an example to this post that uses the ActiveX Automation Adapter and ActiveX reference datatype in a sequence that writes data to a Microsoft Excel spreadsheet and generates a chart from the data.
    Jason F.
    Applications Engineer
    National Instruments
    www.ni.com/ask
    Attachments:
    Write_Table_to_XL_and_Create_Chart.seq ‏53 KB

  • TestStand with perl and Tcl examples need newer dlls

    I'm trying to run the TestStand with perl and tcl examples but they both point to older dlls. When I try to update by making changes and recompiling the main.cpp in VC++ 6.0, I get errors referencing cl.exe and oleauto.h, I'm not sure if I missed a step or what. See attached screenshot. TIA. Judy Jiru
    Attachments:
    scrnShotErrors.doc ‏110 KB

    Hey Judy,
    From my understanding oleauto.h and cl.exe are not National Instruments files. My suggestion would be to google the files - I found a bunch of hits for both the files. It may also be helpful to post on a discussion forum dedicated to VC++ 6.0. You may want to try the Microsoft newsgroups or I'm sure there are tons of other online.
    I hope this helps! Once you compile the dll if you have problems calling it from TestStand please post back.
    Regards,
    Sarah Miracle
    National Instruments

  • Problem calling more than one instance of a dll from TestStand

    Hi,
    I've posted this message in the LabWindows forum a few days ago and haven't gotten any answer. I have made a DLL with the evaluation version of LabWindows 7.1 to connect to a Telnet server and perform various commands. This DLL is used with TestStand 3.1 . In TestStand, I have to connect simultaneously to the same Telnet server twice to start an application with both of those connection, with different parameters. I use Threads in TestStand to call the DLL and everything seems to be fine on that side. I enter the DLL at the same time for both threads but it seems that the 1st thread waits until the 2nd thread is at the end of the function before he executes the InetTelnetOpen command to start the Telnet session. Is it normal that we can only have one Telnet connection at a time?
    To see that I've placed some time stamps in a log. For the first Thread, almost a minute passes by between the first 2 time stamps but in the 2nd thread it take less than a second.
    Yet, they both wait for eachother to exit the DLL as the time stamp at the end of the execution is the same.
    I really need some enlightenment here ;-)
    Louis
    Attachments:
    TelnetTest.txt ‏3 KB

    Tiwi,
    The blocking that InetTelnetRunScript does is probably there for a reason. That method is probably not safe for multiple threads to call into at the same time. There is likely another way to do what you are trying to do that can be done in parallel. Perhaps with lower-level telnet function calls. I recommend you post to the CVI forum asking if there is another way to do what you are trying to do from multiple threads in parallel. This does not sound like a teststand issue. If you are calling into your dll from multiple testand threads, then the code in your dll function is being executed in parallel. The cvi function you are calling however, might not be reentrant (reentrant means able to be called by multiple threads in parallel) so it is making one of your threads block until the other completes. I suspect there is a different way to do what you are trying to do that will not have this problem, but I think the changes that you will need to make will be in the dll and not on the teststand side. I recommend you post to the CVI group and explain what you are trying to accomplish and see if they have a solution for you.
    Hope this helps,
    -Doug
    P.S. Each process on the Windows operating system (of which teststand is one) can only load one copy of any particular dll at a time. Also, loading multiple copies is not something that would be likely to solve the problem you are running into. One possibility is to use the call executable step type and create an executable that does what your dll function does, but that is probably not the best solution and might still end up blocking at the same location. The best solution is probably to use an alternate method of accomplishing whatever you are trying to do with the telnet function you are calling that does not have the limitations of that function.

  • How to use CVI 2009 with CVI 2012 installed

    I have TestStand 2012 / CVI 2012 installed. 
    I need to also test using teststand 4.2.1 / CVI 2009.
    I installed teststand 4.2.1 / CVI 2009 and can activate teststand 4.2.1 but I cannot access CVI 2009. 
    Is there any way to have CVI2009/2012 both available on the same computer? 
    Is there a way to compile CVI 2012 to work with TestStand 4.2.1?

    Hi HMRJ,
    You can have multiple versions of CVI installed on the same computer. Can you explain in detail what you mean when you say that you cannot access CVI 2009? Do you mean that you can't open it or can't activate it?
    I am not sure I understand what you mean by compiling CVI 2012 to work with TestStand 4.2.1. You should be able to create a DLL from CVI 2012 and call this code module from TestStand. Are you receiving any errors when you try to do this?
    Regards,
    Anjelica W.
    National Instruments
    Applications Engineer

  • Debugging a dll

    Do I need to link my CVI executable to the debug versions of the export libraries when I want to debug a DLL?
    CVI generates debug versions of both the dll and the export library when you build the dll in debug mode.
    Does CVI automagically switch when debugging the executable and I want to trace into the DLL?
    Menchar

    Hi olhass,
    From what I understand, you're wanting to change the different libraries that are built with the DLL or Executable each time you select to build in release or debug mode. BUT you don't want to have to specify the libraries each time... I guess I'm wondering why you're wanting to do this. The point of building in either debug or release mode is so that you can debug the application before you build the release version. So your build specs would most likely be the same. 
    Take a look at these resources and see if they're any help for you:
    http://zone.ni.com/reference/en-XX/help/370051M-01/cvi/usermanual/prjbldmenudebdlls/
    http://digital.ni.com/public.nsf/allkb/2A11A12C31CABDBF86257B570079D84E?OpenDocument
    The second link is a Knowledge Base article related to a switching between the build libraries for 32-bit and 64-bit configurations. So the process might be similar for doing what you're asking about. 
    Additionally, you'll typically get a better response from the community when you create new posts on the discussion forums as opposed to commenting on old ones. I'd recommend doing that if my post does not lead you to a solution.
    Kelsey W.
    National Instruments
    Applications Engineer

  • Asynchronuous functions don't work in a C# dll used by a CVI application

    Hello,
    I have an existing application written with CVI 9.0.1, which have to interact with a C# 2010 dll (which doesn't have any window) via a CVI<->.net wrapper (created using the usefull .net controller of CVI).
    This C# dll uses asynchronuous functions, like NetworkStream.BeginRead() and EndRead() functions of a System.Net.Sockets.TcpClient object for example.
    These asynchronuous functions work fine when the C# dll is used by a C# application (having a main window) or when the C# dll is converted in a standalone C# program (having a main window with buttons, to call its methods, just to try), but asynchronuous functions don't work when my C# dll is called by my CVI application (which is my goal): execution stays inside NetworkStream.BeginRead() for example (for the concerned thread).
    NetworkStream.BeginRead() can be successfully bypassed by using the synchronuous function NetworkStream.Read() instead, but the C# dll uses others asynchronuous functions wich have no associated synchronuous functions.
    Here is a portion of C# code (I don't have the source code for the Snmp object ; got_trap() method is never called when asynchonuous calls don't work):
    public void run() // the thread
     Snmp snmp = null;
     try
      snmp = new Snmp(true);
      snmp.NotifyListenPort = 162;
      snmp.NotifyRegister(null, null, new NotifyCallback(got_trap), CB_DATA_);
      isActive = true;
      Thread.Sleep(Timeout.Infinite);
    Thinking it could be a problem with window messages which could be not processed (in the C# dll), I tried to replace the Thread.Sleep(Timeout.Infinite) instruction, in the code where the asynchronuous management take place, by a window creation plus my Win32 window message loop, but asynchronuous functions don't work better (whereas my loop seems to successfully process messages):
    Form myForm = new Form(); // an empty window
    myForm.Show();
    int bRet;
    MSG msg = new MSG();
    while ((bRet = GetMessage(out msg, IntPtr.Zero, 0, 0)) != 0)
        if (bRet == -1)
           // handle the error and possibly exit
        else
          switch (msg.message)
            default: // everything else
            TranslateMessage(ref msg);
            DispatchMessage(ref msg);
            break;
    Any idea ?
    Thank you,
    rvfr.
    Solved!
    Go to Solution.

    Solved: in fact, the snmp assembly that I was using just needed to be dotNet registered.
    rvfr.

  • Network-Shared Variable - read string with CVI

    I need to read an NSV string with CVI.  I have been digging into accessing and writing NSV with CVI, but they are all scalar value.  What should I do with strings, clusters and arrays?

    'm an employee at National Instruments and I wanted to make sure you didn't miss the Network Variable API that is provided with LabWindows/CVI, the National Instruments C development environment. The the Network Variable API will allow you to easily communicate with the LabVIEW program over Shared Variables (http://zone.ni.com/devzone/cda/tut/p/id/4679). While reading these links, note that a Network Variable and a Shared Variable are the same thing - the different names are unfortunate...
    The nice thing about the Network Variable API is that it allows easy interoperability with LabVIEW, it provides a strongly typed communication mechanism, and it provides a callback model for notification when the Network/Shared variable's properties (such as value) change.
    You can obtain this API by installing LabWindows/CVI, but it is not necessary to use the LabWindows/CVI environment. The header file is available at C:\Program Files\National Instruments\CVI2010\include\cvinetv.h, and the .lib file located at C:\Program Files\National Instruments\CVI2010\extlib\msvc\cvinetv.lib can be linked in with whatever C development tools you are using.
    Thomas N.
    Applications Engineer
    National Instruments

  • Labwindows DLL in IIS 8 environment

    I have user setting up a Labwindows DLL call in a Windows IIS 8 enviroment.  The process generates an exception when the DLL is called.  Anyone have experience with this environment?  Anything special that needs to be done? DLL is 32 bit.
    Error reads: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

    Hi ruskin1,
    This error is commonly related to 32-bit / 64-bit compatibility, so I would suggest making sure that the application calling the DLL is also a 32-bit program.
    Myriam

  • Display a sequence in sequenceview activx control with CVI

    Hello,
    I am trying to display a teststand sequence in an activX sequenceView control for an user interface made with CVI. I had a look on the example of national intrument  (...teststand\UserInterfaces\NI\Simple\CVI) but my application is not exactely the same because all buttons are not ActivX controls.
    So I try to display the sequence with this command:
    TSUI_SequenceFileViewMgrSetByRefSequenceFile
    but when i execute i have an activx error : File was unloaded from the test stand engine.
    Can someone help me or having some example to help me.
    Thank you
    Regards

    Hi ,
    There is another example on our web site (http://zone.ni.com/devzone/cda/epd/p/id/3550), with this one you can select on the menu the sequence, and after run it.
    You can adapt it, if you seearch the funciton on the source code.
    regards,
    Christophe S.
    FSE East of France І Certified LabVIEW Associate Developer І National Instruments France

  • How can I pass a Variant to a C++ DLL from TestStand?

    I have a VARIANT that is being returned to TestStand via COM. The variant contains a structure of integers and strings. The integers are not uniformly sized... some are 8,16, and 32 bit. Rather than try to find a way to decode this information in TestStand, I would like to pass it to a C++ DLL to do the decoding and return the information in a readily usable format. I also have need to take the aforementioned data types, send them to a DLL for conversion into a VARIANT, and then pass this variant to a COM object. Can someone please explain a way that I can use TestStand as a pass-through for VARIANTs between a COM object and a C++ DLL?

    Hi,
    To pass a VARIANT to a C++ DLL in TestStand, you will need to create a custom data type.  From the sequence, change the View ring to Sequence File Types.  Right-click to insert a new Customer Data Type and select Container.  Now you can right-click to insert a field, which you can specify what data type it is.  Insert as many fields as needed.  After you have entered those in, right-click on the Custom Data Type name and select Properties.  Go to the C Struct Passing tab and click the "Allow Objects of this Type to be Passed as Structs".  Change packing to correlate with the C++ compiler you are using and also configure the properties for each field.
    Once you have done this, you will be able to pass that VARIANT as a struct to a C++ DLL.
    Thanks,
    Terry S.
    Staff Software Engineer
    National Instruments

Maybe you are looking for