I am running calls to a various stored procedures in parallel, each with their own connection refnums. A few of these calls can take a while to execute from time to time. In critical parts of my application I would like the Cmd Execute.vi to be reentrant. Generally I handle this by making a copy of the NI library and namespacing my own version. I can then make a reentrant copy of the VI I need and save it in my own library, then commit it in version control so everyone working on the project has it. But the library is password protected so even a copy of it keeps it locked. I can't do a save as on the VIs that I need and make a reentrant copy, nor can I add any new VIs to the library.
Does anyone have any suggestions? I have resorted to taking NIs library, including it inside my own library, then basically rewriting the VIs I need by copying the contents from the block diagram of the VI I want to "save as" and pasting them in another VI.
I'm not able to solve DVRs problem. See project file.
1. IO.lvlib exists in two versions: one with single variables + processSimulation.vi that simulates process/machine i.e. takes outputs, calculates process behaviour and writes inputs; the second version of IO.lvlib has variables as IOaliases. Simply swaping these two versions allows to run project on real target with machine or to run project on PC without target/machine. Thats why I use these IO.lvlib variables.
2. Every subsystem is an object/class with method DoSomething that calculates response to inputs and writes outputs.
3. I¨d like to call these objects DoSomething.vi method in one loop. Thats why it's not possible to have inputs/outputs as terminals of DoSomething.vi
4. I've tried to solve the problem with DVRs: every object is created by constructor including inputs/outputs DVRs initializing. However I'm not able to use DVRs inside DOSomething method. What am I doing wrong?
One solution is to avoid loop call and spread all (about 50) DoSomething.vi calls including inputs/outputs terminals onto block diagram. But this is definitely not well arranged solution.
Do you see anything wrong concerning my solution in general? How to access DVR inside class method? Any other ideas, comments? Thanks.
I cannot figure this out.
I made some changes to the private data of a class that caused the various unbundle nodes to get mislinked when they tried to auto-select the right new elements, leaving several broken methods. No problem, I thought, I will revert to the previous clean copy in Source-code control (using TortoiseHg). However, whenever I reopen the class, the unbundle nodes are still mislinked and VIs are broken! I reverted the entire codebase to a week ago to be sure I had a good copy, and I rebooted the computer â€” still broken! All my methods, even the unbroken ones say they need to resave because â€œType Definition modifiedâ€.
My question is: what is modifying my â€œType Definitionâ€? It canâ€™t be any of my source code, so what can it be? Where is the change located on disk?
I am going to be developing a lot of .lvlibs for reuse by others, and I would like to quickly generate documentation for them. I started programming a tool that recursively looks through a library by using the "Owned Items" property and iterating through those in order to find folders, .vis and .ctl. Then using the "VI Documentation VIs", the tool would just output a word document that contains VI icons, terminal lists, and descriptions. Does a similar tool already exist? I would gladly use such a tool if it already does.
I've been using Labview for 6 years now for research and one of the most confusing things for me is how code is supposed to be managed. I have been using Tortoise SVN with folder organization but with things getting more complicated I am starting to wonder what the "right" way of doings things is.
I've looked through a variety of posts and official documentation and haven't found what I am looking for (or haven't realized it was what I needed).
I'm using LV2009 32 bit, JKI TotoiseSVN Tool 22.214.171.124 (demo), Tortoise SVN 1.7.6, Win 7 x64, and have little interest in actual code deployment.
Features I am looking for:
- avoiding cross linking problems
- prompts to save a vi only when it has been changed
- svn integration
- code that works with multiple developers instead of corrupted files (mainly thinking about project files)
My code base consists of project or modules (not lvproj) just a set of code in a directory & subdirectories. When I am running a program, many of these modules will run together and collect data, with a messaging system in between where necessary. In addition I have generic code libraries (not lvlib), with generic functions (math, string, table, server, etc). It seems like my code libraries should be lvlib files. After some reading it seems like Project Libraries can be used for preventing namespace collisions. On a side note the term Labview Project Libraries is very confusing because I think of Labview Project Explorer which I have no gathered does nothing for changing the namespace. I did happen to find this link, which helped get me started but I'm still not understanding some things.
As a general rule I pretty much want library membership to always apply to files that are in my libraries directory, which doesn't seem possible.
Question 1: How do I delete a library file via SVN and remove it from the project. I am using the JKI TSVN toolbox and removal of the file doesn't seem to effect removal from the library.
Question 2: If I create a vi and later decide to move it into the library, how do I accomplish this in Labview with SVN tracking. For example, if I create a vi in one of my modules and realize that it is fairly generic and would be better in a library, how do I move it to the library (ideally on disk and into the library file) so that both Labview and SVN are happy. Another situation might be moving a file from one module to another module, ideally I could move both library association and disk location.
Question 3: If I am running multiple modules, how do I ensure that they have no namespace collisions? Should these be libraries as well? Do I only need a project if I want to deploy my code?
Question 4: When someone creates a vi outside of the library but in the library directory how can this be detected and fixed?
Question 5: Is there any way to get better svn integration into the lvlib and lbproj right click menu? My current approach would be to do this through the tools menu (tools -> TortoiseSVN -> rename). Side note, this doesn't doesn't currently work on my computer although the actual TortoiseSVN through Windows Explorer works just fine.
Question 6: My files are constantly prompting for saving. It seems like most of these are changes from other files and not the file I changed. Since I don't know really know how this works I am not sure what exactly is going on. The end result though is that I want to minimize version changes (as tracked through SVN). I seem to remember reading somewhere that in LV2010 you can separate source code and compiled code. Thoughts? Would this be fixed by better lvlib and lvproj usage or is something else going on?