This is probably best done from the top-level flowgraph. Have the flowgraph call a member function of your OOT block which sends the commands, before calling start() or run() on the flowgraph.
Nick On Tue, Nov 17, 2020 at 5:36 PM isaac mario tupac davila < [email protected]> wrote: > Hi Marcus > > Thanks for your answer. I am restructuring the design of my OOT block. > > I'd like to ask a last question about it...I am trying to send some > commands (array of bytes) to an external hardware only ONCE before starting > with my real time data acquisition . The problem is that if I implement the > sending of the commands in the general work of my block, the commands will > be sent each time the general work finishes and starts again. My solution > proposed is to begin the execution of my flowgraph and send an external > signal (specifically kill -SIGIO PID) from terminal to call the > implemented method which sends the commands, so that my general work will > only focus on the data acquisition and I will send the commands only once. > > My question is: Is there a facility or tool that GNU Radio gives me to > solve this situation? There should be a more suitable solution. > > Any help or recommendation would be appreciated. > Thanks > > Regards > Isaac. > > > > El dom., 15 nov. 2020 a las 13:50, Marcus Müller (<[email protected]>) > escribió: > >> Hello, >> >> On 15.11.20 06:26, isaac mario tupac davila wrote: >> > Hello >> > >> > I'm Isaac. >> >> Hi Isaac, nice having you. >> >> > I have a question about threads..... I've created three >> > threads and I want to pass real data from one thread to the next block >> > directly without returning to the general work method. >> >> That sounds like a misguided design approach. Please don't do that. >> >> The work function is meant to be seen as atomically processing a bit of >> data from its input to its output. >> >> If you need asynchronous messaging, then use the msg_passing facilities. >> These make sure you don't change the state of the block while its >> general_work is executing. >> >> > I could give >> > value to the out array in the thread but for some reason the data >> > doesn't pass to the next block. I am not sure if it's because I didn't >> > put: return noutput_items in the thread, >> >> What you describe as thread makes no sense – the way GNU Radio is, >> there's exactly one thread executing a block's general_work at a time, >> and that's the thread of the block_executor. And `return` ends that >> execution; that's how C++ works. >> >> > as normally this is in the >> > general work method... I also add that the function is defined in the >> > thread as void*function and I defined the out array as a >> complex<short>*. >> > >> > Any help would be appreciated. >> >> I'm afraid there's something not GNU Radio-compatible in the way you've >> architected your system, but we sadly don't know your system well enough >> to comment on what to change. >> >> Best regards, >> Marcus >> >>
