Actor Framework Discussions

cancel
Showing results for 
Search instead for 
Did you mean: 

What do you do if you want to change the connector pane of a VI, which has its own Message VI already?

Solved!
Go to solution

Currently, I do the following basic steps.

1. Change the connector pane

2. Update Send, Class Private Data, DO VIs separately.

But this is very time consuming. Any advice?

TailOfGon
Certified LabVIEW Architect 2013
0 Kudos
Message 1 of 7
(4,668 Views)

It's the ugly downside of boilerplate-heavy frameworks. Your class's public interface was a single VI conpane, but now it's three conpanes (Method.vi, Do.vi, Send.vi) and a class (Msg.lvclass). Generating this code is automatable, but modifying it still takes manual labor. And if you propagate a message through the actor hierarchy, with each actor receiving its own copy of the same message? I hope you're billing hourly...

Frankly, we need more tools like the AFMM to make this modification through Scripting. They don't yet exist.

Message 2 of 7
(3,489 Views)
Solution
Accepted by topic author TailOfGon

You can use GOOP Development Suite's Actor Framework support 🙂

This was the first limitation I saw in the Message Maker, so I added this in GDS, so now I just right click on the VI and select "Update VI's Message Class".

http://lavag.org/topic/16293-goop-development-suite-v45-is-released

http://goop.endevo.net/GDS/videos/GDSFeatures4v5/

Cheers,

Mike

0 Kudos
Message 3 of 7
(3,489 Views)

I would advise getting in the habit of making your messages use typedefs.  You might even have a cluster with just one control in it to begin with.

Casey

Casey Lamers


Phoenix, LLC


casey.lamers@phoenixwi.com


CLA, LabVIEW Champion


Check Out the Software Engineering Processes, Architecture, and Design track at NIWeek. 2018 I guarantee you will learn things you can use daily! I will be presenting!

0 Kudos
Message 4 of 7
(3,489 Views)

CaseyLamers1 wrote:

I would advise getting in the habit of making your messages use typedefs.  You might even have a cluster with just one control in it to begin with.

I have to chime in and recommend, based on grim experience, that he only do this if the typedef does not belong to the actor's lvlib or lvclass. If it does, it'll link that actor to every other that uses the typedef and force the entire hierarchy to be loaded into memory (and to be recompiled on a change) when any one is loaded or modified. In large applications like the one I'm working on now (1000+ VIs, 50+ classes), it quickly becomes a total nightmare to modify any existing Actor or Message.

Message 5 of 7
(3,489 Views)

CaseyLamers1 wrote:

I would advise getting in the habit of making your messages use typedefs.  You might even have a cluster with just one control in it to begin with.

Yeah, I have to wave people off of the typedef option. It's not the panacea you might think it is. And clustering your inputs as a single element just makes the Send.vi harder to use.

It's nice that Mikael has the rescripting support. Wish we had that in LV itself.

Message 6 of 7
(3,489 Views)

I like the idea of automatically updating the message VIs. I wish LabVIEW does something similar to dynamic dispatch VIs as well. Maybe by right clicking on one of overriding VIs and select 'Apply Parent VI's Connector Pane' or something like that

TailOfGon
Certified LabVIEW Architect 2013
0 Kudos
Message 7 of 7
(3,489 Views)