Mutation of class LVOOP

Hi, I'm starting out with LVOOP.  I have read the main articles knowledge base, had a small amount of training (on the course of Advanced Architectures) and have had a play with my own classes.

Now I want to use OOP for a test system, so I created a class with many types of standard data, SLNA, slna tables, Int32s, etc..  I created a load of accessor screws and a few screws of manipulation, and which was very good.

So I decided to change the name of a member in the control of private data (.ctl) "Range" to 'Tension Spread' as it is more descriptive for me.  Having used clusters several times before that I expected the bundle names would simply update automatically.  This is not the case.  After doing some research, it seems that it's changing of the class.  I can see why LabVIEW would like to monitor the changes made to the control of private data, but I want that all my screws to refer to the latest version of the .ctl file.

I had a search online about this, but now I'm more confused than when I started as there seems to be no simple "right-click and select Update" type the command.

Any help much appreciated.   By the way, I'm using LabVIEW 8.5.

Well, I think that I fixed it.  After much digging, I found that LabVIEW does not dynamic screws have a private scope.  Of course, he didn't just letting you know said you the class has been broken and that the VI should be fixed.  Ooh, thanks!  How my screws happened to have dynamic links, I don't know, I always ask for static.  However, she chose somehow to change that on his own without telling me.

Anway, all seems ok now, but it would be nice to have more clear explanations of error!  And clearer help files, dynamic dispatch is covered in part on several help pages, all in one place would be just too obvious I guess!

Thanks for your help, especially to the TST!

Malcolm

Tags: NI Software

