From faab807cf5e8b4a4c950d1fd8ae6672296fb1ad9 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Tue, 3 Apr 2012 18:21:52 -0400 Subject: Rework example directories. Gets rid of gnuradio-examples, moves these to more appropriate components. gnuradio-core and grc now have their own examples directories for files directly related to them. --- grc/CMakeLists.txt | 1 + grc/examples/CMakeLists.txt | 37 +++ grc/examples/simple/variable_config.grc | 329 ++++++++++++++++++++++++ grc/examples/xmlrpc/readme.txt | 18 ++ grc/examples/xmlrpc/xmlrpc_client.grc | 312 ++++++++++++++++++++++ grc/examples/xmlrpc/xmlrpc_client_script.py | 23 ++ grc/examples/xmlrpc/xmlrpc_server.grc | 384 ++++++++++++++++++++++++++++ 7 files changed, 1104 insertions(+) create mode 100644 grc/examples/CMakeLists.txt create mode 100644 grc/examples/simple/variable_config.grc create mode 100644 grc/examples/xmlrpc/readme.txt create mode 100644 grc/examples/xmlrpc/xmlrpc_client.grc create mode 100644 grc/examples/xmlrpc/xmlrpc_client_script.py create mode 100644 grc/examples/xmlrpc/xmlrpc_server.grc (limited to 'grc') diff --git a/grc/CMakeLists.txt b/grc/CMakeLists.txt index 997aa56b1..8be5d7fbc 100644 --- a/grc/CMakeLists.txt +++ b/grc/CMakeLists.txt @@ -121,5 +121,6 @@ add_subdirectory(grc_gnuradio) add_subdirectory(gui) add_subdirectory(python) add_subdirectory(scripts) +add_subdirectory(examples) endif(ENABLE_GRC) diff --git a/grc/examples/CMakeLists.txt b/grc/examples/CMakeLists.txt new file mode 100644 index 000000000..acb65dbdc --- /dev/null +++ b/grc/examples/CMakeLists.txt @@ -0,0 +1,37 @@ +# Copyright 2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +# SIMPLE +install( + FILES + simple/variable_config.grc + DESTINATION ${GR_PKG_DATA_DIR}/examples/grc/simple + COMPONENT "grc" +) + +# XMLRPC +install( + FILES + xmlrpc/readme.txt + xmlrpc/xmlrpc_client.grc + xmlrpc/xmlrpc_client_script.py + xmlrpc/xmlrpc_server.grc + DESTINATION ${GR_PKG_DATA_DIR}/examples/grc/xmlrpc + COMPONENT "grc" +) diff --git a/grc/examples/simple/variable_config.grc b/grc/examples/simple/variable_config.grc new file mode 100644 index 000000000..95c287cce --- /dev/null +++ b/grc/examples/simple/variable_config.grc @@ -0,0 +1,329 @@ + + + Thu Jun 25 10:56:04 2009 + + options + + id + variable_config_demo + + + _enabled + True + + + title + Variable Config Block Demonstration + + + author + Example + + + description + Save/Load freq from a config file. + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + autostart + True + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 32000 + + + _coordinate + (10, 170) + + + _rotation + 0 + + + + variable_config + + id + freq_init + + + _enabled + True + + + value + 1000 + + + type + real + + + config_file + config.conf + + + section + main + + + option + freq + + + writeback + freq + + + _coordinate + (255, 17) + + + _rotation + 0 + + + + variable_slider + + id + freq + + + _enabled + True + + + label + Frequency (Hz) + + + value + freq_init + + + min + -samp_rate/2 + + + max + samp_rate/2 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + _coordinate + (429, 24) + + + _rotation + 0 + + + + gr_throttle + + id + gr_throttle_0 + + + _enabled + True + + + type + complex + + + samples_per_second + samp_rate + + + vlen + 1 + + + _coordinate + (392, 233) + + + _rotation + 0 + + + + gr_sig_source_x + + id + gr_sig_source_x_0 + + + _enabled + True + + + type + complex + + + samp_rate + samp_rate + + + waveform + gr.GR_COS_WAVE + + + freq + freq + + + amp + 1 + + + offset + 0 + + + _coordinate + (148, 233) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + wxgui_fftsink2_0 + + + _enabled + True + + + type + complex + + + title + FFT Plot + + + samp_rate + samp_rate + + + baseband_freq + 0 + + + y_per_div + 10 + + + y_divs + 10 + + + ref_level + 50 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + grid_pos + + + + _coordinate + (671, 233) + + + _rotation + 0 + + + + gr_sig_source_x_0 + gr_throttle_0 + 0 + 0 + + + gr_throttle_0 + wxgui_fftsink2_0 + 0 + 0 + + diff --git a/grc/examples/xmlrpc/readme.txt b/grc/examples/xmlrpc/readme.txt new file mode 100644 index 000000000..c1f87c1cb --- /dev/null +++ b/grc/examples/xmlrpc/readme.txt @@ -0,0 +1,18 @@ +################################################## +# XMLRPC example +################################################## + +XMLRPC allows software to make remote function calls over http. +In the case of GRC, one can use XMLRPC to modify variables in a running flow graph. +See http://www.xmlrpc.com/ + +--- Server Example --- +Place an "XMLRPC Server" block inside of any flow graph. +The server will provide set functions for every variable in the flow graph. +If a variable is called "freq", the server will provide a function set_freq(new_freq). +Run the server example and experiment with the example client script. + +-- Client Example -- +The "XMLRPC Client" block will give a variable control over one remove function. +In the example client, there is one client block and gui control per variable. +This technique can be used to remotely control a flow graph, perhaps running on a non-gui machine. diff --git a/grc/examples/xmlrpc/xmlrpc_client.grc b/grc/examples/xmlrpc/xmlrpc_client.grc new file mode 100644 index 000000000..3bb4e7ed3 --- /dev/null +++ b/grc/examples/xmlrpc/xmlrpc_client.grc @@ -0,0 +1,312 @@ + + + Thu Jul 24 14:27:44 2008 + + options + + id + client_block + + + _enabled + True + + + title + XMLRPC Client + + + author + Example + + + description + example flow graph + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + xmlrpc_client + + id + xmlrpc_client0 + + + _enabled + True + + + addr + localhost + + + port + 1234 + + + callback + set_ampl + + + variable + ampl + + + _coordinate + (409, 35) + + + _rotation + 0 + + + + xmlrpc_client + + id + xmlrpc_client + + + _enabled + True + + + addr + localhost + + + port + 1234 + + + callback + set_freq + + + variable + freq + + + _coordinate + (222, 34) + + + _rotation + 0 + + + + variable_slider + + id + freq + + + _enabled + True + + + label + Frequency (Hz) + + + value + 1000 + + + min + 0 + + + max + 5000 + + + num_steps + 100 + + + slider_type + horizontal + + + grid_pos + 0, 0, 1, 2 + + + _coordinate + (207, 162) + + + _rotation + 0 + + + + variable_slider + + id + ampl + + + _enabled + True + + + label + Amplitude + + + value + 1 + + + min + 0 + + + max + 2 + + + num_steps + 100 + + + slider_type + horizontal + + + grid_pos + 1, 0, 1, 2 + + + _coordinate + (397, 167) + + + _rotation + 0 + + + + variable_chooser + + id + offset + + + _enabled + True + + + label + Offset + + + value_index + 1 + + + choices + [-1, 0, 1] + + + labels + ["neg", "zero", "pos"] + + + chooser_type + radio_buttons_horizontal + + + grid_pos + 2, 0, 1, 2 + + + _coordinate + (596, 177) + + + _rotation + 0 + + + + xmlrpc_client + + id + xmlrpc_client1 + + + _enabled + True + + + addr + localhost + + + port + 1234 + + + callback + set_offset + + + variable + offset*ampl + + + _coordinate + (608, 39) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 32000 + + + _coordinate + (13, 172) + + + _rotation + 0 + + + \ No newline at end of file diff --git a/grc/examples/xmlrpc/xmlrpc_client_script.py b/grc/examples/xmlrpc/xmlrpc_client_script.py new file mode 100644 index 000000000..956fa07fb --- /dev/null +++ b/grc/examples/xmlrpc/xmlrpc_client_script.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python + +import time +import random +import xmlrpclib + +#create server object +s = xmlrpclib.Server("http://localhost:1234") + +#randomly change parameters of the sinusoid +for i in range(10): + #generate random values + new_freq = random.uniform(0, 5000) + new_ampl = random.uniform(0, 2) + new_offset = random.uniform(-1, 1) + #set new values + time.sleep(1) + s.set_freq(new_freq) + time.sleep(1) + s.set_ampl(new_ampl) + time.sleep(1) + s.set_offset(new_offset) + diff --git a/grc/examples/xmlrpc/xmlrpc_server.grc b/grc/examples/xmlrpc/xmlrpc_server.grc new file mode 100644 index 000000000..dc539ef1b --- /dev/null +++ b/grc/examples/xmlrpc/xmlrpc_server.grc @@ -0,0 +1,384 @@ + + + Thu Jul 24 14:27:42 2008 + + options + + id + server_block + + + _enabled + True + + + title + XMLRPC Server + + + author + Example + + + description + example flow graph + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + gr_sig_source_x + + id + gr_sig_source_x + + + _enabled + True + + + type + float + + + samp_rate + samp_rate + + + waveform + gr.GR_COS_WAVE + + + freq + freq + + + amp + ampl + + + offset + offset + + + _coordinate + (162, 200) + + + _rotation + 0 + + + + variable + + id + offset + + + _enabled + True + + + value + 0 + + + _coordinate + (12, 390) + + + _rotation + 0 + + + + xmlrpc_server + + id + xmlrpc_server + + + _enabled + True + + + addr + localhost + + + port + 1234 + + + _coordinate + (395, 240) + + + _rotation + 0 + + + + gr_throttle + + id + gr_throttle + + + _enabled + True + + + type + float + + + samples_per_second + samp_rate + + + vlen + 1 + + + _coordinate + (386, 93) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2 + + + _enabled + True + + + type + float + + + title + Scope Plot + + + samp_rate + samp_rate + + + frame_decim + 15 + + + v_scale + 0 + + + t_scale + .001 + + + marker + set_format_line + + + num_inputs + 1 + + + grid_pos + 0, 0, 2, 4 + + + _coordinate + (623, 28) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + wxgui_fftsink2 + + + _enabled + True + + + type + float + + + title + FFT Plot + + + samp_rate + samp_rate + + + baseband_freq + 0 + + + y_per_div + 10 + + + y_divs + 8 + + + ref_level + 50 + + + fft_size + 512 + + + fft_rate + 15 + + + avg_alpha + 0 + + + average + False + + + peak_hold + False + + + grid_pos + 2, 0, 2, 4 + + + _coordinate + (630, 233) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 32000 + + + _coordinate + (11, 160) + + + _rotation + 0 + + + + variable + + id + freq + + + _enabled + True + + + value + 1000 + + + _coordinate + (11, 237) + + + _rotation + 0 + + + + variable + + id + ampl + + + _enabled + True + + + value + 1 + + + _coordinate + (13, 315) + + + _rotation + 0 + + + + gr_sig_source_x + gr_throttle + 0 + 0 + + + gr_throttle + wxgui_scopesink2 + 0 + 0 + + + gr_throttle + wxgui_fftsink2 + 0 + 0 + + \ No newline at end of file -- cgit