Chaps - this is great. I knew there was a way to do it. I would classify my python skills as "above script kiddie, but not all the way to novice"!
I understand what the proposed solutions are and i can comprehend what is needed to do it, but i don't have experience of implementation in code so therefore i apologise for having to ask for a little further help. I have read up on XMLRPC and understand the premise, but i think a lot of perseverance and trial and error will be necessary to make it work with my current skills. As i would be keen to make progress within a reasonable amount of time, any example code / structure would be most welcome - as i think my immediate goal to be able to control the parameters is very achievable, but without a guiding hand i may get a bit lost. Really appreciate the help. :) On Fri, 9 Aug 2019 at 15:53, Albin Stigö <albin.st...@gmail.com> wrote: > You could implement your flowgraph in python and then use some python > library for rpc and write a thin layer between... > > You can also implement a flowgraph in C++. > > I'm currently playing around with RPC over DBUS (only control, no data) > for an application I'm writing in C++. > > > --Albin > > > > On Fri, Aug 9, 2019, 10:35 Müller, Marcus (CEL) <muel...@kit.edu> wrote: > >> Hi Alex, >> >> we do have two approaches for that >> >> 1. the XMLRPC thing, which is a python-world block that basically would >> allow you to do the same you can do with e.g. a Qt GUI Range slider >> (i.e. change Python variables at runtime) >> 2. Ctrlport and the thrift backend, the latter of which is notoriously >> hard to get right. >> >> I **really** think RPC is big in GNU Radio's future; we'll work on that >> fundamentally. The problem is you're trying to solve a technical >> challenge now, not then. >> >> So, check out the XMLRPC, see if it suits you. >> >> If it doesn't: What I'd recommend is to >> >> 1. use GRC to construct your flow graph as desired, assuming you're >> doing that so far. Hint: if you use "Parameter" blocks instead of >> "Variable" blocks, you get arguments to your top block's constructor) >> 2. Take the resulting python file, and use it as a Python module >> (rather than running it as executable itself), containing a class named >> like the "id" you set in the options block (the instance of >> gr.top_block). >> 3. Write a simple application that imports that module, and modifies >> the state of the top block (see the "main" function at the end of the >> generated Python file) as dictated through RPC from your receiving end. >> >> For 3: I do like zeroMQ, it has good Python integration and for your >> application, the REQuest/REPly socket pattern would probably work very >> well. You can encode RPC commands however you like, for example simple >> JSON like {"tune", [2.4e9, 1e6]} or so. >> >> Or, you can directly use a python RPC thing. I've not personally tried >> that, but zerorpc.io looks fine for this kind of thing. Quite possible, >> all you'd need to build on the Pi would be >> >> #!/usr/bin/env python >> import zerorpc >> import myfg #replace with the generated .py >> >> server = zerorpc.Server(myfg.myfg(sensible_arguments_if_any)) >> server.bind("tcp://0.0.0.0:1337") #bind to all interaces on port 1337 >> >> # could be tcp://127.0.0.1:1337 instead, if you're doing e.g. port >> forwarding through `ssh -R 127.0.0.1:1337:1337! >> # There's even ZMQ brokers and stuff, but that'd lead too far. >> s.run() >> >> >> And locally, you could try >> >> import zerorpc >> client = zerorpc.Client() >> client.connect("tcp://yourPisAdddress:1337") >> client.start() >> client.set_samp_rate(4e6) #or whatever methods your top block has >> >> Best regards, >> Marcus >> >> On Thu, 2019-08-08 at 23:16 +0100, Alex Pane wrote: >> > Hi, >> > >> > I have created a simple tcp based iq stream using ZMQ blocks to use a >> HackRF remotely over an ethernet network. >> > >> > I have a linux computer (Raspberry Pi) connected to the HackRF running >> GNURadio. The HackRF source is connected to a ZMQ sink that transmits the >> packets to a receiving linux PC running GNURadio - where a ZMQ source >> connected to a QT sink for visualising the IQ signal stream. >> > >> > This works fine for a fixed frequency, sample rate and fft size etc, >> however my problem is that i want to be able to change those parameters >> from the receiving PC. >> > >> > Despite much research, i have been unable to find a way to change the >> parameters of the remote flowgraph (client) from the receiving display end >> (server). >> > >> > Is there a way to natively perform this operation within GNURadio and >> can someone provide guidance on how to setup a flowgraph to achieve this? >> Or is there some additional OOT block or custom python block i would need >> to create to do this. >> > >> > Thanks >> > >> > Alex >> > _______________________________________________ >> > 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 >> >
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio