Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


K-node last won the day on May 29 2014

K-node had the most liked content!

Community Reputation


About K-node

  • Rank
    Very Active
  • Birthday 05/10/1958

Profile Information

  • Gender
  • Location

LabVIEW Information

  • Version
    LabVIEW 2016
  • Since

Recent Profile Visitors

1,845 profile views
  1. For the VI that is going idle, why not just use the VI Invoke Node with the Front Panel:Close in its ChangeView event handler. Then for the VI that is going visible, use SubPanel Invoke Node with Remove VI followed by Insert VI in its ChangeView event handler. I would add a Clear Errors in between in case there is nothing in the subpanel. You might also add a Front Panel:Close in front of all of this in case the VI is already being displayed somewhere along with a Clear Errors in the event it is not currently visible. Your race condition you describe would not occur. However, your u
  2. I am a bit confused so I will write it as I understand it. Your class has some private data that has in it a cluster. I think this is what you call the object control element. You added a accessor method to Read this cluster as a complete block (not the element of the cluster). I think this is your property node. And it is used by some member method vi. In this member vi, you used the Read <cluster> property node and then the Bundle By Name primitive to set the value of the desired element. At the end of this, you expected that the value supplied to Bundle By Name would be in th
  3. I periodically do what Paul suggests; adding what I think might be a class with few dependencies. Before doing that set the 'Arrange By' of the Project's My Computer to be Custom. The Dependencies should already be 'Same as Parent'. You have a better chance at figuring out where that odd dependency came from when you 'Find callers' on a class, class data ctl or class method.
  4. If done right, the collection class should not know anything about the classes it contains. Though not using a class, in the attached example I have included a function that takes an array of vehicles and returns a properly cast vehicle (vehicle, truck or car). It will error if you index a car and expect a truck. You could actually make the icon look like the Index Array icon. Anyway it is an example of the use of the Preserve Run-Time Class node which often confuses the new OOP user. I do agree with Paul in that once the entities are in an array they should be considered homogeneous -
  5. Yup, I got that. Not happy with it, though I do not have the CompSci background to say exactly why. One thing that makes me uncomfortable is that as a developer using this API, I would not expect it to error if I asked a simple question like 'what is your capacity?'. Or more importantly, why I am allowed to ask this question on an arbitrary vehicle if it is truly not a valid request. That aside, what if I have a chain of inquiries to do that are specific to a truck: capacity, # of axles, gross vehicle weight, etc. Do I create a static method that encapsulates the To More Specific no
  6. Here are a couple ideas. Do all vehicles have a 'Capacity'? If so, you might consider having a method or property with dynamic dispatch terminals that returns Capacity. It would be defined in Vehicle.lvclass. Car and Truck (Motorcycle, Boat, etc.) would override to supply their respective capacity if they had any. By default, Vehicle.Capacity could return 0. Also, consider creating a Collection class that holds the array (or some container) of Objects. Methods like Add would allow you to build the Collection up. GetAtIndex would return the Object. Adding an LVObject terminal to
  7. In case you or others have not seen this article... Implementing the State Pattern in Actor Framework (https://decibel.ni.com/content/message/49271#49271)
  8. reteP, Watch your post at https://decibel.ni.com/content/message/62163#62163, I will be responding there with more information tonight. -Kurt
  9. I just want to make sure I understand this. Pre Launch Init.vi is actually called from Actor.vi which is reentrant and launched by the ACBR node in Launch Actor which is non-reentrant. However, at runtime it is operates like a non-reentrant VI since another Actor.vi/ACBR will not happen until the 'active' Pre Launch Init completes and the new Actor's Enqueuer is sent back to Launch Actor. So unless some developer calls Pre Launch Init from somewhere else in their code, albeit a bad practice, there will only be one shared clone. If that is the case, I take back my statement in Pos
  10. I misunderstood the statement. Launch Actor is not reentrant, Pre-launch Init.vi is reenttrant. Phew, I thought my lvlib got whacked somehow.
  11. > Pre-launch Init.vi is called under Launch Actor which is deliberately not reentrant. Really? Crap! Somehow mine got changed. I am sure this was discussed somewhere, but what is the best way to protect Actor Framework.lvlib and its files from getting altered? Do I write protect the files in that folder?
  12. Non reentrant VIs called from pre launch init will cause the others to wait. Just a thought. Update: If you look ahead at posts 14 and 15 you will see that though Pre Launch Init is reentrant, it will never act like a reentrant vi during the launching of an actor. So making any Pre Launch Init supporting VIs reentrant will not improve the launch performance.
  13. Just a note for those booking a hotel thru the NIWeek portal. There are two pages of hotels. Last I looked, the second page only has two hotels, but those may be the ones you prefer. See you all there!
  14. Perhaps if your polymorphic VIs wrapped protected, dynamic dispatch methods that can be overridden by the sub-class. I supppose the protected method could take a variant.
  15. jackmax, AQ last year posted this: http://forums.ni.com/t5/LabVIEW/A-more-successful-experiment-in-creating-compositable-user/td-p/1276802 Look for his post with v2.3, I think that is the latest. While it does not answer creating your tab control, it does show how to mimic the creation of multiple controls on a front panel. Controls are not really created, but rather an image of the control is drawn on the front panel. At least I think that is how it works. Kurt
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.