Similar Questions

  • color of the icon class LVOOP

    I'm confused and I think I must miss a (simple?) detail somewhere.

    I'm updating the icons of all the members of a class of lvoop of a different color. Specifically, a shade of blue (RGB = 0 - 96-128). However, I get another shade of blue (RGB 0 - 102-153). I wonder the reason for this?

    I have attached my example and here are the steps I followed.

    See you soon,.

    Chris

    CBL - Amo,

    It is strange that icon editor changes color on you.  I was able to reproduce the swap of color following your steps and while I don't know exactly why this is happening, I have a good idea.

    Something strange is that, even if icon editor allows to 24-bit color, the LabVIEW diagram use only 8-bit color.

    http://zone.NI.com/reference/en-XX/help/371361L-01/lvdialog/icon_editor/

    My best guess is that you have selected the color 0-96-128 in editor icons, the closest, you can get in the LabVIEW diagram is 0-102-153.  This isn't a definitive test, but I took your class and VI who told me they had stripes of different color and both dropped in a new VI.  I took a snip of that and when I looked in the paint, I noticed the two strips were the color 0-102-153.  It's pretty ridiculous that the Publisher allows you to choose from a range of 24-bit color, but that's what I think is happening.

  • Class LVOOP process data Bug?

    Hello world

    Not sure if it is a real bug, but I have seen that he sent anywhere.  I created a really basic LV class with members of private data and some data access screws when I renamed one of my data members then name didn't and don't get spread no screws.  I tried record, closing, reopening, changing and assistance to apply the changes before the record, everything I could think of, but a bundle or unbundle by name in any new or existing VI would show the old name of the data member.  I ended up deleting the data and inserting a new one with the new name, and who finally spread the change screw.  I'm in LV8.5 under XP, and they were all inside structures case (error checking), so I don't know if that has anything to do with it.

    What is an existing bug?  I'm sure I'll run into it again, and I prefer being able to rename my data instead of having to remove it, add a new data point and reorganize everything.


  • Determine the name of class LVOOP? d ' a class of child...

    Hello

    I have a number of modules (classes) that inherit from a base class called "Module".  I have all these in an array of type 'Module', I would like to save some information of each of these modules, but I need to make the distinction between each module.

    Is there a way to determine the class name of the data cable?

    Can I use the flattened string Variant, but I was wondering if it had built in property for this node/function?

    Thank you
    Jonathan

    Examples of joint:

    Malkieri,

    There is no generation in function that does exactly what you are looking for, but you can use the 'Get LV class Path' VI to return the *.lvclass of an object path given.  Using this way, you can either parse the name, or you can use Server VI to get the name of the class, as shown in the picture as an attachment.

    Chris M

  • A copy of the class LVOOP


    Use the file > save as on the class library itself. Click on "save a copy".

    If you need to duplicate the entire hierarchy, create a specification to Build for "Source Distribution".

  • Ability to create a 'substitution VI' programmatically for a LVOOP class?

    I'm now quite a bit further with my class LV generator VI I mentioned previously (see here). However, I'm stuck again: I want my VI generator to automatically create a new 'alternative VI' (i.e., overrides a method of the parent class) for the newly created class.

    In VI server interface, I have not found an invoke node to create a new "VI to ignore." Is it possible to do, maybe with a VI wrapper like the one that I was provided to programmatically set the superclass of a class LVOOP?

    Thanks in advance for any help!

    It works more or less as you suggested, but it requires two additional steps: since the VI script that replaces the front panel control loads the original control at run time, the old class must be copied as well (and deleted again subsequently). The complete procedure (tested and functional!) is:

    1. Copy the VI to a new location.
    2. Copy the original VI class to the new location (just temporarily necessary)
    3. Add the new VI to the new class
    4. Change the input to the new class terminals using VI scripts
    5. Remove the original class to the new location of the VI

    Thank you much for the help!

  • LabVIEW account crashes with a Windows user but not another

    I am facing the following problem:

    When my colleague is connected with her Windows user account and start my main VI (the startup process is long enough, because many LVOOP classes are instantiated dynamically) LabVIEW, LabVIEW block eventually (that is, the process of LabVIEW just end itself witout new order). The log file down LV (see attached file for more details) contains the following interesting line:

    c:\builds\penguin\labview\branches\2010\dev\source\linker\HeapLinker.cpp(372): DWarn: double object (0x1e07444c) in 1229150280 Ref for [LinkIdentity 'XSettings.xctl' [workstation]

    XSettings.xctl is an XControl I did, which is part of a façade of a class LVOOP method which is loaded dynamically into a school of my main VI.

    Oddly enough, this problem will NOT occur when I'm connected with my own Windows user account.

    Details: LV2010 SP1 32-bit; 64-bit Windows; We have all two administrator accounts.

    Does anyone have a tip how this problem could be solved?

    Mass of compilation of the affected class LVOOP solved the problem.

  • Is there a decompiler for LABView v4 - v6

    Hello

    One of our customers (pharmaceutical industry) has a LABView application compiled on Win98 + 10 years. The source code is not available, and it seems that no one knows what is under the hood. According to the dates of Win98, I expect to run a version of LABView between v4 and v6.

    Is there a decompiler software, ways to look at the source code or to retrieve information of bases to start reverse engineering.

    Thanks for you answers!

    Alex

    [email protected]

    The whole issue is a bit more complicated. Prior to LabVIEW 8.6 the internal resources of the executable was indeed an archive VI LabVIEW (LLB) and since LLBs didn't have a single hierarchy depth that is somewhat like a single directory. This caused trouble with the latest library LV based instruments as well as classes LVOOP drivers that uses the same name of VI, but with another library prefix each, so that LabVIEW had to move these files to directories external during the generation of executable files, to avoid name collisions.

    In all new versions of LabVIEW, the internal executable resource in which the screws are stored is actually a default ZIP file. You can always force LabVIEW use a LLB format to store files, options by checking the 'use LabVIEW 8.x file layout' in the advanced compile options. Now the ZIP resource was initially stored as a simple ZIP to the format of data resources, and that caused some problems because most ZIP utilities simply analyzes a file for the header of the ZIP file and open it as such, even if the ZIP file resource is anywhere within the file, so that almost all ZIP tools could open an executable of LabVIEW. NEITHER changed this format: ZIP tools can recognize him either.

    Now, yes you can look in the resource LLB and ZIP in the past (and still with a little extra effort) but before everyone screams oh "My precious IP is in the street" Please be aware that the only thing you can do for this resource is to obtain the names of VI and if you manage to load in the fall version of LabVIEW exactly just generic icons on a diagram to see the component connector. Unless of course you also check the "enable debugging" checkbox in the advanced build options, that leaves patterns and the frontpanels in the VIs and actually create something similar to a source distribution packaged.

    So without activate debug compilation option, someone is actually not much more than what he can do by opening any binary DLL created from C, C++, or any public compiler with the tool of Microsoft dependence and MUCH MUCH less than what you can get in any just put such DLL through a disassembler.

    And to my knowledge there isn't a disassembler as tool for LabVIEW VIs to date, and I would consider about 1 billion things more interesting to do than to try to create such a thing.

  • Ability to set the legacy of LVOOP class programmatically?

    I want to schedule a class generator:

    The user selects an existing class of LVOOP and the generator produced a LabVIEW that contains a new class is a class of children of the selected class previously.

    Is it possible to set the parent of a LVOOP class programmatically class?

    Attached, there is a VI (main.vi), which creates a new project and add two classes (Parent.lvclass and Child.lvclass). How can I change the VI, such that it makes the class Child.lvclass is a child of Parent.lvclass?

    Thank you very much in advance for any help!

    You use the ActiveX interface. Is there a reason for this? If you stop using the ActiveX interface and directly use the LV, LV classes have a complete set of methods/properties available.

    As long as you use the ActiveX interface, I have no solution for you. Nothing about the libraries (which inherit classes LV) has already been exported to the ActiveX interface.

    Using VI Server types, your code translated as indicated:

  • LVOOP: Common accessor for the child classes?

    I am reletively new to LVOOP and OBJECT oriented programming in general. I used very simple classes as a replacement for clusters several times, and now I have an architecture intended to convert most of my code into classes, dynamic distribution screw and similar.

    However, I run in to an issue, which basically boils down to laziness: I really don't want to do a lot of the same dynamic send screws I want to have a VI parent to be able to write a piece of data common to all children. Preference gives an error if the child does not have this data element.

    I guess it's quite similar to dynamic distribution, but without having to write a DD VI for each class.

    Is it possible to have the VI parent to access the data of the child? If so, how?

    Here is an example of my hierarchy:

    Test.lvclass (parent)

    DC_test.lvlcass (data: test number, 2D, time stampresults)

    Transfer_Curve_test.lvlcass (data: results of tests settings, 1 d, timestamp)

    Breakdown_test.lvlcass (data: test number, 3D, timestampresults)

    ... 28 another test

    As you can see, the data type only common between them is the timestamp. I want to be able to use a VI in the parent class to write data in the child class.

    You have it backwards autour.

    The data that is common belongs to the parent class, not the class of the child.

    Data that are not common may not be processed by the parent class and must be transformed by the child class.

    You don't need to CREATE truly dynamic shipping screws for a common data type.  If you just don't set the VI at all, it will be called the parent instance.

    Shane.

  • (Question LVOOP) How one access the data of another class in another class?

    Hello-

    Ass title suggests, how do I access another class (or is it class?) data from another (different) class?  I will attach a picture showing where my problem is...

    I was told this:

    http://zone.NI.com/reference/en-XX/help/371361H-01/lvhowto/setting_scope_classes/

    May contain some helful info, but I can still understand how to unbundle Renault of classes inside the component class data (as seen in the attached photo).

    I think there could be something simple I'm missing here when it comes LVOOP or OBJECT-oriented programming in general... If any of you are willing to help me, it would be much appreciated!

    Thank you!

    -pat

    Personal data are always private, you can never set public. Unbundle cluster function can be used only on the thread of class when he is in the class. If you need to access private data, you must create accessors.

    It of simple, just the class right click and select new, VI for access data members. He invites you to a dialog box to fill you with what you want to create, elements of data and if you want them available through property nodes (recommended). Once completed, this will generate the Afterward screw., you can use in any other VI. The nice thing about making them nodes of property is that you can plop down a property node and it thread class, and all the created accessor functions will appear in the list.

  • Why the parent class does not report data for child in LVOOP class?

    Attached is a practical program that I wrote to learn about the legacy with LVOOP.

    I have the impression of OOP is a Parent class describes the type of object.  Then the children inherent description of the parent.  The child may also have additional qualities, but it still contains the description of the parent.  If a child does not have a VI bearing the same name as the parent and the parent VI will be loaded and executed.

    My questions:

    (1) why does the Parent.lvclass:Read.vi not report 'Child' in the channel indicator when the child write VI has been sent?

    2) matches the data of the child, do not at all seen by the parent company even when it has the same definition (that's the String)?  I understand that the Parent do not know anything about the unique child elements, but I think we should know about the common themes which inherited the child.

    Here is my sample code:

    These are two different sets of data. The parent class has a data set containing the string, the class of the child also has a data set containing the string, but both of these channels are separated.

    This can be made apparent, by changing the names of the channels based on their respective categories:

    What you want is for your children, class VI write to access the data of the parent class. You can do this with a simple data VI member access in VI of the child:

  • Combining LVOOP DVR with dynamic distribution class and asynchronous Runtime Preserve

    OK, the title seems like a cornucopia of terms LVOOP.  But there's a reason.  It is sort of an extension of THIS thread.

    Do I have recently created a LVOOP approach to load completely asynchronous user interface elements into sub-panels.  This I have combined with a global repository for objects (which are essentially the singletons with functionality of the user interface) which are shared via DVR, thus eliminating a large number of synchronization headaches).

    This means that I can have a universal framework to initiate a secondary user interface elements.  Changes made to the object there are automatically reflected in the global repository.

    So far so good.

    What I do like is a combination of two buildings of apparently clumsy code that I need to keep things running.

    Construct odd 1:

    I defined a function "Launch UI" in my parent class which is the dynamic distribution (which allows to take care to launch its own UI of each object).  It takes a parent DVR as second entry object which sure is the exact type and the type of object called using the code below.  The Type REAL to two entries for the launch of VI in PEI are identical.  This is guaranteed because I need every new class instead of this function.

    Here I pass the DVR from outside to 'Launch' VI International preliminary examination, but the object obtained within the IPE retains information for DD thereby ensuring that the VI called for the launch of the user interface is identical to the type of object in the DVR REAL.  It works well and putting this bizarre construction within the parent class, abuse is minimized, it works very well and seems to have no major side effects.

    So now we have a VI running asynchronously in the background that belongs to a specific object, but has a DVR which it * thinks * is a parent Type, but because of the measures taken previously, is actually of the same type as the object itself.

    In order to make use of the functionality defined in this kind of real object, I continually have to re - interpret the object within the IPE as described below.  Otherwise only the Parent feature is available.

    If I access only methods of the parent class, then the Preserve feature is not necessary.

    Is there a more elegant way to do it?  I find the net result of this code and cast to be really useful and much easier to manage the road non - DVR since synchronization problems disappear.  Through the use of the near-atomic REI, we remove the chances of blocking.

    All editing in the asynchronous interface user of VI is automatically reflected in all subsequent use of the DVR.  Even if digital recorders are not shared between the screws, this makes it easier (for me) the puzzle of the synchronization.  If you start this expansion beyond the limits of a single VI, the benefits in synchronization becomes really huge.  You can even have several interface user objects based on the same data in the background without additional synchronization needs.  Required only one synchronization is a global 'data updates' for the object in question, in which case the UI elements simply update their indicators and the DVR's controls again.  It is trivial.

    So, I am convinced that the net result of this is very beneficial.

    My question is if there is a better, safer, or more 'official' way to do?

    I was about to start a new idea to combine the 'Preserve Run time class' and Terminal DVR of the International preliminary examination so that the casting is done automatically.  We could then have a double entry in PEI, the DVR (of the base type) as well as the ACTUAL Type of the object, but of course to return an error if the types are incompatible.  It would be like an "imposter" DVR of entry for International preliminary examination which allows a re-interpretation of the object type.

    Would all of this go away if we allowed dynamic distribution work with DVRs?  No doubt.

    Shane

    I agree that the deletion of bizarre construction #1 probably requires a dynamic send on DVR.  Unfortunately, if you look at the post of the exchange of ideas on that, there are a few nasty subtleties concerned by the application, so I wasn't expecting any time soon.

    For bizarre construction #2, you can cast the DVR itself.  Make a constant DVR that refers to the class of the child and lowered it seized goes in PEI.  If you need to return the parent type after the International preliminary examination, branch just the wire DVR before melting and use it as your lead.

  • Error 1448. LVOOP: Referring to objects of the child class

    Hi all.

    In a project using LVOOP, I defined a class parent with several attributes. Of this class, there are three classes of children who inherit the attributes of the parent class and also have their own.

    Imagine that I instantiated an object belonging to the parent class and initialize its attributes. So I want this object even belong to a class of the child in particular, and refer to its attributes in the class of the child, of course, keep the values of the parent class. How can I do?

    I tried to use "in a more specific class" tool but I get the following text: "error 1448: bad type cast." LabVIEW does not deal with the run-time value of this class of LabVIEW as an instance of the given class of LabVIEW. »

    Exactly the same problem is committed and solved here http://lavag.org/topic/7473-lvoop-class-variable-as-child/, but because the links are temporarily disabled I can't download and understand the code example, which shows what it says there.

    Thank you very much
    Francisco.

    Hi Francisco,.

    Take a look at this thread: http://forums.ni.com/ni/board/message?board.id=170&message.id=362388&requireLogin=False

    Christian

  • Child model LVOOP with class factory problem change out business structure

    I must do something wrong, but cannot escape.

    I'm trying to create a child object (see the bottom row of the class hierarchy) by using a case based on an enum variable structure.

    When I trace the code I have the 'ssh' Connection Type and it executes the appropriate case, and I can see that the SSH.lvclass has been created, but when it happens outside the Structure box case it suddenly is a SFTP.lvclass object. The real wire when I click on it in the diagram also shows as SFTP.lvclass wven if the VI it will is certainly the ultimate parent of UserInterface object - all.lvclass.

    I tried to remove the wire and put new but it always come back to SFTP.lvclass.

    What Miss me?

    My class structure is

    Actual code

    Thank you very much, David

    dpnsw wrote:

    I've rechecked everything and if I remove the wire from the SFTP focus out of the structure of matter, then suddenly becomes the object off structure business wire and SCP.lvclass object. If I delete this thread then becomes an object of Portforwarding, then an object netConf and if I delete it finally becomes an object of ssh.

    I think you may be confusing the thread name (taken from the names on one of the constants) with the type of yarn (which will be the common parent of all the constants).  Rename your constants, as anything other than their class name, and you will see.

Maybe you are looking for