At https://github.com/jmfriedt/active_radar/ you will find the solution I have been using for Synthetic Aperture RADAR using GNU Radio. In this application I wish to collect coherent measurements from both reference (transmitted pattern) and surveillance (reflected signal) channels when the antenna location is stable. The GNU Radio part is https://github.com/jmfriedt/active_radar/blob/master/zeromq_demo_rev1.py is continuously streaming data using a UDP-like datagram flow based on 0MQ Publish. I selected this approach to make sure any desynchronization between channels (e.g. using RTL-SDR dongles) remains constant during the whole measurement and not restarting acquisition with a random delay for each antenna position. The antenna position is driven by an external piece of software -- I like GNU Octave but feel free to use Python -- where event are triggered in the GNU Radio flowgraph, e.g. moving the antenna, then a 0MQ socket is opened, the processing software fetches the number of samples needed (here correlation), and then continue to the next position https://github.com/jmfriedt/active_radar/blob/master/zeromq_demo_rev1.m
Closing/opening the 0MQ socket is not elegant but is the only way I found to make sure I fetch the latest data from the new antenna position and not some leftover data from a previous position. Best, JM > I'm forwarding this to the mailing list, so that others can have a > look at it as well! Let me quickly address a few things: > > On 08.08.23 21:32, Henry Powell wrote: > > The flow graph starts. I collect data and save it to a file with > > file_sink. I read the file and get the maximum value from the file > > (differently, I can do this with keep 1 in n, but I would be happy > > if we proceed through the current situation), then I am saving the > > maximum value in a list from the data I have saved in the file. I > > reset the file with the file_sink open and close commands. > > Interesting! How do you know when to open / close? I ask because this > sounds a bit difficult, as, depending on the blocks with which you > capture and process your data, there might still be samples "in > flight" after your collection finishes. > > > I repeat this maybe 2000 times, varying from > > measurement to measurement. After recording all the maximum values > > in a list, the flow graph terminates itself. > > > > Writing data to a file and reading from there makes me lose speed. > > I am looking for an alternative solution to it. > > Ah, what about this concept: > > ┌───────────┐ > ┌────────────┐ ┌──────────┐ │Make Chunks│ ┌─────────┐ > ┌──────┐ ┌─────────┐ │ │ │ │ │of > constant│ │Find max-│ │ Head │ │ │ │Data > Capture│───►│Processing│──►│ "single- │───►│imum per │───►│ > │───►│File Sink│ │ │ │ │ │experiment"│ │ > chunk │ │N=2000│ │ │ └────────────┘ └──────────┘ > │ size │ └─────────┘ └──────┘ └─────────┘ └───────────┘ > > > Instead of "taking the data out of GNU Radio" in an asynchronous > manner, you could look for the maximum within the framework of GNU > Radio itself. That solves all the file handling overhead. > > You can also still save all your experimental data to a file for > later analysis (just add *another* File Sink, after "Processing" in > parallel with "Make Chunks…"). > > > If you're saying that I can do it with a vector sink block, I'm > > trying it right now. I will let you know the results tomorrow. > > Well, the Vector Sink would be easier than the File Sink, but as > sketched above I think a different solution might be preferable. > > > Thank you for your reply. Have a nice day. > You have good days, as well! > > Marcus > > > Marcus Müller <mmuel...@gnuradio.org > > <mailto:mmuel...@gnuradio.org>>, 8 Ağu 2023 Sal, 11:55 tarihinde > > şunu yazdı: > > > > Hi Henry, > > > > that sounds like the description of the Vector Sink block! > > > > But in all honesty, maybe you want to take a different approach > > altogether; really depends > > on when during the life cycle of a flow graph you need that > > data. Could you maybe describe > > how often and when you want to get data from your GNU Radio > > flowgraph? > > > > Best regards, > > Marcus > > > > On 08.08.23 07:26, Henry Powell wrote: > > > Hello, at the end of my grc I use file sink and then, I read > > > the data from the file. I repeat this process so many times. > > > My problem is that writing to files and reading > > from > > > them takes too much time, approximately 120ms. I know this > > > does not seem too much but for my application it's too much. > > > So, I want to append data to a list and get from > > there. > > > > > > I tried writing an embedded python block via this link: > > > https://wiki.gnuradio.org/index.php/Embedded_Python_Block > > <https://wiki.gnuradio.org/index.php/Embedded_Python_Block> but > > i failed. > > > Is there any example embedded python block you wrote about > > > before? Or a different > > solution? > > > > > > If you can help me, I would really appreciate it. > > > -- JM Friedt, FEMTO-ST Time & Frequency, 26 rue de l'Epitaphe, 25000 Besancon, France