TestStand / CVI in conflict: the project directory

Hello

I have TestStand 4.2, LabWindows/CVI 8.5, Windows XP.   I'm testing a DLL created in CVI, which uses the 'GetProjectDir()' to create a basis for work.

When this DLL is exercised by a C program, it detects the directory of the project, C:\sandbox, which the program is run from.

However, when I have exhausted the same project (C:\sandbox) TestStand directory it finds instead the project as directory is C:\Program NIUninstaller Instruments\TestStand 4.2\Bin\

This is obviously not an acceptable way to build and work with files and temporary directories.

This continues to happen even if I created and launched the file in sequence from the directory "correect" (C:\sandbox)

How can I make testStand join BCI on what is the project directory?

Thank you

Hi rjohnson,.

The reason that you are experiencing this issue, is that the GetProjectDir function gets the directory containing the executable file, so when we run the TestStand DLL, it captures where TestStand is performed.  You can use the GetModuleDir function:

char path [MAX_PATHNAME_LEN];
GetModuleDir (__CVIUserHInst, path);

This should give you the desired path.

Tags: NI Software

Similar Questions

  • TestStand 2014 freezes when I select a path from the project during an Action LabVIEW using LabVIEW TERM 2014

    In the company that I work, we have a solution that uses the two TestStand 2014 and 2014 LabVIEW.

    We work with the development version of the two, but we are deploying our automation using TestStand and Labview Runtime engine 2014.

    We tried to deploy a new station, but during the analysis of our project, the User Interface for Teststand (version Deploy) froze.

    I tried several things and decided to install a full version of TestStand 2014 and 2014 LabVIEW to try to debug the problem.

    What I've discovered is that when I create a new sequence in TestStand, add a VI Action and try to load the path to the project, the TestStand freezes if I use the adapter Runtime.

    If I go to the LabVIEW development system adapter in TestStand, it works. However, I need to use the Runtime since it's free while the LabVIEW Development is paid.

    We already use our solution in other places, and this is the first time, it never happened. The only post I found online that had something to do with this issue is this.

    If I remove the path of the project and call the VI himself, as "dvu", said in his second post, it works.

    However, it is something not good to do in our automation together, since we have several calls from LabVIEW.

    Any ideas on how to do this only works with 2014 DURATION and 2014 Runtime LabVIEW TestStand?

    Thank you!

    Thanks a lot Stop_Luke_and_Listen, but the guy where the deployment was made called the support NEITHER and they couldn't find the problem, so they formatted the PC.

    Now it works very well, so I won't be able to generate the report. It would have been a great idea.

    Thank you!

    SOLUTION: Format the PC and reinstall.

  • In previous versions of the CVI, use OpenFile with no path intended to look into the local path (i.e. the installation directory). Is there a way to do this in 2013 CVI?

    I use an .ini file to allow users to change the preferneces for starting the program. In the past, this file has lived in the installation directory and OpenFile could find the file cheerfully and apply preferences. In CVI 2013, the program seems to need an implicit path to the file. Is there a way to get around this?

    I use not yet CVI2013, but in any case, you can build up to a full path of a file in the folder of the application using the GetProjectDir and MakePathname commands when running.

  • Script to move files to the project output directory

    RoboHelp 9

    Project custom Webhelp

    I would like to create a script to post production to put a file updated sin the output directory of the project helps.

    What would this look and how the output can be specified according to the output file specified in the project

    TIA

    Rob

    Problem seems to be resolved.

    I re-read some areas of Skinny on skins that I had neglected either or forgotten which explains that the core of the process of generation of the tool files can be changed in HR program files. I modified the whtbar.js file in this directory and now have no need to replace the js file in the output directory after that every time that I generated a project.

    This helps me immenseley and opens the door to other customization. Or are there downsides to doing this?

  • Environment programs began within a module of code Teststand, CVI

    What environment is seen by an executable file, which is started by LaunchexecutableEx() in a module of Labwindows/CVI code using Labwindows adapter in Teststand? Is is possible to change this environment?

    We noticed that an executable file, which creates directories for files logging and configuration in its installation directory data, which autonomous road, now creates these directories somewhere under C:\Dokumente und 4.2.1\ Instruments\TestStand Users\Dokumente\National All Anwendungsdaten launched from the CVI code module.

    The executable you are using is probably the addition of things based on the current working directory. It is not a best practice. If you have the source code for the executable, you should consider changing to use GetModuleFileName ( http://msdn.microsoft.com/en-us/library/ms683197%28v=vs.85%29.aspx ), passing NULL for the handle of the module to get the path where the executable file is located and use this path rather than the current working directory. I would say that using the working directory current is almost never the correct thing for a program to do it.

    That said, if do not have the code for the executable file and is enough to make it work, you can use the Windows SDK CreateProcess ( http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx ) function that allows you to specify a currentdirectory (I don't think that the environment is the problem in your case, I think that it is the current directory). Or you can use the type of executable step TestStand call place that has a setting for the current directory (I think they call it the Working Directory).

    Hope this helps,

    -Doug

  • Some General Questions of CVI - how does the compiler

    Hello

    I work with CVI 9.1 for more then a year during this time i ' v noticed a couple things, I would like to help me to understand.

    1. Work with several C files:
    • When I'm writing a software that uses lets say C files and files of 10 H 10: Main.c Main.h File1.c File1.h Panels.h Panels.uir and so on... I'm implementation of the function in the c file and its deceleration of writing in the file h, i ' v noticed that sometimes I get msgs of the compiler on the conflicts, maybe there's a way I know not just for the CVI?
    • Works correctly with the file UIR for example lets take the files written above, if I have sign - HAND and control led1 and I want to do SetCtrlVal in the Main.c I can implement as this SetCtelVal(MAIN,MAIN_LED1,1); but when I go to file1.c and try to do it, I get the error message that main_led1 is not a control value (I included the Panels.h) this problem happens to me a lot is there a solution? or maybe I am doing something wrong...
    • What is the best way to implement bollean var (true false) for the software? is it possible to add this var always?
    • decelerations of incompatible type: allows you to take the Fmt function for example when I'm trying to use it in another file, I get the decelerations of incompatible type with the names of the files...
    • General question: lets say I want to include in my project and I want to use its features in main.c and file1.c, I included in two files? or there is a way to include it in a single file only?

    2. to access the buttons

    • lets say that I have buttons and I am pressing on it after pressing the button I have a loop for 10 min, I want to create a button give up, but I can't press anything because the keys are "locked out" is there a way besides multi threading to implement this?

    Wow! A very broad set of issues!

    A quick response.

    • Works correctly with the file UIR for example lets take the files written above, if I have sign - HAND and control led1 and I want to do SetCtrlVal in the Main.c I can implement as this SetCtelVal(MAIN,MAIN_LED1,1); but when I go to file1.c and try to do it, I get the error message that main_led1 is not a control value (I included the Panels.h) this problem happens to me a lot is there a solution? or maybe I am doing something wrong...

    There is a basic error in your statement: the first (SetCtrlVal) parameter must be the handle Panel, which is the reference to the object in memory that is created when you call LoadPanel (). Using the name of constant sign is not correct: it may work if you're lucky and you have the Panel handle with the same value as the name of the constant, but this certainly isn't the correct way to address on a panel controls.

    Even if I don't understand the error that you declare: I expect 'the control is not of the type expected by the function' or an error of inconsistent data type (like passing an int to double check) or...

    Remember that each function that processes objects on a Panel must be aware of the handful of Panel, then either you pass to the function as a parameter, or store it in a global variable.

    • decelerations of incompatible type: allows you to take the Fmt function for example when I'm trying to use it in another file, I get the decelerations of incompatible type with the names of the files...

    I normally leave CVI #including the necessary system files: when I use certain functions like Fmt in a source file and compile ICB warns me to add the relevant include file, and it does it correctly. Operating in this way I never had problems with formatting and the I/o library functions. You can rebuild the inclusion list by removing all #includes in yous source files and compilation of the project, this should correct errors

    • General question: lets say I want to include in my project and I want to use its features in main.c and file1.c, I included in two files? or there is a way to include it in a single file only?

    You must include the file containing the definitions of the functions in all source files that use. Or you can create a general include file with all included in your project and include only this one in all of your source files

    • lets say that I have buttons and I am pressing on it after pressing the button I have a loop for 10 min, I want to create a button give up, but I can't press anything because the keys are "locked out" is there a way besides multi threading to implement this?

    It is a general rule that animates the CVI environment: during the execution of a loop inside a function (a reminder of command or another function) the system does not handle the user interface events, so that your buttons appear locked. This can be solved by adding a call repeated (ProcessSystemEvents) inside the loop: this way of all UI events are monitored and managed by the system.

    You must use this method with caution: before entering the loop, you must disable all the controls that can be used during operation (normally only the Quit button should stay active) otherwise, you can enter a situation in which other callbacks are executed during the loop that might interfere with it.

    In such a case, do not put a reminder in the stop button and the use of a global variable I have normally create a toggle button Stop and manipulate it in this way:

    While (1) {}

    ....

    ProcessStemsEvents ();

    GetCtrlVal (panelHandle, PANEL_STOP, &stop);)

    If {(stop)

    ... gracefully out of the function

    break;

    }

    }

    This argument has been discussed several times in the forums: do a search for ProcessSystemEvents returns a large number of discussions you can read

    • What is the best way to implement bollean var (true false) for the software? is it possible to add this var always?

    CVI is not a native boolean value. I used to use an int and test weather it is zero or not

    • When I'm writing a software that uses lets say C files and files of 10 H 10: Main.c Main.h File1.c File1.h Panels.h Panels.uir and so on... I'm implementation of the function in the c file and its deceleration of writing in the file h, i ' v noticed that sometimes I get msgs of the compiler on the conflicts, maybe there's a way I know not just for the CVI?

    I do not understand what you describe: could you add some piece of code allowing to penetrate this situation and report exactly the message the compiler warns?

  • The initialization of the project of error

    Whenever I open a sample project, I get this error of initialization (screenshot attached). It could be the cause, or how can I solve this problem? Thanks in advance!

    It's really weird.   It seems that your directory where this example had permissions writable for data sets could be written here that chagned to authorization and MWO is let you know there is no write permission.    I see two options.

    1. go in this directory where this example and remove all folders of data sets that see you.  Avoid all in the expedition of AWRDE examples folder.

    2. save the project in another place where you do not have write access and then it should work.

  • RTE de LV cannot open the project files that include references .lvlib in dependencies

    I am writing a DLL LabVIEW to inspect the LabVIEW project files, and I noticed that if a project has a .lvlib reference in its dependencies, then the Run-Time Engine is contradictory on whether or not he can find the project file:

    • Project.Open returns error 7 (file not found)

    • Project.GetFileLVVersion is a success

    Here are some excerpts from my code of G and C engaged in this behavior:

       int openStatus = StatusSuccess;
    char * projectVersion = createStringWithLength (VersionStringLength);

    printf ("Analysis %s\n", pathchaine);
    OpenProject (pathchaine & openStatus, projectVersion, VersionStringLength);
    printf (" project written in LabVIEW %s\n", projectVersion);

    If (openStatus is StatusSuccess)
    {
    printf (" Open the project file.") \n") ;
    }
    on the other
    {
    printf("Error: could not find Project file, or file was not a Project file (Error code %i).\n», openStatus);")
    }

    However, when running in the development environment, the two methods are successful.

    Is this a bug, and if so, is it fixed in 2014 of LabVIEW?

    Here's how you can reproduce:

    Prerequisites:

      1. LabVIEW 2013 SP1 32-bit

      2. ConEmu for a good console- https://code.google.com/p/conemu-maximus5/wiki/Downloads

      3. minGW for compilation of a program to use the LabVIEW - http://sourceforge.net/projects/mingw/files DLL

    reference .lvlib to break dependencies Project.Open in LV RTE

      1. Open the attachment in a temporary directory (e.g. c:\xtra\temp)

      2. Open "OpenProject.lvproj" in LabVIEW.

      3. Build 'Open library project'.

      4. ConEmu with a bash command prompt, navigate to the temporary directory.

      5. Type make

    $ make
    patch the file "builds/platdefines.h.
    GCC - std = c99 g OpenProject.c o OpenProject.exe - lOpenProject - Lbuilds

    6. type "c:\xtra\temp\OpenProject.lvproj" OpenProject

    OpenProject $ 'c:\xtra\temp\OpenProject.lvproj '.
    Analysis c:\xtra\temp\OpenProject.lvproj
    Project written in LabVIEW 13.0
    Open the project file.

    7. the opinion that both call nodes execute correctly.

    8. type "c:\xtra\temp\OpenProjectWithLvlibDep.lvproj" OpenProject

    OpenProject $ 'c:\xtra\temp\OpenProjectWithLvlibDep.lvproj '.
    Analysis c:\xtra\temp\OpenProjectWithLvlibDep.lvproj
    Project written in LabVIEW 13.0
    Error: Could not find the project file or file was not a project file (error code 7).

    9. notice that the node version managed while the open failure.

    10 type diff OpenProject.lvproj OpenProjectWithLvlibDep.lvproj

    $ diff-u OpenProject.lvproj OpenProjectWithLvlibDep.lvproj
    -OpenProject.lvproj kills Nov 4 11:28:28 2014
    +++ OpenProjectWithLvlibDep.lvproj kills Nov 4 11:32:37 2014
    @@-13,7 + 13.11 @.
    true
    fake

    -
    +
    +
    +
    +

    +



    true

    Here's another way to trigger this behavior, which shows that LabVIEW occasionally Range the element dependencies:

      1. Open "OpenProject.lvproj" in LabVIEW.

  • Add to the project a new VI and place the constant path of file "Application Directory" his block diagram.

  • Select ""leader "Save All (this project)" and use the default name for the new VI.

  • Type 'c:\xtra\temp\OpenProject.lvproj' OpenProject

  • Notice that there is a mistake once again, as is expected.

  • Remove the "Application Directory" path of file constant

  • Select ""leader "Save All (this project)"

  • Type 'c:\xtra\temp\OpenProject.lvproj' OpenProject

  • Note that the problem has disappeared, as is expected.

  • Add the "Application Directory" path of file constant in the block diagram.

  • Select ""leader "Save All (this project)"

  • Type 'c:\xtra\temp\OpenProject.lvproj' OpenProject

  • Notice there is no problem, which is surprising, because that there should be a mistake because the dependencies item was not tidy.

  • Close the new VI and pull out of the project.

  • Select ""leader "Save All (this project)"

  • Open "OpenProject.lvproj" in a text editor.

  • Note that the dependencies item was put away.

  • Add VI back to the project.

  • Select ""leader "Save All (this project)"

  • Type 'c:\xtra\temp\OpenProject.lvproj' OpenProject

  • Notice that there is a mistake once again, as is expected.
  • NInjaneer_wow wrote:

    The same behavior occurs in LabVIEW RTE: a new project with a constant of the Application in an empty vi directory will return an error 7 - file not found, but still return the correct version of LabVIEW in which the project was created.

    I did experiment with workarounds for this problem, and I found a.

    When I used to get the path of LabVIEW libdir in the ini of the executable file, execution is able to load and inspect the project file.

    LIBDIR = 'C:\Program NIUninstaller Instruments\LabVIEW 2013'

    While it is expected that a stand-alone executable can be placed on a system that does not have the LabVIEW IDE, it is still surprising to me that the execution engine cannot find standard library of LabVIEW without some explicit guidance. What other factors contribute to this behavior?

    References:

  • remove the project workspace

    Hi all

    I'm new to TestStand and have a very simple question.

    How should be done on the deletion of a project to a workspace? I deleted a project, performa a backup. Close the workspace, quit TS. Open TS and reopen the workspace. The project even appear. The date of the workspace shows that it was not updated. See the image on how I deleted the project. Maybe my problem is that I did not remove the project in the right direction. Can anyone help?

    I use the testbed 2014 P1 (32 bit).

    Your

    Huck

    Yes jigg, there must exist before I can delete. I did as what you said and it now works. Thank you very much!!

  • Libraries in the project tree

    I recently noticed that some of my projects have libraries added in a separate the 'library' of the project tree branch, while in others they are simply registered at the level of the base tree; see these two examples:

            

    There is a practical difference between these two provisions, in addition to aesthetics? Can I get in trouble in the second? I'm actually in many of my projects in the second scenario without apparent problems, so I tend to answer 'no', but who knows?

    Hello Roberto,

    The hierarchy of the project tree is only to logically organize your files. However, there is no impact on the operation of the program.

    You can change the hierarchy to organize your files in the virtual folder that you want.

    Starting with 2013 CVI, you can also add subfolders, which was not possible in 2012.

    Constantine.

  • 'Clone' of the project library (.lvlib)

    We have a study on sound localization - move us a speaker with a robotic arm, play sound through the speaker, ask our subjects to point a laser where they perceive the location of the sound and press a button.  We can also turn on LEDs and lasers, adjust sync settings, even to move the sound source.  The various tests are "programmed" by entries into an Excel workbook with columns for the timing, healthy situation, sound settings, etc.  In addition to the Excel workbook, we generate 3 output files - a header file XML that describes the configuration of the recording (analog and digital channel names and scales) and saves the settings of each trial as it is executed, an XML event which records all of the events of "point-in-time", such as Messages, status changes, or modifies the digital I/o, and a file of examples that contains N (usually 16) sampled analog and digital channels sampled at 1 kHz.  We control all of this a LabVIEW Real-time project, which also includes routines to study, manipulate and analyze data of output files.

    The project evolves (slowly) - we are currently at Version 2.0 (Version 1.x was developed in LabVIEW 7.0, this is the complete rewrite 2012/2014, "start from scratch and do it right, or at least better").  We are contemplating adding the ability to study the sounds delivered via stereo headphones (vary the volume from left to right or by adding a small time gap between channels) and calls this Version 2.1.

    To try and prevent "Version hell", we intend to do "backward compatibility" Versions - we will Add some new columns to the workbook Excel for new parameters in headphones, but put in place LabVIEW code to simply "do nothing" (with headphones) if he reads a Version 2.0 workbook where these parameters are lacking.  This allows us to code of Version 2.1 allows to make a Version 2.0 experience.

    We are faced with one of the problems are to know how read and analyze or manipulate data files resulting.  For example, the header file contains specific sets the version of the data, which are analyzed by the XML parser and converted directly into a Cluster of LabVIEW.  Thus a Version 2.0 file must be read by the code who "knows" a Cluster of Trial Version 2.0, whereas a 2.1 file needs a trial 2.1 Cluster.

    When I read the header file, the first thing I encounter is the Version number (2.0 or 2.1).  Knowing this, I could, in principle, use a Case statement to call a Version 2.0 or Version 2.1 analysis routine.  But I am trying to 'avoid a mess', and libraries in the project seems a good way to do so, if I understand how to use them properly.

    [For now, I have to say that I tried a little experiment: I have created a new project, built Library1 in a folder with a 'Hello' and 'Test' Library1, built the library 2 (inside the folder library 2) with 'Hello' and 'Test' (different) and called the high-level.]  Worked well.  I then "took a shortcut" and copied the folder Library1 (outside of LabVIEW) on the menaces3.  When I said that the project to add 3 library, I had a mess of conflicts, which I couldn't resolve.  And I "broke" LabVIEW - even after removing all the .lvlib and the .lvproj files, I couldn't create a project and make a folder to add (Snapshot) without a missing file error to appear.  I did the experiment using LabVIEW 2012 - this problem has affected not only LabVIEW 2012, but also 2013 LabVIEW and LabVIEW 2014, but not LabVIEW 2011.  I spoke with the support of OR, which are also puzzled.  I am currently working in a new virtual machine until I can get LabVIEW "repaired"].

    What I want to do is identify all Version-specific routines in my folder of analysis and include data in this case TypeDefs for the Version-specific parts.  I would then "wrap" all this in a project library Version 2.0.  The code "on the outside" would have its own copy of TypeDefs (she could use the "Latest Version", as external routines are supposed to be 'backward compatibility'.

    So here are my questions.

    1. Suppose that I restructured my project so that I have a record, both "Real" and "Virtual" (in the project) parsing, and it contains a subfolder called Version 2.0 that contains the Version-specific TypeDefs and most of parsing code.  Is there an easy way to transform the Version 2.0 to Version 2.0 Library folder so that when I call functions in this library, they use Version 2.0 of the TypeDefs of the library, regardless of the TypeDefs declared in the main routine?

  • Assuming that I have a folder of Version 2.0 of work and the library, is there an easy way to "clone" to make a folder of Version 2.1 and the library?  If so, all I would need to do the "work" for Version 2.1 of the code would replace TypeDefs of Version 2.0 in the file of Version 2.1 with the "correct" TypeDefs, and (b) add any additional analysis code is required for the new features in the new Version.
  • I apologize for the long-winded nature of this issue.  I look for tutorials on libraries of the project (there are), but none covered this topic.  To pay for your patience, I am happy to write and submit to the OR for a future white paper on libraries of the project - which would speak?

    Bob Schor

    PS - Moderator - if it belongs to another Forum, feel free to move it.

    On the money Bob!  Save under... Duplicate the hierarchy to the new location (requires that the new library offers a new name)

    To convert a virtual folder to a lvlib just to create a new lvlib in the project and move the project members want in the new lvlib Project Explorer does the rest of the book nitty gritty on registration of the members of the lvlib with the new property information.  (You will be prompted to save the members when the composition is changed)

    And Yes, it's the kind of mistake you don't do twice.  And, believe it or not, I had this type of issue used to justify not using projects! "they are too much hassle when you mud round in windows Explorer ' then I asked them if the never borrowed the car of their father and did not him tell you parked above on the next Street.  They now use projects.

  • Best way to pass an array between TestStand, CVI

    Hello

    I was not able to judge or to find the best practice to pass arrays between TestStand and CVI. I'd preferably done in pass pointer to array. For example, if I have a function written in CVI DLLs:

    int GetAverage (double* aBuffer, double aSize, double* aAverage)
    

    TS I have an aBuffer double array [100]:

    -I can't simply pass

    GetAverage (aBuffer, 100, &aAverage)
    

    - or, I can go:

    GetAverage (&aBuffer[0], 100, &aAverage)
    

    -The only thing that is TestStand accepts:

    GetAverage (aBuffer[100], 100, &aAverage)
    

    I don't think not good because the size is just repeated.

    I had no problem if I could write

    GetAverage (aBuffer[100], &aAverage)
    

    but the problem is in this case there is no possibility fo CVI to determine the size of the table, like sizeof (aBuffer) just return, sizeof (double).

    Can you provide me with advice for best programming practices in this case?

    Concerning

    RB

    Hello

    Just in addition:

    Is there another way to access the tables.

    Often, I use for this task, the TS-API. The only parameter you need is in this context of the sequence.

    Maybe you should also visit this example:

    TestStand 2010\Examples\AccessingArraysUsingAPI\UsingCVI\AccessingArrays.seq

    Concerning

    Jürgen

  • VI to determine the name of the project

    For a real-time application, I wanted to determine, at runtime, the name of the project in which the VI has been "content".  I wanted to get the name of the project (even) under four different conditions:

    • on the host, in development mode
    • on the host, in Run-Time mode (i.e. after being built as an executable)
    • on the goal of RT, development mode
    • on the aim of RT, in run mode.

    It is not so easy.  I figured out how to make the first two (use the name property of the active project development and use the next last folder directory of the Application in Run-Time mode mode), but I'm having trouble to get this information to get the target RT code.  Has anyone tried this before?  Did you?  Advice (or even downright Solutions)?

    Bob Schor

    Well, I figured out, but it's not pretty.  In the previous post, I explained why I wanted to do - here I will explain how I did this.

    There are three main modes, under which Applications can run: development mode (when you are programming in LabVIEW and press the button "Run"), Run Time System (an executable on a PC) and Embedded (code that runs on a target in real time, in the form of executable file or development).  Of these, only one mode of development gives you access live (via the Application, the active project property) in the name of the project file.  My goal is to have the user interface and the RT 'chunks' of the project in real time have access on behalf of the project, the system I'll create will use same code on two subsystems, meaning that it will run on the PC at least once in the mode of development .

    The key step is to create a 'constant VI', I'll call CONST name of the project, which consists of a single indicator of string, name of the project, which "held" the name of the project.  I initially thought to use a Global Variable, but there is a technical problem with that I will mention later.  I didn't use CONST name of the project directly, but, instead, use a 'Get the project name' VI that has, for its single release, the name of the project.

    This VI, when it runs, determines the type of request under which it is running.  If it is something other than the Mode of development, he calls CONST project name and returns its value.  If this is the Mode of development, it gets the name of the project, he returned, but just before leaving, he arranges to be updated programmatically CONST project name when it is called in the future, it will return the name of the project (update).  [Then why not simply initialize CONST project name?  I'm looking for a "generic" solution that will always return the correct value, even if I move to another project and don't remember about the change and change - all I have to do to make it work is to run once in the mode of development.  Who has ever developing code without testing before making the executable?].

    I wrote a VI gave the name of project Save, which does the following: he calls set the timer on CONST project name to define the name of the new project (this works even if we put an indicator), calls to use current default to make the new value "stick" and called "Instrument to save" to save the changes.  The problem is that CONST project name cannot be "running" in the State to use current default work without raising an error.  If the name of the Save project is simply called as a Subvi to get a project name, it will be in the State of operation as it is used in the case of non-development mode to get a project name.  The solution to this witch hunt is to use the asynchronous call with-and-Forget 'spawn' name of the Save project.  Finally, we modify register project name so that it starts with a loop "wait", examinging the State of execution of CONST name project and waiting for it to exit the executing State, indicating that it is prudent to make the change.

    Phew!  But it works!  Oddly enough, when I tried this using a Global Variable instead of my Constant VI, I kept getting errors during execution are currently lacking, but despite the mistakes, the code seemed to run correctly.  I found an article (written for LabVIEW 5!) explaining that it was expected as Globals behavior were always in the State of operation.  Actually, I just realized that I had not tried with the call-and-Forget asynchronous schema, then perhaps a decade later, LabVIEW will allow me to do this using a Global without raising an error...

    BS

  • I can compile the project created in CVI2012 in CVI7?

    Hello

    I have the CVI2012 installed in a computer and I create a simple project to write a digital channel based on the example with DAQmx9.7. In another computer, it is installed CVI7 only, I think that the project includes the sources and headers (text files), I wonder if this project can be compiled in version as CVI7 or not? In the computer where CVI7 installed, I have install all runtimes of CVI2012 and DAQmx 9.7 drivers, but when I open the project in CVI7, it said missing DAQmx.h. So, how can I get these headers and get the project compiled in CVI7? Thank you.

    During the installation of DAQmx it should detect the presence of CVI7 and ask you to install support files.

    Have you checked the library menu? If DAQmx is dimmed, you need to select Customize and check the corresponding box in the new window: if it is checked, it means that the DAQmx support is not installed and you must re-run Setup.

    EDIT *.

    I now see in readme DAQmx 9.7 CVI7 in the file is not supported: you need to download a previous version of the driver that supports CVI7.

    NOR-DAQmx 8.8 seems to be the last usable version.

    If you need keep the active project for two CVI machines you will be limited to this version: This means that even when developing in the most recent one you must be sure not to use newer features of DAQmx.

  • TENS of installation in the application directory--> cannot find directory RTE

    Hello

    I couldn't find an answer of fitting about my problem using search, so I'll try my luck by asking.

    First of all: I'm using Labwindows/CVI 8.5

    I created an installer for my application using the Distribution Kit Wizard. Under the tab drivers & components I chose only the 'standard Run-Time'.

    On the Advanced tab, I left the option "Install Labwindos/CVI Run-Time Engine in the application directory" unchecked.

    This installs and works fine at my PC clients.

    Now the problem:

    My client does not want that all files are installed in the Windows\System32 directory...

    So I checked the option "Install Labwindos/CVI Run-Time Engine in the application directory" and created a new installation routine.

    This installs fine and the cvirte folder is also be copied into the directory of the specified program and not Windows\System32... but now whenever my client tries to run the application, it gets called with the following messagebox:

    Cannot find the directory RTE:

    C:\Windows\system32\cvirte

    Which is actually very good, because I wanted to RTE must be installed in the folder of my program, but somehow my request is always pointed toward the search in system32.

    Is there a way to fix this without copying the RTE in Windows\System32 again?

    Given your explanation, I can understand why you see the error message. When you try to locate the resource (bin) and directories of fonts, DLL RTE search in the directory of the process that loaded, then in the system directory. As RTÉ is not installed in one of these locations (instead, it is installed in the same directory as your DLL file), we do not find the directory "RTE". There is nothing particularly wrong with what you're trying to do, except that we can't do well. I'll drop a request to fix this for a future version. In the meantime, you have a few options:

    1. let the RTE to install in the system directory, as it normally would.

    2. manually copy the directory cvirte of your repertoire of the DLL in the system directory.

    3. ask the client install your package DLL in its application directory. The target directory can be changed by the customer at the time of installation.

    I know these aren't the major options. I personally highly recommend the first option, despite protests from your customer. Is there a good reason that it is forbidden to use the system directory?

    A. Mert

    National Instruments

Maybe you are looking for

  • Mail App removed from iPhone6s

    The Mail App is removed from the iPhone to my husband 6 s. How do we get this back. I tried to reset the home screen and the tree Mail search in Spotlight.

  • Cellular data out of all THE updates.

    My cellular data turned on in general, but it is DISABLED for all updates. Brand new, no email, no applications IPhone. This morning AppStore used 260MO on its own while I was sleeping! What is happening on Apple?

  • Satellite A110-180 - update of the Bios for Windows 7 and Linux

    Hello I want to change the following settings in my bios on my laptop satellite A110-180* AHCI for SATADisable the IDE But none of these options.So I thought that maybe I should update my bios.I found the download page, but there are 2 options: Windo

  • How to refine the products according to the requirements of the Satellite L850 series

    I would like to know how can I refine the products on this page: -. http://Gulf.computers.Toshiba-Europe.com/innovation/en/series/satellite-L850-series/1122205/ As you can see, the products on this page are so, and it's really a pain just traverse to

  • Read a resistance of the diode by vs NI USB multimeter

    Hello I read a resistance of the diode at some entrances to supply voltage and I found that to 0.2 V the value of resistance by NI USB-6212: 200 ohms the value of resistance of meter: 2 kohm 0.5 v the value of resistance by NI USB-6212: 500 ohm the v