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

Similar Messages

  • 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.

  • OMB Script - Run a process flow (OMBSTART) with input parameters.

    I have a process flow with one input parameter : PF_SCHEMA_NAME. This is a string, literal value = false.
    While running this from the OWB Control center UI, it prompts for value of parameter.
    I need to execute this process flow using OMB script.
    OMBSTART PROCESS_FLOW 'WMREPORT_INCR_DAILY_FCT_SIMP' IN '$OWFLOCATION' OVERRIDE CUSTOM_PARAMETER ('PF_SCHEMA_NAME') VALUES ('ADVIEWPROD')
    This gives following error:
    OMBSTART PROCESS_FLOW 'WMREPORT_INCR_DAILY_FCT_SIMP' IN 'OWF_LOCATION' OVERRIDE CUSTOM_PARAMETER ('PF_SCHEMA_NAME') VALUES ('ADVIEWPROD')
    Starting Execution WMREPORT_INCR_DAILY_FCT_SIMP
    RPE-01003: An infrastructure condition prevented the request from completing.
    RPE-01038: Failed to evaluate expression declare "$LOOP_DETECT$" NUMBER :
    ORA-06550: line 1, column 668:
    PLS-00201: identifier 'ADVIEWPROD' must be declared
    ORA-06550: line 1, column 626:
    PL/SQL: Statement ignored
    Completing Execution WMREPORT_INCR_DAILY_FCT_SIMP

    Thanks David for your reply.
    But your suggestion did not work. I am still getting the same error.
    OMBSTART PROCESS_FLOW 'WMREPORT_INCR_DAILY_FCT_SIMP' IN '$OWFLOCATION' OVERRIDE CUSTOM_PARAMETER ('PF_SCHEMA_NAME') VALUES ('"ADVIEWPROD"')
    Starting Execution WMREPORT_INCR_DAILY_FCT_SIMP
    RPE-01003: An infrastructure condition prevented the request from completing.
    RPE-01038: Failed to evaluate expression declare "$LOOP_DETECT$" NUMBER :
    ORA-06550: line 1, column 651:
    PLS-00201: identifier 'ADVIEWPROD' must be declared
    ORA-06550: line 1, column 608:
    PL/SQL: Statement ignored
    Completing Execution WMREPORT_INCR_DAILY_FCT_SIMP
    Can you please help?

  • Trouble with TestStand running VB DLLs compiles in separate threads

    I have an application that uses DLLs written in VB 6 to manipulate hardware. The hardware is Stepper Motors controlled via the NI CAN bus card, and two instruments controlled via the GPIB PCI card. I have written the two DLLs to use the same NI PCI GPIB and the same NI CAN BUS card. (One instrument per DLL and One Motor per DLL)
    Test stand is then creating the DLLs and running them in separate threads. I have the one DLL Call in a subsequence running as a separate thread, and the other DLL is in the main sequence. I have a GOTO step with preconditions set so that the main sequence only continues after the separate thread in the subsequence is finished.
    The problem I am having is that these D
    LLs work OK when I run them both in the VB debugger. The program even works when I run the main thread in the debugger, and the subsequence is run compiled.
    The problem is, that if I try to run both of these DLLs compiled It seems as if the subsequence DLL never executes.

    To Tuxamation -
    Nothing comes to mind as to why this would happen. VB 6 automation DLLs are used all the time for code modules.
    Note that when MSVB debugs a DLL, it is actually running the DLL as an EXE server within the MSVB process and not in TestStand's process that is using it. I typically found that there is typically a subtle difference in behavior between running the server as an EXE or DLL server.
    A simple way to determine if the TestStand call is reaching your DLL is to place a MsgBox function call in the DLL entry point and immediately return, ie. bybassing your existing code.
    So, if the call is being made to your DLL, you could then enable the Visual Basic project option on the Compile tab, "Create Symbol Debug Info" and recreate your VB DLL.
    You can then attach Microsoft Visual Studio (C++ debugger) to the TestStand process, open the file that contains the entry point in to DLL that TestStand calls, set a breakpoint, and see if the breakpoint is reached.
    Scott Richardson
    Scott Richardson
    National Instruments

  • 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

  • When opening a PDF in IE 10 with Enhanced Protection Mode it displays "This website wants to run acropdf.dll"

    I am running my application which requires JRE on Internet Explorer 10. Since the IE need to run in 64 bit mode, we have enabled the "Enhanced Protection Mode" in Security option of Internet Options in Advanced tab. But my application also opens
    up PDF in the browser, when the page with PDF is invoked it displays "The webpage wants to run 'AcroPDF.dll'. If you trust this site, you can disable Enhanced Protection Mode for this site to run the control.(Disable)(Always Ignore)".  And on
    clicking any option the PDF is not displayed.
    We would not be able to disable the  Enhanced Protection Mode as the 64 Bit JRE would not be invoked for other part of the application.
    Please let me know how to resolve this issue.
    Regards
    Navin

    ... and/or
    Configure Adobe Reader to not use a Web Browser to open PDF documents... (see the Adobe.com for admx files to apply this setting by group policy) (
    http://forums.adobe.com/thread/392489 )
    Start>Adobe Reader>Edit>Preferences>Internet>uncheck "Display PDF in browser"
    It seems that Adobe have recently changed the location of that setting in Adobe Reader (at least on 11.0.4).  They've now hidden it under Edit > Accessibility > Setup Assistant > Then on page 5 of 5, there's a tick box to toggle 'Display PDF
    documents in the Web Browser'.
    However, it doesn't work like it used to though, as it won't just open a PDF in Adobe Reader instead of the browser.  It will instead ask to disable Enhanced Protected Mode to run acroPDF.dll. 
    And if you try disabling the Adobe PDF reader add-on in Manage Add-ons to try and force it to open in Reader, then when you visit a PDF link, you just get the same blank page (shown below) with the black crossed out circle in the top left, but without the
    message bar at the bottom of the window.  The only way to open the PDF is to either turn off Enhanced Protected Mode and allow acroPDF.dll to run or if there's an original link to the PDF, right click and select 'save-as'.
    I think it's about time Adobe released an x64 PDF viewer...  Or at least there should be an open/save dialogue box in IE.
    If you've got Reader 11.0.4 installed, you can try it for yourself with this PDF link:
    http://helpx.adobe.com/pdf/adobe_reader_reference.pdf
    (The below screenshot is with 'Display PDF documents in the Web Browser' UN-ticked in Adobe Reader settings, so it should open in Reader instead.  But it doesn't.  And with the Reader add-on disabled you get the same page, but without the
    message at the bottom.)

  • 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

  • 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.

  • "Couldn't load library 'C:\SAP\NSP\SYS\exe\run\dbsdbslib.dll'"

    Hi!
    As you can see from here :
    http://www.fabiocavallo.it/sap/maxdb.jpg
    MaxDB seems to work fine, but after starting application server i have got an error :
    SAPGUI Logon Error Message:
    http://www.fabiocavallo.it/sap/sapguilog.jpg
    ...here comes dev_w0 :
    trc file: "dev_w0", trc level: 1, release: "700"
    ACTIVE TRACE LEVEL 1
    ACTIVE TRACE COMPONENTS all, MJ
    B
    B Thu May 22 19:58:50 2008
    B create_con (con_name=R/3)
    B Loading DB library 'C:\SAP\NSP\SYS\exe\run\dbsdbslib.dll' ...
    M *** ERROR => DlLoadLib: LoadLibrary(C:\SAP\NSP\SYS\exe\run\dbsdbslib.dll) Error 126 http://dlnt.c 237
    M Error 126 = "Impossibile trovare il modulo specificato."
    B *** ERROR => Couldn't load library 'C:\SAP\NSP\SYS\exe\run\dbsdbslib.dll'
    http://dbcon.c 4726
    M sysno 00
    M sid NSP
    M systemid 560 (PC with Windows NT)
    M relno 7000
    M patchlevel 0
    M patchno 95
    M intno 20050900
    M make: multithreaded, ASCII, optimized
    M pid 3376
    M
    M kernel runs with dp version 224(ext=109) (@(#) DPLIB-INT-VERSION-224)
    M length of sys_adm_ext is 360 bytes
    M ***LOG Q0Q=> tskh_init, WPStart (Workproc 0 3376) http://dpxxdisp.c 1301
    I MtxInit: 30000 0 0
    M DpSysAdmExtCreate: ABAP is active
    M DpSysAdmExtCreate: VMC (JAVA VM in WP) is not active
    M
    M Thu May 22 19:58:51 2008
    M DpShMCreate: sizeof(wp_adm) 6328 (904)
    M DpShMCreate: sizeof(tm_adm) 3605136 (17936)
    M DpShMCreate: sizeof(wp_ca_adm) 1200 (60)
    M DpShMCreate: sizeof(appc_ca_adm) 1200 (60)
    M DpCommTableSize: max/headSize/ftSize/tableSize=500/8/528040/528048
    M DpShMCreate: sizeof(comm_adm) 528048 (1048)
    M DpSlockTableSize: max/headSize/ftSize/fiSize/tableSize=0/0/0/0/0
    M DpShMCreate: sizeof(slock_adm) 0 (96)
    M DpFileTableSize: max/headSize/ftSize/tableSize=0/0/0/0
    M DpShMCreate: sizeof(file_adm) 0 (72)
    M DpShMCreate: sizeof(vmc_adm) 0 (1280)
    M DpShMCreate: sizeof(wall_adm) (22440/34344/56/100)
    M DpShMCreate: sizeof(gw_adm) 48
    M DpShMCreate: SHM_DP_ADM_KEY (addr: 06420040, size: 4205552)
    M DpShMCreate: allocated sys_adm at 06420040
    M DpShMCreate: allocated wp_adm at 06421A28
    M DpShMCreate: allocated tm_adm_list at 064232E0
    M DpShMCreate: allocated tm_adm at 06423310
    M DpShMCreate: allocated wp_ca_adm at 067935A0
    M DpShMCreate: allocated appc_ca_adm at 06793A50
    M DpShMCreate: allocated comm_adm at 06793F00
    M DpShMCreate: system runs without slock table
    M DpShMCreate: system runs without file table
    M DpShMCreate: allocated vmc_adm_list at 06814DB0
    M DpShMCreate: allocated gw_adm at 06814DF0
    M DpShMCreate: system runs without vmc_adm
    M DpShMCreate: allocated ca_info at 06814E20
    M DpShMCreate: allocated wall_adm at 06814E28
    X EmInit: MmSetImplementation( 2 ).
    X MM global diagnostic options set: 0
    X <ES> client 0 initializing ....
    X Using implementation view
    M <EsNT> Memory Reset disabled as NT default
    X ES initialized.
    M ThInit: running on host PCFABIO
    M
    M Thu May 22 19:58:52 2008
    M calling db_connect ...
    B create_con (con_name=R/3)
    B Loading DB library 'C:\SAP\NSP\SYS\exe\run\dbsdbslib.dll' ...
    M *** ERROR => DlLoadLib: LoadLibrary(C:\SAP\NSP\SYS\exe\run\dbsdbslib.dll) Error 126 http://dlnt.c 237
    M Error 126 = "Impossibile trovare il modulo specificato."
    B *** ERROR => Couldn't load library 'C:\SAP\NSP\SYS\exe\run\dbsdbslib.dll'
    http://dbcon.c 4726
    M ***LOG R19=> ThInit, db_connect ( DB-Connect 008192) http://thxxhead.c 1426
    M in_ThErrHandle: 1
    M *** ERROR => ThInit: db_connect (step 1, th_errno 13, action 3, level 1) http://thxxhead.c 10240
    M
    M Info for wp 0
    M
    M stat = WP_RUN
    M waiting_for = NO_WAITING
    M reqtype = DP_RQ_DIAWP
    M act_reqtype = NO_REQTYPE
    M rq_info = 0
    M tid = -1
    M mode = 255
    M len = -1
    M rq_id = 65535
    M rq_source =
    M last_tid = 0
    M last_mode = 0
    M semaphore = 0
    M act_cs_count = 0
    M csTrack = 0
    M csTrackRwExcl = 0
    M csTrackRwShrd = 0
    M control_flag = 0
    M int_checked_resource(RFC) = 0
    M ext_checked_resource(RFC) = 0
    M int_checked_resource(HTTP) = 0
    M ext_checked_resource(HTTP) = 0
    M report = > <
    M action = 0
    M tab_name = > <
    M vm = no VM
    M
    M *****************************************************************************
    M *
    M * LOCATION SAP-Server PCFABIO_NSP_00 on host PCFABIO (wp 0)
    M * ERROR ThInit: db_connect
    M *
    M * TIME Thu May 22 19:58:52 2008
    M * RELEASE 700
    M * COMPONENT Taskhandler
    M * VERSION 1
    M * RC 13
    M * MODULE thxxhead.c
    M * LINE 10439
    M * COUNTER 1
    M *
    M *****************************************************************************
    M
    M PfStatDisconnect: disconnect statistics
    M Entering TH_CALLHOOKS
    M ThCallHooks: call hook >ThrSaveSPAFields< for event BEFORE_DUMP
    M *** ERROR => ThrSaveSPAFields: no valid thr_wpadm http://thxxrun1.c 720
    M *** ERROR => ThCallHooks: event handler ThrSaveSPAFields for event BEFORE_DUMP failed http://thxxtool3.c 260
    M Entering ThSetStatError
    M ThIErrHandle: do not call ThrCoreInfo (no_core_info=0, in_dynp_env=0)
    M Entering ThReadDetachMode
    M call ThrShutDown (1)...
    M ***LOG Q02=> wp_halt, WPStop (Workproc 0 3376) http://dpnttool.c 327
    File dbsdbslib.dll' is 'there' (in 'C:\SAP\NSP\SYS\exe\run\), maybe i have to set environment variable in windows for SAP.
    Could you help me, please ?
    I don't know how to set these variables.......
    Many thanks.
    Regards.
    Fabio

    Hello Fabio,
    -> You wrote:
    "File dbsdbslib.dll' is 'there' (in 'C:\SAP\NSP\SYS\exe\run\)"
    => Please check the version of this file.
    < Go to file properties ->Version && update with 'file version', Platform,
       Product Name, Product Version information >
    -> What version of the SAP system did you install?
         "I suppose that i can download this patch from Sap MaketPlace, but i can't register there, because i have no
          Customer or   Installation Number! (i can't Logon in SAP....) "
         From were did you get the SAP software installation or CD?
    -> Could you upgrade the database client software on the application server to the version 7.7.04.08 or higher.
        You pointed "As you can see from here : http://www.fabiocavallo.it/sap/maxdb.jpg u2026 "
       => If the database and application were running on the same server, you installed the database
    Software version 7.6.02.17. Please run 'sdbregview -l' to review the list of all installed packages
    on the server.
    -> "MaxDB seems to work fine, but after starting application server i have got an error"
         Was the system working fine before? What was changed?
         Or you was not able to start the application server after installation. ?
    Thank you and best regards, Natalia Khlopina

  • How to externally trigger the execution of TestStand with a start and abort button through a digital interface?

    Hello,
    I'm Currently evaluating TestStand as an alternative for an in-house developed Test Sequencer.
    To start our own Test Sequencer we use a small box, connected to a DIO board. The box has a start button and an abort button. The box also has a pass, a fail and a running led.
    The interface with this box is made via some digital lines of a PCI-DIO-96.
    In our own Test Sequencer we have groups named Init, Run, Abort, Exit.
    The Init group is executed at startup (only once). It is used to initialize all the HW and SW. -> I guess this is the Pre UUT Loop callback in TestStand.
    The Exit group is only executed once at the end of the day when the application is terminated. It is used to free all the used hardware and cleanup all the resources. This probably is the Post UUT Loop Callback in TS.
    When a product needs to be tested, the operator presses the "start" button which triggers our own Test Sequencer and the run and abort group are being executed (first the run group, afterwards the abort group).
    When the product is being tested the "running led" of the little box lights up to indicate to the operator that the application is running. (only when the run and abort group are running)
    The Run group has all the functional tests in it. (MainSequence)
    The abort group is used to put everything back in it's original state after the test on this single product is done. (Post UUT)
    When executing the tests and something goes wrong (operator gets stuck in a clamper, ...) the operator can still press the abort button and then the execution immediately jumps from the currently executing step in the run group to the first step of the abort group. So, when something goes wrong, immediately the abort group is called.
    At the end of the run and abort group, if no errors occured, the "pass led" lights up. If one or more steps went wrong the "fail" led lights up.
    This setup can also be used to test multiple product in parallel. At that time all the different parallel testers have such a small box which contains a "start" and "abort" button and a pass, fail and running led. (it is possible that they are all connected to the same PCI-DIO-96 board. )
    My question:
    Is it possible to do something similar like this in Teststand? If yes, is there an example available that shows me how to do this in TestStand? (externally trigger the execution of TestStand)
    Typically, in the Init group (Pre UUT Loop) the digital interface box gets initialised.
    In the Close group (Post UUT Loop) the digital interface box is taken out of scope.
    Note: The PCI-DIO-96 board to which the digital interface box is connected will also be used in the rest of the developed application (MainSequence, ...)
    What's really important for me is that I can create a process model that all the application developers in our organisation can use. I really don't want any of the application developers (limited software experience) to mess around in all the features of TestStand.
    For them it's important that they just add the function DigitalInterfaceBoxInit () in the Pre UUT Loop Callback and the DigitalInterfaceBoxClose () in the Post UUT Loop Callback, and then everything works!
    It is important that the appliation developers do not have to create any global variables, other functions, synchronisations, parallel sequences, ... in TestStand. All this needs to be done with a simple call to the DigitalInterfaceBoxInit function.
    Thanks in advance for all the help!
    Best Regards,
    Dennis Vanotterdijk
    [email protected]

    Dennis-
    Your application sounds very well suited to TestStand's abilities. I am also quite impressed with your knowledge of how TestStand's architecture is arranged when you are still just considering whether or not to use it.
    I think that TestStand would work really well for you in this application. Like you mentioned it will provide you with a form of standardization for your application developers to work from. It also provides the flexibility for you to add your custom routines in many different places. TestStand also makes parallel and batch testing much easier in TS 2.0 so that you could develop one test for your product and execute different instances of it in parallel to test multiple products at once.
    As for your specific question about how to c
    ontrol TestStand using a DIO board. I think this is very feasible and should not be too difficult. Since TestStand provides you the ability to create a custom operator interface your operator interface could monitor the status of your DIO board and launch/abort executions based on the read values. Usually the executions are launched/aborted when a button on the GUI is pressed however, I do not see any thing different about basing the action on a DI signal vs a mouse click. I am sure your application is more involved than this high level description but from the sounds of it I think it is very possible to do with TestStand.
    Based on my experience of building test systems with TestStand and your description of the application, I would feel very confident in using TestStand to achieve all the goals you mentioned. If you have further detailed questions on how one of your features might be implemented, feel free to contact one of our Application Engineers or email us at www.ni.com/ask
    and we would be glad to help you.
    Best regards,
    Richard McDonell
    National Instruments

  • Running in 64 bit mode with the 32 bit Oracle client installed

    I have seen many postings on this issue but none of the suggested solutions have helped me.
    I am running visual studio 2010 professional with SP1 on windows 7 64 bit machine. When I try to run a web service locally and call it with SoapUI, I get the following error message during OracleConnection.Open().
    Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.
    I have tried setting up the build configuration and the project settings to target 32 bit but that has not helped. I have also tried removing the reference to System.Data.OracleClient that shows being under Program Files (x86) and add a new reference to the dll under GAC_64. That too did not work.
    I only have the 64 bit client installed on my machine.
    Any help will be appreciated.
    Thank you

    1. Visual Studio any version is 32 bit ONLY irrespective of hardware or OS bits.  So to DEVELOP with Oracle Client you MUST install 32 bit Oracle ODAC components. Task manager will show devenv.exe *32 (to confirm 32 bit Visual Studio application).
    2. You can run your web application inside IIS/IIS Express in your PC which independently can be either 32bit or 64bit.  If it is 64 bit, you MUST also install 64 bit Oracle ODAC components which means you'll have to install both 32bit and 64bit in your 64 bit Win7 running on 64bit hardware.
    3. In Visual Studio if you compile with "AnyCPU" as target, the resultant binaries (Web/NonWeb) can be both 32bit or 64bit.  So if target PC is "AnyCPU" or "x64", you MUST install Oracle ODAC 64 bit in the target OS if that target OS is 64bit.  You don't have to install 32bit ODAC in the target PC.
    4. One more catch to above scenario is the target OS could be 64bit simulated OS on a 32bit hardware. In such case you MUST install both 32bit and 64bit ODAC components.
    So while you ask your network team to download ODP.NET/ODAC Components make sure you ask them to download both 32bit and 64bit. Total nearly 600MB.
    Hope this helps many people out there.

  • Running a .dll in a .VI

    Hi, i have some issues running a dll in a .VI.
    to be more specific...
    I am running a main VI, and that main VI calls for a .dll when it is running labview crashes. after that y tried another way, I made the main VI a .dll then when i ran it everything went good.
    so the question is, does labview have to run everything in .dll when something is in .dll or i can mix a .dll in a vi or viceversa
    hope i explained myself

    LabVIEW can call DLLs just fine, so you do not need to run everything in a DLL. Your most likely issue is incorrect configuration of the Call Library Function Node, or you are not managing memory properly. There have been many threads posted in the forum on calling DLLs with various parameters. There's a very extensive example that ships with LabVIEW called "Call DLL". I would suggest searching the forum for message related to the error that you are seeing and/or the kinds of datatypes you are trying pass into/out of the DLL. If you cannot find the answer, then post back. Please provide details, such as the DLL header file, or at the very least the prototype for the function, as well as your LabVIEW code for how you are calling the DLL.

  • JNI to access functions of a dll to deal with a data aquision pci card

    i am trying to do an applicattion to access the functions of a dll
    to deal with a data aquision pci card (Analogig/Digital pci card).
    i�m using jni of course, but i have some problems.
    first i did a class called "TesteDll" witch contains all the native methods to access the functions of the pci card.
    after, i did a "TesteDll.jar" to use these methods in another applicattions.
    everything was fine until there. so created a single program like this:
    TesteDll td = new TesteDll();
    short res1 = td.P1602_DriverInit(wTotalBoards);
    short r = td.P1602_ActiveBoard((short)0); // ativa a placa
    short res2 = td.P1602_GetConfigAddressSpace((short)0,wAddrTimer,wAddrCtrl,wAddrDio,wAddrAdda);
    int dwRepeat;
    for(dwRepeat=0 ; dwRepeat<100 ; dwRepeat++)
    short wRetVal;
    wRetVal = td.P1602_ClearScan();
    wRetVal += td.P1602_AddToScan((short)0,(short)0,(short)1,(short)0,(short)0,(short)0);     // CH:0 to scan
    wRetVal += td.P1602_SaveScan((short)0,wV0);
    wRetVal += td.P1602_AddToScan((short)2,(short)0,(short)1,(short)0,(short)0,(short)0);     // CH:2 to scan
    /* ->error here!*/ wRetVal += td.P1602_SaveScan((short)1,wV2);      
    the programs compile correctly, but in the execution the folowing error was descripted:
    An unexpected exception has been detected in native code outside the VM.
    Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred at PC=0x8079A50
    Function=[Unknown.]
    Library=(N/A)
    NOTE: We are unable to locate the function name symbol for the error
    just occurred. Please refer to release documentation for possible
    reason and solutions.
    Current Java thread:
    at TesteDll.P1602_SaveScan(Native Method)
    at Teste2.main(Teste2.java:119)
    Dynamic libraries:
    0x7CD80000 - 0x7CD9D000      C:\WINDOWS\SYSTEM\IMAGEHLP.DLL
    Heap at VM Abort:
    Heap
    def new generation total 576K, used 161K [0x10010000, 0x100b0000, 0x104f0000)
    eden space 512K, 31% used [0x10010000, 0x100385c0, 0x10090000)
    from space 64K, 0% used [0x10090000, 0x10090000, 0x100a0000)
    to space 64K, 0% used [0x100a0000, 0x100a0000, 0x100b0000)
    tenured generation total 1408K, used 0K [0x104f0000, 0x10650000, 0x14010000)
    the space 1408K, 0% used [0x104f0000, 0x104f0000, 0x104f0200, 0x10650000)
    compacting perm gen total 4096K, used 1044K [0x14010000, 0x14410000, 0x18010000)
    the space 4096K, 25% used [0x14010000, 0x141152e8, 0x14115400, 0x14410000)
    Local Time = Wed Jun 01 10:21:14 2005
    Elapsed Time = 0
    # The exception above was detected in native code outside the VM
    # Java VM: Java HotSpot(TM) Client VM (1.4.2_06-b03 mixed mode)
    functions like "P1602_DriverInit(wTotalBoards)","P1602_ActiveBoard((short)0)" functions correctly.
    i run the same program in c++ builder and everythings goes fine, but i need to do it in java. i don�t know what to do,can you help me?
    thanks

    i almost forgot, i�m using win 98.
    First i used Dev C++ to make the JNI dll and the error ocurred at the first call of "P1602_AddToScan()" function. after i made the jni dll using C++ Builder, and the error ocurred at the second call of "P1602_SaveScan()" function. but the error message in both cases was the same.
    for(dwRepeat=0 ; dwRepeat<100 ; dwRepeat++)
    short wRetVal;
    wRetVal = td.P1602_ClearScan();
    /*First Error - Dev C++*/ wRetVal += td.P1602_AddToScan((short)0,(short)0,(short)1,(short)0,(short)0,(short)0); // CH:0 to scan
    wRetVal += td.P1602_SaveScan((short)0,wV0);
    wRetVal += td.P1602_AddToScan((short)2,(short)0,(short)1,(short)0,(short)0,(short)0); // CH:2 to scan
    /* Second error C++ Builder */ wRetVal += td.P1602_SaveScan((short)1,wV2);
    ...

  • 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

  • Using cvirte.dll from teststand

    I am trying to use cvirte.dll from teststand to automatically print test result reports. I am starting with the example sequence PrintEntireReportWhenFinishedTesting.seq that I found on the NI website. I want to change the print font attribute. The dll doesn't include prototype information so I need information on the parameters for the SetPrintAttributeEx function. Specifically what number refers to the ATTR_PRINT_FONT_NAME attribute and what are acceptable values for the value of this parameter.
    Attachments:
    PrintEntireReportWhenFinishedTesting.seq ‏37 KB

    Wendell,
    I believe this question was also posted in the TestStand category. Since this is more of a TestStand question, it was seen and already answered. Please see Using cvirte.dll from teststand.
    Thanks!
    Shannon R
    Applications Engineer
    National Instruments

Maybe you are looking for

  • HT201209 If I'm not in U.S, how can i use the iTunes Gift Card?

    Hi, Please help me! Last time my iTunes Store Account was registered in Singapore, So, all of my informations, billing address are affecting with SG iTunes Store. But now I am at another country, not in SG, That country don't have any credit card sys

  • Restoring ipod 80G classic - 1439 error code

    my computer crashed and when i tried to resync my ipod on the new hard drive it erased everything. it then went into a different format/language (symbols, etc.) and i couldn't do anything on it. so i reset it, and have been trying to restore it throu

  • After sync iPad shows 21GB other

    After syncing my 64GB iPad with my computer (Mac) it shows 21GB "Other" when it should be approx 25GB free. When I googled it I was advised to restore from backup which I did but it didn't change. I'm not sure if I can restore to a previous backup (n

  • Convert wma to mp3 mac

    How do I convert a wma to an mp3 for my mac in itunes.

  • Printing from ipad - help for a beginner please

    I have downloaded the "Print to All.." app into my ipad 1.  I have an HP Photosmart Premium wireless printer. How do I print an e-mail?