LabVIEW Channel Wires

cancel
Showing results for 
Search instead for 
Did you mean: 

Channel Wires Entering and Leaving a Structure

Some channels allow forkings. Others do not. This one does not.

0 Kudos
Message 11 of 27
(1,617 Views)

@sth, Did any of the previous mockups try for an even MORE 3D effect like this?

Channel_Wire_Tunnels_Mockups.png

I do understand the "excessive noise" problem mentioned by Jeff, but this WOULD enable distinguishing between a psudo-tunnel and a channel wire that runs underneath a structure.


~Tim
0 Kudos
Message 12 of 27
(1,617 Views)

At this point, we have made the decision to stick with the there-but-not-there tunnels for LV 2016 first beta. We will have a whole lot more diagrams in the form of shipping examples and templates for users to look at with 2016. We'll see what kind of feedback comes in at that point. Between first and second beta we can make a graphics change if the beta community pushes for it.

At some point, you can go to ni.com/beta to request to be in the beta program. I do not know when sign up opens... LabVIEW 2016 is not currently in the product lists. I bet January.

0 Kudos
Message 13 of 27
(1,617 Views)

Not forking, if I understand correctly what you are calling forking.  Two independent sources, call then #1 and #2 both are fed different data.  Loop A has these two writers.  Loop B has one reader.  Loop C has another reader.

Screen Shot 2015-11-23 at 8.35.38 PM.png

Is this somehow syntactically wrong.  I don't get a broken arrow until I try to run it.

LabVIEW ChampionLabVIEW Channel Wires

0 Kudos
Message 14 of 27
(1,617 Views)

There is no fork in your picture. A fork is just like any other wire forking. You can have as many independent wires between two loops as you want -- although I strongly recommend you never have more than one, just like I strongly recommend that you never use more than one refnum for communication [special case for Events because they all go into the same event queue] between two loops. Any time you have multiple communication paths between two loops, your probability of having a race condition somewhere in your code shoots up to near certainty -- I've been actively tracking that assertion for years in user code. It's why the Actor Framework documentation strongly recommends that you have no communication (notifiers, events, functional globals, globals, shared variables, etc) between two actors other than the actor's Enqueuer reference.

Here's a screen shot from the tutorial I've been working on for LV 2016.

forks.png

0 Kudos
Message 15 of 27
(1,617 Views)

The picture you drew should not be broken. I'll look into it.

0 Kudos
Message 16 of 27
(1,617 Views)

It is not broken in LV 2016.

0 Kudos
Message 17 of 27
(1,617 Views)

AristosQueue wrote:

There is no fork in your picture. A fork is just like any other wire forking. You can have as many independent wires between two loops as you want -- although I strongly recommend you never have more than one, just like I strongly recommend that you never use more than one refnum for communication [special case for Events because they all go into the same event queue] between two loops. Any time you have multiple communication paths between two loops, your probability of having a race condition somewhere in your code shoots up to near certainty -- I've been actively tracking that assertion for years in user code.

Agreed there is no fork.  That was why I was thinking it should be legitimate.  In this case, I can make the diagram and the run arrow is "not broken".  As soon as I click the run button it changes to broken and tells me a compiler error.  Glad it is fixed in 2016!

Now on this multiple loop question.  I sort of like an architecture where I have a single data collection loop and then parse data out to other loops for processing, decision making, archiving, displaying, etc.  This is a producer - multiple consumer loops.   I think this avoids race conditions inherently as long as I have a single channel between the producer and each consumer.   Would that be a fair statement?

I suppose I could do this with a single channel that has all the data and forks to multiple consumers, each consumer can use the data it needs and discard the rest?  It seems to be a less intuitive architecture where I parcel out the data specific to each loop.

Parenthetically, in looking at the example code, is the "Stream Channel" a 2016 thing or is it another added channel like the AQ Favorite.

LabVIEW ChampionLabVIEW Channel Wires

0 Kudos
Message 18 of 27
(1,617 Views)

Your diagram is not wrong. It's our bug.  It should be fixed in 2015 SP1. Try turning off debugging-- that should be a workaround. The bug is an artifact of an early version of our compile transform.

0 Kudos
Message 19 of 27
(1,617 Views)

Jeff, thanks.  As long as it was on someones radar.  But you guys are way ahead and already fixed it.  The debugging switch works.  Thanks.

LabVIEW ChampionLabVIEW Channel Wires

0 Kudos
Message 20 of 27
(1,617 Views)