Re: how to stop the top_block and restart signal transmission

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


Discuss-gnuradio mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

On Wed, Feb 23, 2011 at 9:25 AM, Yan N. [email protected] wrote:

help me see what’s the problem of the flow graph that cannot allow the
try:
top_block.unlock()
def init (self, subdev_spec,freq,verbose,chip_rate,amplitude):
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)

Could you please help me to see how to completely pause the signal
transmission at the transmitter side, disabling or shutting down the signal
transmission including transmitting carrier wave? I really appreciate all of
your help on solving this problem. Really appreciate!
Wish you a great day!

Yan,

Please confirm that you just see the carrier, not your modulated
signal when using the lock()/unlock()

Also, please tell us:

What version of GNUradio are you using?

What hardware are you using? USRP? which daughterboard?

Are you using UHD?

Jason