Hi! Marcus, The sample rate is 4MHz. I also tried 1MHz and 10MHz. On my laptop, the frequency of 'O' is related with sampling rate and is quite common. On the desktop, I always have to wait quite a while before an 'O' is printed. But it is printed even when the sampling rate is 200kHz.
Following is my code. Any suggestions? #!/usr/bin/env python from gnuradio import gr from gnuradio import uhd import time from struct import unpack from time import sleep class probe_this(gr.top_block): def __init__(self): gr.top_block.__init__(self) self.source = uhd.usrp_source(device_addr="", stream_args=uhd.stream_args('sc16', 'sc16', args="scalar=1024")) self.source.set_samp_rate(4e6) self.source.set_gain(1) self.source.set_center_freq(0) self.queue = gr.msg_queue() self.sink = gr.message_sink(gr.sizeof_short*2, self.queue, False) self.connect(self.source, self.sink) if __name__=="__main__": tb = probe_this() tb.start() while True: msg = tb.queue.delete_head() payload = msg.to_string() loadLen = int(msg.arg2()) format = str(loadLen*2)+'h' data = unpack(format, payload) datach1 = data[0::2] datach2 = data[1::2] maxVal = max(datach1) minVal = min(datach1) if maxVal>6 or minVal<-6: print 'K' fileName = time.time() f = open(str(fileName), 'wb') f.write(payload) msgCount = 1 print 'T' while msgCount<10000: msg = tb.queue.delete_head() payload = msg.to_string() f.write(payload) msgCount += 1 f.close() msgNum = tb.queue.count() print msgNum > > > Modern disk subsystems can easily sustain 80MB or more per second > even on relativley wimpy hardware > > What is the sample rate involved > here? Seriously, I've been able to stream multi-MHz of bandwidth to disk > for long periods without any 'O' happening. > > -Marcus > > On Fri, 24 Feb > 2012 11:23:05 -0500, Andrew Davis wrote: > >> You are writing to a file > in a blocking thread, its not the CPU it's >> the hard drive. You should > try the program without the write. Then if >> it is the problem you > should write out to a file on a ram disk then >> save it to a real disk > later. >> >> 2012/2/24 Wu Ting : >>> Hi! Thank you for your suggestions! I > realized it is a problem related with computer speed. Today I used a > laptop to run the same code, and 'O' is printed much more frequently. > However, the computer I'm using is a quite good one. It has intel i7 > 3.4GHz 8-core, and when the code is running, CPU is only used by about > 10%, and memory is also used by no more than 15%. On the other hand, I > also checked number of messages in message queue, and I've found that > when 'O' is printed, sometimes there are only several messages in the > queue. So I don't understand why it has this outflow problem. And is it > possible to catch this error when it happens, so that I can deal with it > in the problem? Thanks! Wu >>> >>>> 2012/2/23 Wu Ting >>>> >>>>> Hi! > Thank you for your response. I've kept working on this problem for two > days, but still cannot find a way to solve it. I simplified the program > and have determined that the 'O' is produced is this while loop: while > msgCount >>>> Two quick things. First, the tb.queue.delete_head() is a > blocking call, so it will wait until there is a message to process. You > don't need to sleep. Adding a sleep call here is probably only making > things worse since you're already not keeping up with the samples. > Second, the sleep() call is generally only accurate to about ~10 ms, but > you're asking it to sleep for 10 us. I'm not sure if it rounds up or > down. Worse case, you're making the loop sleep for about 30 ms total; > best case is you actually aren't pausing at all. Tom >> > _______________________________________________ Discuss-gnuradio mailing > list Discuss-gnuradio@gnu.org [3] > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio [4] > > > > > Links: > ------ > [1] mailto:wu.t...@comf5.comm.eng.osaka-u.ac.jp > [2] > mailto:wu.t...@comf5.comm.eng.osaka-u.ac.jp > [3] > mailto:Discuss-gnuradio@gnu.org > [4] > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > _______________________________________________ > Discuss-gnuradio mailing list > Discuss-gnuradio@gnu.org > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio