I figured this out today. I used a handle_msg and simply connected a
message strobe to the 'junk' msg input. My custom block works as expected
now.

On Tue, Apr 30, 2019 at 12:56 PM Ali Dormiani <sdorm...@eng.ucsd.edu> wrote:

> Hello,
>
> Thank you for the advice. I went back to the tutorials and now I have a
> better grasp of what is going on.
>
> Regarding 'work' vs 'handle_msg', which situations fit each of these?
>
> Is 'handle_msg' supposed to be for passing messages through multiple
> internal msg ports?
>
> Is 'work' for dealing with streams or can I do message related things in
> 'work'?
>
> It appears that handle_msg is for passing from inputs to outputs (which I
> do not need as I want a block with only a message out).
>
>
> In short, if one wants to make a block with a single msg output and
> nothing else, should s/he use a message handler (and leave work empty with
> a pass) or use work? If so, what should work return, given there are no
> data-streams involved?
>
> Thank you for your time,
>
> Ali
>
> On Mon, Apr 29, 2019 at 2:49 PM Marcus Müller <mmuel...@gnuradio.org>
> wrote:
>
>> Hi Ali,
>> causality, our old foe, strikes again!
>>
>> You're trying to emit a message in the constructor.  Messages will be
>> delivered to all message acceptors connected to that message port.
>> However, you can't possibly connect the block before the block-holding
>> object exists, i.e. before the constructor returns.
>>
>> So, necessarily, the messages are sent before anything is connected to
>> the msg_out port, and thus into the void and simply get dropped by the
>> scheduler.
>>
>> Best regards,
>> Marcus
>>
>> PS: I'd strongly recommend having a `self.port = pmt.intern('msg_out')`
>> in the constructor and using that whenever you need the port if you're
>> doing that within the work() function often. Constructing PMT interns
>> is relatively expensive.
>>
>> On Mon, 2019-04-29 at 14:39 -0700, Ali Dormiani wrote:
>> > Hello everyone,
>> >
>> > I have been attempting to make my own block that sends out a boolean
>> > message if certain time related conditions are met.
>> >
>> > I am unable to figure out why my block does not work. This seems to
>> > be the line of interest:
>> >
>> > self.message_port_pub(pmt.intern('msg_out'), pmt.PMT_T)
>> >
>> > This line should cause the block to output a PMT true through port
>> > msg_out right?
>> >
>> > My full block is attached bellow. Any help would be greatly
>> > appreciated.
>> >
>> > Thank you all for your time,
>> >
>> > Ali
>> >
>> > ======================
>> > import numpy as np
>> > from gnuradio import gr
>> > import pmt
>> > import datetime
>> >
>> > class msg_block(gr.basic_block):  # other base classes are
>> > basic_block, decim_block, interp_block
>> >     """This block checks time and sends true or false if capture
>> > period is desired"""
>> >
>> >     def __init__(self, minutes=15, seconds=10):  # only default
>> > arguments here
>> >         """arguments to this function show up as parameters in GRC"""
>> >         gr.basic_block.__init__(
>> >             self,
>> >             name='Time Enable',   # will show up in GRC
>> >             in_sig=None,
>> >             out_sig=None
>> >         )
>> >         self.message_port_register_out(pmt.intern('msg_out'))
>> >         now = datetime.datetime.now()
>> >         #P_true = pmt.PMT_T
>> >         #P_false = pmt.PMT_F
>> >         if ((now.minute % minutes) == 0): #check if minute is ok
>> >             if (now.second < seconds): #check if capture period is ok
>> >                 self.message_port_pub(pmt.intern('msg_out'),
>> > pmt.PMT_T)
>> >             else:
>> >                 self.message_port_pub(pmt.intern('msg_out'),
>> > pmt.PMT_F)
>> >         else:
>> >             self.message_port_pub(pmt.intern('msg_out'), pmt.PMT_F)
>> >
>> >     def work(self, input_items, output_items):
>> >         pass
>> > =====================================
>> > _______________________________________________
>> > 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

Reply via email to