Eino Muidugi Posted February 25, 2011 Report Share Posted February 25, 2011 Hello everyone, I have a problem with my LabVIEW project. It has a general parent class I call “device” that includes common parameters and many public static and dynamic dispatch VI-s. Many dynamic dispatch VI-s are overwritten in inherited child class “subdevice” e.g. initialization VI-s etc. Child class has it’s own more specific parameters and methods. In the project has a general VI (device_PID.vi see the picture below) where I use my child class object and manipulate the class data. There goes the real action. Everything works fine with one member of child class. A problem arises when I add new class inherited from “device” class to the project. Then, my general VI and subVI-is are not executable. Example from Labview error details list: 1) “The subVI is not executable. You must fix all errors in the subVI before this VI can run.” 2) “One or more of the set of VIs which this dynamic dispatch subVI may call are broken. Each LabVIEW class may own a VI with the same name as a VI owned by the parent of the class or older ancestor. The dynamic dispatch subVI will call one of these VIs, chosen when the subVI actually executes. If any of the VIs are broken, then this subVI also is broken.” If I enter the subVI the error list below appears: “This VI's owning library has some problem. The library has blocked the VIs that it owns from executing until the problem is resolved. Please see errors listed on the library.” Why are some dynamic dispatch subVI going broken? Maybe someone can explain why it happens and how to avoid it. I have got stuck at the moment and can’t find a solution. Maybe the solution is already available somewhere in the forum but I have’nt found the right keyword yet. Many thanks in advance Quote Link to comment
Francois Normandin Posted February 25, 2011 Report Share Posted February 25, 2011 Why are some dynamic dispatch subVI going broken? Here are some pointers for you. The list is not extensive but you might be in one of these situations: 1- One of your Dynamic Dispatch VI doesn't have the same connector pane (and datatypes) as its parent counterpart. 2- You have a Dynamic Dispatch VI that is set to require all child classes to override it, and one of the children doesn't override it. 3- You have a private VI that has Dynamic Dispatch input on its connector pane, which is prohibited. 4- You have one of the dynamic dispatched VI that is broken. Check all the hierarchy up to the parentmost VI. Quote Link to comment
Eino Muidugi Posted February 27, 2011 Author Report Share Posted February 27, 2011 2- You have a Dynamic Dispatch VI that is set to require all child classes to override it, and one of the children doesn't override it. Thank you, François You helped me to solve my problem. You gave me the right pointer. Such problems can occur if the project has grown large enough so you do not remember all checkmarks you have set. In my experience, Labview does not show the VI list you have to overwrite. If I-m wrong please correct me. The solution was checking all my VI-s in parent class and I found couple of unnecessary checkmarks at the moment. Thanks once more and success to you! Eino Quote Link to comment
Aristos Queue Posted March 1, 2011 Report Share Posted March 1, 2011 Labview does not show the VI list you have to overwrite. If I-m wrong please correct me. If you do New >> VI For Override on a class, the dialog that appears has an asterisk next to any VI that is marked as Must Override. Perhaps we could tweak the error feedback in this area. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.