2012/2/23 Wu Ting <wu.t...@comf5.comm.eng.osaka-u.ac.jp>

> 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<10000:
>    msg = tb.queue.delete_head()
>    payload = msg.to_string()
>    f.write(payload)
>    msgCount += 1
>
> I also tried to make it sleep for a short time after each operation:
>
> while msgCount<10000:
>    msg = tb.queue.delete_head()
>    sleep(0.00001)
>    payload = msg.to_string()
>    sleep(0.00001)
>    f.write(payload)
>    sleep(0.00001)
>    msgCount += 1
>

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
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to