Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


jon_mcbee last won the day on July 22 2016

jon_mcbee had the most liked content!

Community Reputation


About jon_mcbee

  • Rank

Profile Information

  • Gender
    Not Telling
  • Interests
    I really enjoy playing the banjo

LabVIEW Information

  • Version
    LabVIEW 2015
  • Since

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Composed Systems will be donating an Uncle Bob Book Bundle comprised of "Agile Software Development, Principles, Patterns, and Practices"; "Clean Code: A Handbook of Agile Software Craftsmanship"; and "The Clean Coder: A Code of Conduct for Professional Programmers".
  2. Just got my ticket, I actually remembered to buy it ahead of time this year (although I was still too slow for the early bird pricing so there is room for improvement next year).
  3. Hey guys, I updated the tool based on some feedback from John Lokanis, I'd be interested in hearing your feedback, especially on how to host the VIP. I put the VIP on my blogsite as an experiment to see if I could drive traffic up but I know its not the proper place for it. http://www.labviewcraftsmen.com/blog/labview-class-dependency-viewer-part-2 Thanks Jon
  4. Hey John, I updated the tool based on your feedback and added the force directed graph as a visualization option. Let me know what you think: http://www.labviewcraftsmen.com/blog/labview-class-dependency-viewer-part-2 -Jon
  5. Hey John, I'm a little late to the party, but I am curious what metric you used to drive the size of the nodes in your graph? Thanks, Jon
  6. I dont know if this will help you or not, but would love to get feedback from you on its usefulness. I have attached an example project that compares a very simple piece of code written with a QMH, written with an LVOOP approach, and written with the Actor Framework. I used this as a demo at a recent CLA/CLD summit. It is intended to be an apples to apples to apples comparison for someone who is looking to learn LVOOP/Actor Framework. It was originally posted on the NI Community Forums, but I apparently cant link to the page from LAVA(?) (Thanks Todd). EDIT: Replaced attached files with link to files on the NI Community Forums so that I only have to maintain one set of files: https://decibel.ni.com/content/docs/DOC-32600
  7. Is it possible to call the oldest ancestors implementation of a dynamic dispatch VI? Lets say that I have an inheritance hierarchy where the oldest ancestor is called DUT and has three abstract dynamic dispatch methods (to be overridden and not extended by children): Read Torque, Read Trip, Read Serial Number. DUT has a child class called Mindbender3000, and Mindbender3000 overrides all of the parent dynamic dispatch methods: Read Torque, Read Trip, and Read Serial Number. Somewhere down the road an upgrade is made to the Mindbender3000 product, and Mindbender5000 is born. The upgrade incorporated two main improvements, a clock was added to the new hardware that we can now query using a Read Clock method, and the ability to Read Trip was removed from the device. To account for these changes, a new abstract dynamic dispatch method is added to the DUT class, Read Clock, and a child class of MindBender3000 is created, named Mindbender5000. Mindbender5000 uses its parents implementation of the Read Torque, and Read Serial Number override methods, and overrides the DUT classes dynamic dispatch method for Read Clock. Ideally, Mindbender5000 would use the DUT classes implementation of the Read Trip method, as it is abstract and doesn't really do anything. However, because Mindbender 3000 has already overridden the Read Trip method, the Mindbender5000 product wants to use its implementation. Is there a way to call DUTs Read Trip dynamic dispatch method from the Mindbender5000 class? Lets assume that DUT has other children that need to be able to override these dynamic dispatch methods, including the new Read Clock method. Thanks!
  8. I admit I am not as well versed in UML as I should be, so I may be misreading your diagram. I don't understand why the DUT class holds a reference to the Message class in its object definition.
  9. I see. The Message parent class is abstract and its implementation of the "Execute Message" dynamic-dispatch method does nothing. Message's children override (not extend) the "Execute Message". An extra input is added to the "Execute Message" method for DUT class. The DUT parent class has a dynamic-dispatch method for every child of the Message class. The DUT dynamic-dispatch methods are embedded in their corresponding Message child override "Execute Message" method. The trick to making this work is that the DUT parent class must have an abstract dynamic-dispatch method for every child class of the Method Message class, and the corresponding DUT dynamic-dispatch method must be embedded into the "Execute Message" override method of each Message child class. Is there a name for this pattern? Is this a pattern? Or is this just common knowledge?
  10. I have a problem I am trying to solve using LVOOP, it seems like there should be an established way to solve it but I have been unable to think of/find anything that works. Here is a description, I dont have any code mocked up that I can attach, but if it would be helpful I can put some together. I am writing a test executive that will test multiple families of devices. Each family has the same set of commands, but the commands may be implemented differently (don't have to be though). I have an abstract parent class called DUT, and have children for each device family. I also have an abstract parent class called Message, with a child message class for each command in my command set. This is where I am getting stuck. All devices have the same messages, certain devices implement (structure and parse) certain messages differently. It smells like I want to override based on both device type and individual message, but this is not possible. I am hoping that someone can point out either where I went wrong, or what the logical next step would be. If more information is needed, please ask questions and I will do my best to answer. Thanks!
  11. I found the problem, it was a timing issue that had nothing do with how many subpanels I had running at once, i just had the same problem in each plugin.
  12. I am working on a GUI that is modeled off of this post by DFGray http://forums.ni.com/ni/board/message?board.id=170&message.id=466872&query.id=526816#M466872 on the NI forums. I am using the same LVOOP structure to create plugins that are launched into subpanels. I have five subpanels on my GUI, each subpanel is a different size and functions are launched into the appropriate subpanel based on their minimum window size. The problem i am seeing is that a plugin launched into a subpanel runs much more slowly than a when it is run by itself, I thought I must have left highlight execution turned on in one of the subVI's. As a test I called one of the plugins, without the LVOOP using the Simple Subpanel shipping example and it loads just fine. This makes me wonder if the problem is either the LVOOP, which doesn't make sense to me as it has nothing to do with the VI once launched into a subpanel, or with having multiple subpanels on my GUI running at once. Any thoughts on this? Regards
  13. I am looking at using Trac and Subversion together for project management and wanted to see if anyone else is doing the same. For more info on Trac see here: http://trac.edgewall.org/
  14. Have you guys ever tried Argo UML? http://argouml.tigris.org/
  15. Thank you both for the response. I plan on using the queued message handler inside my modules, using dynamic events to pass commands from a controlling VI to the modules. I was hoping I could find a way to assign priority levels to these events, so i could broadcast an abort command to all modules registered at a higher priority. I think the solution will have to be that I have a seperate event struct only registered for a high priority event that can take control of the producer/consumer that drives the module. Regards
  • Create New...

Important Information

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