On 01/22/2015 11:53 PM, Thanasis Balafoutis wrote:
> Thank you Doug!
> 
> return -1 indeed cause the flowgraph to exit. Is there any trick to stop
> also the execution on my program (after 1 sec)?

You can exit whenever you like. E.g. run a timer until 1 sec is over and
then return -1.

When you return -1, the FG *should* shut down by itself.

> Another problem I have is that the output is always 32768 bytes

You have no problem: Your output *buffer* is of this size. Your output
size is whatever you return (something like return len(test) would be
what you want).

M

> def work(self, input_items, output_items):
> ........
> return len(output_items[0])
> 
> If I change it to this:
>    return len(output_items[0][:len(test)])
> my output becomes empty
> Is it possible to get in the output the exact number of bytes of my
> helloMsg parameter?
> 
> 2015-01-22 23:31 GMT+02:00 Anderson, Douglas J.
> <[email protected] <mailto:[email protected]>>:
> 
>     I think having the work fn return "-1" will cause the flowgraph to
>     exit, so you could potentially have a "self.count = 1" in __init__
>     and then when you've output >= self.count, have work return -1
> 
>     -Doug
> 
>     *Douglas Anderson**| Intern*
>     DOC/NTIA/ITS-T | 325 Broadway St., Boulder, CO 80305 | P: 303 497
>     3582 <tel:303%20497%203582>
>     ------------------------------------------------------------------------
>     *From:* [email protected]
>     <mailto:[email protected]>
>     [[email protected]
>     <mailto:[email protected]>] on behalf of Thanasis Balafoutis
>     [[email protected] <mailto:[email protected]>]
>     *Sent:* Thursday, January 22, 2015 2:12 PM
>     *To:* [email protected] <mailto:[email protected]>
>     *Subject:* [Discuss-gnuradio] Fwd: Write a source block in python
> 
>     Hi
> 
>     I wrote a simple source block that reads a string (as a parameter)
>     and outputs the corresponding array of bytes.
>     Here is the code:
> 
>     class myblock(gr.sync_block):
> 
>         def __init__(self, helloMsg):
>             gr.sync_block.__init__(self,
>                 name="myblock",
>                 in_sig=None,
>                 out_sig=[numpy.byte])
>             self.helloMsg = helloMsg
> 
>         def work(self, input_items, output_items):
>             out = output_items[0]
>            
>             test = array.array('B',self.helloMsg)
>             for j in range(len(test)):
>                out[j] = test[j]
>             return len(output_items[0][:len(test)])
> 
>     In the output I repeatedly get the helloMsg. (it seems that the
>     work() function is always running)
>     Is it possible to get in the output my helloMsg only one time (or a
>     specific amount of times) and then stop the execution of the flowgraph?
> 
>     Thank you in advance!
>     Thanasis
> 
> 
> 
> 
> _______________________________________________
> Discuss-gnuradio mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> 


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

Reply via email to