I’ve been attempting to create my own source block in Python. I have
been
reading the blocks coding guide here: Blocks Coding Guide · guruofquality/grextras Wiki · GitHub,
but so far my source only outputs zeros.
An outline of my code is as follows:
class constSource(gr.block):
def init(self):
gr.block.init(self, name = “signal source”, in_sig
#I put the code to create what I want to stream here, the code
creates a numpy.complex64 array with a length of 32. I then return
num_output_items
return num_output_items
I then write my constSource block to a file and I try to see the output
of
the file using a scope sink, but it is just a constant stream of zeros.
Am
I missing a key part of creating a source block? Also, the reason I
don’t
use a file source is that the stream I am trying to create is dependent
upon the time of day, so pulling it from a file source will mean that it
is
delayed somewhat. I will eventually want to transmit this data as well,
not
just put it in a file sink.
On Wed, Jul 18, 2012 at 02:32:28PM -0400, Anisha G. wrote:
I then write my constSource block to a file and I try to see the output of the
file using a scope sink, but it is just a constant stream of zeros. Am I
missing a key part of creating a source block? Also, the reason I don’t use a
file source is that the stream I am trying to create is dependent upon the time
of day, so pulling it from a file source will mean that it is delayed somewhat.
I will eventually want to transmit this data as well, not just put it in a file
sink.
Thanks for the response! I can now see that output_items is getting
properly filled, however, when I try to display the file, I’m still
getting
zero. Besides a throttle is there a way to control the frequency of the
random numbers or whatever source I am creating?
Thanks,
Anisha
It works now, thanks! It was a combination of a couple dumb errors on my
part. One last thing, I was wondering if there was a way to change the
length of output_items[0]? It is 4096 by default I believe.
Thanks,
Anisha
It works now, thanks! It was a combination of a couple dumb errors on my
part. One last thing, I was wondering if there was a way to change the
length of output_items[0]? It is 4096 by default I believe.
Thanks,
Anisha
The item length is basically randomly decided by the scheduler. However,
you call set_output_multiple(x) and you will be guaranteed to get x*N
items where N is an integer. Also, you dont have to actually fill all
items, just fill the number you plan to produce.