[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] Strange output of "0" at the terminal
From: |
Wu Ting |
Subject: |
Re: [Discuss-gnuradio] Strange output of "0" at the terminal |
Date: |
Sat, 25 Feb 2012 10:37:07 +0900 (JST) |
User-agent: |
SquirrelMail/1.4.8 |
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 address@hidden [3]
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio [4]
>
>
>
>
> Links:
> ------
> [1] mailto:address@hidden
> [2]
> mailto:address@hidden
> [3]
> mailto:address@hidden
> [4]
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
- [Discuss-gnuradio] Strange output of "0" at the terminal, Wu Ting, 2012/02/22
- Re: [Discuss-gnuradio] Strange output of "0" at the terminal, Wu Ting, 2012/02/22
- Re: [Discuss-gnuradio] Strange output of "0" at the terminal, Andrew Davis, 2012/02/22
- Re: [Discuss-gnuradio] Strange output of "0" at the terminal, Wu Ting, 2012/02/23
- Re: [Discuss-gnuradio] Strange output of "0" at the terminal, Andrew Davis, 2012/02/23
- Re: [Discuss-gnuradio] Strange output of "0" at the terminal, Tom Rondeau, 2012/02/23
- Re: [Discuss-gnuradio] Strange output of "0" at the terminal, Wu Ting, 2012/02/24
- Re: [Discuss-gnuradio] Strange output of "0" at the terminal, Andrew Davis, 2012/02/24
- Re: [Discuss-gnuradio] Strange output of "0" at the terminal, Wu Ting, 2012/02/24
- Re: [Discuss-gnuradio] Strange output of "0" at the terminal, mleech, 2012/02/24
- Re: [Discuss-gnuradio] Strange output of "0" at the terminal,
Wu Ting <=