11-23-2017 09:52 PM
So i have configured 1 main.vi and subA.vi and subB.vi . the main.vi runs initially and calls subA.vi , next the subA.vi calls the subB.vi , then subB.vi calls subA.vi, and on forever until stopped.
I'm using the beaglebone device and would like to have some code calling the main.vi explained above.
Currently, it works when I deploy it to the target as startup, but i would like to not have it run on startup, but on a specific trigger or running a code.
Is this possible?
Solved! Go to Solution.
11-24-2017 04:25 AM
you might find this discussion interesting,
https://forums.ni.com/t5/LabVIEW/Run-startup-rtexe-in-linux-from-terminal/td-p/3117415,
although i neither tried this method myself, nor do i know what differences between crio and beaglebone exist
11-25-2017 04:53 AM
Seems to me the beaglebone\rt topic only confuses things. The solution and problem are exactly the same on a PC, AFAIC.
If a calls b and b calls a, you'll get endless recursion. The parameter stack will grow and grow, until all memory is consumed, and your program will crash.
Why not simply let a output the inputs for b, and let b output the inputs for a. Then put a and b behind each other in a for loop. First a, then b. Put the output of b in a shift register, so a can use them.
12-03-2017 12:06 AM
Thing is that program a and program b don't relate to each other. program a executes some code(transmission) and program b executes some other code(receiver).
main program
program a
program b
this is what i got so far, but it is not working as intended. What i want is the following:
When digital i/o #12 is on, it calls program a that's stored on the beaglebone. program a will blink a LED at a certain speed then call program b also on the beaglebone. program b will blink LED faster rate and call program a again. What I want to to continue this progress for as long as i/o pin 12 is ON.
As soon as i/o pin is OFF, then i would like to stop program a and b, but keep the main program on because it monitors the i/o pin. When the i/o pin is ON then, start the same process explained above.
Any suggestions?
12-03-2017 01:07 AM - edited 12-03-2017 01:09 AM
This is what I got so far, I have deployed and it looks like it runs without errors.
I am thinking tho both VIs need to be open. this applications is a test application for the real application. I am afraid of having both VIs open due to memory issues, any thoughts?
12-04-2017 02:36 AM
When you dynamically run the VI's, you immediately do an abort. That will stop the VI you just started.
Also, when A calls B dynamically, both VI's are in memory too. You shouldn't worry about this until it's a problem. Make the simplest solution, if (and only if) memory is a problem: optimise.
12-08-2017 12:41 AM - edited 12-08-2017 12:44 AM
Still having issues, I can't find a way of opening a subvi and inside this subvi have an intentional stop of the subvi but keep always the main vi open. I've tried asynchronous call, and run vi reference.
for example using run vi to call the sub vi, when it is done, it gets an error 1039. i think its an error having to do with aborting a vi. should i be ignoring this error?
12-08-2017 10:02 AM
But you're not aborting the VI, your aborting the sub VI you just started.
Still not sure how dynamically calling each other is better then calling a then b in a while loop. In both scenario's both VI's will be in memory.
12-10-2017 09:04 PM
Did you know that there is a whole Forum devoted to the LabVIEW MakerHub and LINX? This is their Home Page.
Bob Schor
12-13-2017 01:55 AM
@Bob_Schor wrote:
Did you know that there is a whole Forum devoted to the LabVIEW MakerHub and LINX? This is their Home Page.
Bob Schor
Yes I do know.
I was reading and found that linx doesn't support the main modules/toolkits I need(usrp and imaq, among others)
Currently looking into pythong integration toolkit for labview 2015+.