Stop() the flow graph

Hi All,

I am looking for a solution that start() the flow graph for a definite
period of time (in seconds) and after that it stop() it automatically.
For
example

let suppose initial value of time is 14 seconds; it means that the

flowgraph defined in tb1 should need to executed during that time; and
when
the time reaches zero it must be stop.

while 1:
if (time!=0):
tb1.run()
time = int(time) - int(1)
elif (time==0):
tb1.stop()

I tried this; but once the flow graph started; then it never comes to
the
elif condition. How can I stop() the flowgraph in this condition.
Waiting
for reply.

Regards,

tb1.start()
time.sleep(14)
tb1.stop()
tb1.wait()

Thanks Sylvain for your reply; but if I introduced sleep(14) then during
that time it won’t perform the tasks in tb1 as well.

On Thu, Nov 13, 2014 at 3:28 PM, Syed Aqeel R. [email protected]

I can’t use sleep() here; because there’re other threads as well in the
program which need to be executed as well. Sleep() stop the execution of
program; which is not a solution.

No it doesn’t. It pauses the execution of the THREAD … other
threads (both those created by gnuradio to actually run the flow graph
and whatever other thread you have in your application) will keep
running.

Besides you’re missing the point … the main thing to notice in my
original reply is run() vs start(). One is blocking, the other isn’t.

I can’t use sleep() here; because there’re other threads as well in the
program which need to be executed as well. Sleep() stop the execution of
program; which is not a solution. Thanks.

On Thu, Nov 13, 2014 at 5:53 PM, Syed Aqeel R. [email protected]

Hi,

Currently, I am using a single usrp as a transmitter. The program is
changing the transmission frequency with respect to (external) switching
time. In order to change the frequency in usrp box; I set the following
programming conditions.

while 1:
if ((time!=0) and ((ch1=1) or (ch2==1))):
tb1.start()
time = int(time) - int(1)
sleep(external time which provide the active channel time of
channel 1 and channel 2)
elif (time==0):
tb1.stop()

But (I think) due to this frequent start() and stop() activities; after
maximum of 15 minutes time I have received the following error.

/Traceback (most recent call last):
File “source_test.py”, line 121, in
tb1 = gmsk_tx()
File “source_test.py”, line 88, in init
self.blocks_udp_source_0 = blocks.udp_source(gr.sizeof_char*1,
“127.0.0.1”,
1234, 1472, True)
File
“/usr/local/lib/python2.7/dist-packages/gnuradio/blocks/blocks_swig5.py”,
line 1969, in make
return _blocks_swig5.udp_source_make(*args, **kwargs)
RuntimeError: boost::thread_resource_error: Resource temporarily
unavailable

I want the program to be run continuously. Kindly propose some solution.

Regards,
Syed Aqeel R.

On Thu, Nov 13, 2014 at 6:32 PM, Syed Aqeel R. [email protected]

Try putting wait() after stop() to make sure the resources are teared
down.