07-23-2019 01:37 PM
VI A is my main routine, and it continually writes to two channels, carrying frequently updated status from an instrument to other parts of my program. They are Tag type channels, written only by the main routine, read in many places.
A calls C, passing the channels, where they function without difficulty.
A calls B, passing the channels. They flow into an event structure, and one of the event cases in B calls C, passing the channels directly as inputs. From a subroutine of C (a subroutine which is used pervasively all over my program) I get this peculiar error message,
"This VI halted execution when attempting to read from or write to a channel wire. The channel includes a branch not connected to a channel endpoint… The top level VI was stopped at sub VI "))Channel.vi" on the block diagram of "Tag-t'Response Cluster.ctl'.lvlib:EndpointRead.vi"
I'm having a very hard time figuring out how to diagnose this thing. I look at the channel wires and they seem to flow straight and cleanly through B into the call to C. (And two other event cases) How might one track this error down? The error message gives me no opportunity that I can find, to set a breakpoint, so that I could really pin down the point of failure.
Solved! Go to Solution.
07-23-2019 03:31 PM
I've been using Channel Wires since before they were released "officially" in LabVIEW 2016 -- they are one of my favorite features of LabVIEW. While I'd really like to help you, I cannot clearly visualize the Channel Wires in your VI (which you have failed to post), so cannot easily tell you why they are not working for you.
Please respond by attaching your VI (or, if you have several VIs involved, compress the folder containing your Project and attach the resulting .ZIP file). I should be able to have a comment for you shortly after I see your code.
Bob (I really need better glasses!) Schor
07-26-2019 01:39 PM
Thanks, Bob. The VI's mentioned have over 200 dependencies, and comprise a great deal of my client's intellectual property, so I can't post it all. I tried to skin it down to a nugget, and the problem went away! I have a feeling it's some of the event cases I deleted. So I'm going to poke at that a bit.
Is it of any use to you to send you three VI's that show the structure of things, WITHOUT their dependencies (unrunnable of course)?
07-26-2019 08:32 PM
Any information is better than no information. A throrough verbal description of what you want to do (without worrying about how to do it) would also be very helpful.
Bob Schor
07-29-2019 08:33 PM - edited 07-29-2019 08:37 PM
Found it. It was a case of a HORRIBLY non-descriptive error message.
The real problem: Calibration.vi call node does not have the channels connected. Solution: connect the two channel input connectors (and the Queue) to the ones entering at the left of the Event structure:
The very unclear message, which caused me to dismember the CALLING VI searching by elimination for a faulty channel connection. Can't it tell "some branch" from "the input connector to this VI"?
The place it left me, stopped, which has NO diagnostic value WHATSOEVER! If only it would leave me in a "Breakpointed" state so I could at least look up the call stack!!
07-30-2019 08:50 AM
Congratulations on your Persistance and Sleuthing ability. I agree that a Call Chain to find where the Channel Error originated in our code would be very helpful ...
Bob Schor