Hello all, I am wondering, after the WORK_DONE is invoked, is it possible to restart the flowgraph? Thanks!
2015-02-09 17:11 GMT-05:00 Chen Chen <linkin8...@gmail.com>: > Dear all, > In my application, I want to implement the following feature: > 1. If I decode 50 packages, then stop the flowgraph immediately > 2. otherwise, if after 30 seconds, I cannot receive more than 50 > packages, then stop the flowgraph. So I could prevent the flowgraph from > locking forever. > > For the first part, I add a state machine inside the decoder. When > there are 50 packages decoded correctly, I would output a high level '1' on > the output. Otherwise I output low level 0. I connect this output port, > with a probe. In python, I wrote > ------------------------------------------------------------- > def _probe_peak_package_number(): > while True: > val = round(self.probe_package_number.level()) > if (val == 1): > print "package number reach threshold %d!" > %self.threshold > self.stop() > break > _probe_package_number_thread = > threading.Thread(target=_probe_peak_package_number) > _probe_package_number_thread.daemon = True > _probe_package_number_thread.start() > ------------------------------------------------------------- > which starts a thread, listening to the probe. Whenever it observes a high > level '1', it would STOP the flowgraph immediately. > > For the second part, I am using the Timer in the package threading. > ------------------------------------------------------------- > #def _shut_down_flow_graph(): > #print "Passing %d seconds, going to kill the process!" > %self.timing > #self.stop() > > #_timer_thread=Timer(self.timing,_shut_down_flow_graph) > #_timer_thread.start() > ------------------------------------------------------------- > > But, what I observe is that: > 1. If I set the threshold to 10 packages, I have to wait until about 100 > packages being decoded correctly. Sometimes I have to wait for about 500 > packages. The threading is not very stable, even there is an high-level > output at the probe, it does not 'see' it immediately. > > 2. The alarm would prevent my flowgraph from exiting. Namely, when there > are more than 50 packages, the flowgraph would not be stopped, until 30 > seconds passed. But I have a self.stop() in the snippet. > > if (val == 1): > print "package number reach threshold %d!" > %self.threshold > self.stop() > break > > Why it does not terminate the python program immediately? > > Or, is there any suggestions on implementing precise interrupt in GNURADIO? > > Thanks. > -- > CHEN CHEN > > -- CHEN CHEN Electrical and Computer Engineering University of Maryland, College Park E-mail:linkin8...@gmail.com or cc8...@umd.edu Address: KEB 2238, Kim Bldg
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio