THIS IS EXPERIMENTAL SOFTWARE AND API IS SUBJECT TO CHANGE How to run the example ---------------------- Assuming that the module has been compiled but not installed, in the gr-zeromq folder do cd examples ./run_app.sh server on another terminal or machine ./run_app.sh client -s hostname You can also run a (remote) GUI on any of the two or a third machine for monitoring and control. ./run_app.sh gui.py -s servername -c hostname in doing so the order of starting the scripts is arbitrary. When installing the module, the run\_app.sh script is of course not needed. How to use the API ------------------ ### PROBE API Connect a zmq pubsub sink to the block you want to monitor self.zmq_probe = zeromq.sink_pubsub(gr.sizeof_float, "tcp://*:5556") add a probe manager to your Python GUI # ZeroMQ probe_manager = zeromq.probe_manager() probe_manager.add_socket("tcp://localhost:5556", 'float32', self.plot_data) def plot_data(self,samples): [...] basically creates a watcher thread that calls the call back functions and unpacks sample data. Now you can use a timer to update the plot, e.g. in PyQt update_timer = Qt.QTimer() self.connect(update_timer, QtCore.SIGNAL("timeout()"), probe_manager.watcher) update_timer.start(30) ### RPC API Add an rpc manager to your Python app to receive RPCs rpc_manager = zeromq.rpc_manager() rpc_manager.set_reply_socket("tcp://*:6666") rpc_manager.add_interface("start_fg",self.start) rpc_manager.start_watcher() to be able to send requests also add one on the other side rpc_manager = zeromq.rpc_manager() rpc_manager.set_request_socket("tcp://localhost:6666") send a request rpc_mganager.request("start_fg") rpc_mgr_server.request("set_k",gain) RPCs use GNU Radio pmt's to serialize arguments, the watcher thread will regularly poll for incoming RPC requests, deserializes arguments and call the interface callback function accordingly.