Sorry about the last uncompleted email. I tried the method lock() and unlock() to completely pause the flow graph without transmitting any signal, but the continuous carrier wave still showed on the oscilloscope. I'm trying to transmit 13-bit Barker code carried by a 4MHz sinusoid wave. After this 13-bit code transmission, the whole system need to be suspended for 5 milliseconds without transmitting any signal, even though the carrier wave. I'm wondering how to completely pause the whole flow graph, not transmitting any signal including the carrier wave? What's the problem of the scheduler that I wrote. I really appreciate any help on solution to this problem! really appreciate!
The code related to the scheduling part is: top_block = tx_bpsk_block(options.tx_subdev_spec,options.freq,options.verbose,options.chip_rate,options.amplitude) try: top_block.start() start_flag = 1 payload_13barker = '\x01\x01\x01\x01\x01\x00\x00\x01\x01\x00\x01\x00\x01' while(start_flag == 1) msg_13bit = gr.message_from_string(payload_13barker) top_block.msgq.insert_tail(msg_13bit) eof_msg = gr.message(1) top_block.msgq.insert_tail(eof_msg) top_block.lock() time.sleep(0.005) top_block.unlock() top_block.wait() except KeyboardInterrupt: pass if __name__ == "__main__": main() The top_block is created as: class tx_bpsk_block(gr.top_block): def __init__(slef, subdev_spec, freq, verbose, chip_rate, amplitude): gr.top_block.__init__(self,"tx_mpsk") self._freq = freq self._verbose = verbose self._amplitude = amplitude self._u = usrp_sink_s(0,subdev_spec,chip_rate, self._freq, self._verbose) self.in_data = gr.message_source(gr.sizeof_char,14) self.msgq = self.in_data.msgq() self._constellation = [-1,1] self._mapper = gr.chunks_to_symbols_bf(self._constellation) self._gain = gr.multiply_const_ff(self._amplitude) self.f2s = gr.float_to_short() self.connect(self.in_data,self._mapper,self._gain,self.f2s,self._u) If continuously transmitting Barker code without any pause, this flow graph works fine. When using lock/unlock to pause this system, Barker code won't feed into the flow graph,which means the carrier signal won't be modulated, but the transmitter still send the carrier sinusoid wave which can be observed by oscilloscope. I'm wondering how to completely pause the whole flow graph, not transmitting any signal including the carrier wave? What's the problem of the scheduler that I wrote. I really appreciate any help on solution to this problem! really appreciate! Thanks, Yan On 02/22/11, "Yan Nie" <yn...@uwo.ca> wrote: > > > > Hi Tom, > > > Sorry about the question. I tried the method lock() and unlock() to pause the > flow graph that I built, but I still can see the continuous signal wave on > the oscilloscope. Could you please help with > > > On 02/21/11, Tom Rondeau <trondeau1...@gmail.com> wrote: > > > > On Mon, Feb 21, 2011 at 9:50 PM, Yan Nie <yn...@uwo.ca> wrote: > > > Dear all, > > > I'm trying to stop top_block implementing the signal transmission for 5 > > > milliseconds and then restart the signal transmission at the transmitter > > > side, by using the tb.stop() then time.sleep(0.005) to suspend the system > > > for 5 milliseconds then tb.start() to start the signal transmission again. > > > This approach gives an > > > RuntimeError: top_block::start: top block already running or wait() not > > > called after previous stop(). > > > Could you please help me to find what the problem is? I also tried lock() > > > and unlock() which cannot stop the signal transmission implemented in > > > top_block > > > > Yan, > > You want to use the lock() and unlock(). They should pause and unpause > > the graph, so please elaborate when you say that they don't stop the > > signal transmission. The start and stop methods will definitely not > > work here. > > > > Tom > > > >
<<attachment: ynie3.vcf>>
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio