Commit a60abb54d7b055deae20ca40231335c3749d0ca6

Authored by bmarechal
1 parent 4cbe368ff5
Exists in master

prepare to deploy

Showing 18 changed files with 348 additions and 87 deletions Side-by-side Diff

redpitaya/client/gr_add_const_set_offset.xml
  1 +<?xml version="1.0"?>
  2 +<!--
  3 +# GNU Radio blocks for the Red Pitaya transceiver
  4 +# Copyright (C) 2015 Renzo Davoli
  5 +#
  6 +# This program is free software; you can redistribute it and/or
  7 +# modify it under the terms of the GNU General Public License
  8 +# as published by the Free Software Foundation; either version 2
  9 +# of the License, or (at your option) any later version.
  10 +#
  11 +# This program is distributed in the hope that it will be useful,
  12 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 +# GNU General Public License for more details.
  15 +#
  16 +# You should have received a copy of the GNU General Public License
  17 +# along with this program; if not, write to the Free Software
  18 +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19 + -->
  20 +<block>
  21 + <name>add_const_set_offset</name>
  22 + <key>add_const_set_offset</key>
  23 + <category>Red Pitaya</category>
  24 + <import>import redpitaya_gnuradio</import>
  25 + <make>redpitaya_gnuradio.add_const_set_offset(
  26 + addr=$addr,
  27 + port=$port,
  28 + device=$device,
  29 + const=$const,
  30 +)
  31 + </make>
  32 + <callback>set_const(device=$device, const=$const)</callback>
  33 + <param>
  34 + <name>Address</name>
  35 + <key>addr</key>
  36 + <value>192.168.0.201</value>
  37 + <type>string</type>
  38 + </param>
  39 + <param>
  40 + <name>Port</name>
  41 + <key>port</key>
  42 + <value>1001</value>
  43 + <type>int</type>
  44 + </param>
  45 + <param>
  46 + <name>Device</name>
  47 + <key>device</key>
  48 + <value>/dev/add_const_0</value>
  49 + <type>string</type>
  50 + </param>
  51 + <param>
  52 + <name>Constant</name>
  53 + <key>const</key>
  54 + <value>0</value>
  55 + <type>int</type>
  56 + </param>
  57 +</block>
redpitaya/client/gr_nco_counter_send_conf.xml
  1 +<?xml version="1.0"?>
  2 +<!--
  3 +# GNU Radio blocks for the Red Pitaya transceiver
  4 +# Copyright (C) 2015 Renzo Davoli
  5 +#
  6 +# This program is free software; you can redistribute it and/or
  7 +# modify it under the terms of the GNU General Public License
  8 +# as published by the Free Software Foundation; either version 2
  9 +# of the License, or (at your option) any later version.
  10 +#
  11 +# This program is distributed in the hope that it will be useful,
  12 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 +# GNU General Public License for more details.
  15 +#
  16 +# You should have received a copy of the GNU General Public License
  17 +# along with this program; if not, write to the Free Software
  18 +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19 + -->
  20 +<block>
  21 + <name>nco_counter_send_conf</name>
  22 + <key>nco_counter_send_conf</key>
  23 + <category>Red Pitaya</category>
  24 + <import>import redpitaya_gnuradio</import>
  25 + <make>redpitaya_gnuradio.nco_counter_send_conf(
  26 + addr=$addr,
  27 + port=$port,
  28 + device=$device,
  29 + freq_ref=$freq_ref,
  30 + freq_dds=$freq_dds,
  31 + acc_size=$acc_size,
  32 + offset=$offset,
  33 + pinc_sw=$pinc_sw,
  34 + poff_sw=$poff_sw,
  35 +)
  36 + </make>
  37 + <callback>set_nco(device=$device, freq_ref=$freq_ref, freq_dds=$freq_dds, acc_size=$acc_size, offset=$offset, pinc_sw=$pinc_sw, poff_sw=$poff_sw)</callback>
  38 + <param>
  39 + <name>Address</name>
  40 + <key>addr</key>
  41 + <value>192.168.0.201</value>
  42 + <type>string</type>
  43 + </param>
  44 + <param>
  45 + <name>Port</name>
  46 + <key>port</key>
  47 + <value>1001</value>
  48 + <type>int</type>
  49 + </param>
  50 + <param>
  51 + <name>Device</name>
  52 + <key>device</key>
  53 + <value>/dev/dds1</value>
  54 + <type>string</type>
  55 + </param>
  56 + <param>
  57 + <name>Frequency ref</name>
  58 + <key>freq_ref</key>
  59 + <value>125000000</value>
  60 + <type>int</type>
  61 + </param>
  62 + <param>
  63 + <name>Frequency DDS</name>
  64 + <key>freq_dds</key>
  65 + <value>0</value>
  66 + <type>int</type>
  67 + </param>
  68 + <param>
  69 + <name>Accumulator size</name>
  70 + <key>acc_size</key>
  71 + <value>32</value>
  72 + <type>int</type>
  73 + </param>
  74 + <param>
  75 + <name>Offset</name>
  76 + <key>offset</key>
  77 + <value>0</value>
  78 + <type>int</type>
  79 + </param>
  80 +<param>
  81 + <name>Pinc SW</name>
  82 + <key>pinc_sw</key>
  83 + <value>1</value>
  84 + <type>int</type>
  85 + </param>
  86 +<param>
  87 + <name>Poff SW</name>
  88 + <key>poff_sw</key>
  89 + <value>1</value>
  90 + <type>int</type>
  91 + </param>
  92 +</block>
redpitaya/client/gr_rp_blocks/gr_add_const_set_offset.xml
1   -<?xml version="1.0"?>
2   -<!--
3   -# GNU Radio blocks for the Red Pitaya transceiver
4   -# Copyright (C) 2015 Renzo Davoli
5   -#
6   -# This program is free software; you can redistribute it and/or
7   -# modify it under the terms of the GNU General Public License
8   -# as published by the Free Software Foundation; either version 2
9   -# of the License, or (at your option) any later version.
10   -#
11   -# This program is distributed in the hope that it will be useful,
12   -# but WITHOUT ANY WARRANTY; without even the implied warranty of
13   -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14   -# GNU General Public License for more details.
15   -#
16   -# You should have received a copy of the GNU General Public License
17   -# along with this program; if not, write to the Free Software
18   -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19   - -->
20   -<block>
21   - <name>add_const_set_offset</name>
22   - <key>add_const_set_offset</key>
23   - <category>Red Pitaya</category>
24   - <import>import redpitaya_gnuradio</import>
25   - <make>redpitaya_gnuradio.add_const_set_offset(
26   - addr=$addr,
27   - port=$port,
28   - device=$device,
29   - const=$const,
30   -)
31   - </make>
32   - <callback>set_const(device=$device, const=$const)</callback>
33   - <param>
34   - <name>Address</name>
35   - <key>addr</key>
36   - <value>192.168.0.201</value>
37   - <type>string</type>
38   - </param>
39   - <param>
40   - <name>Port</name>
41   - <key>port</key>
42   - <value>1001</value>
43   - <type>int</type>
44   - </param>
45   - <param>
46   - <name>Device</name>
47   - <key>device</key>
48   - <value>/dev/add_const_0</value>
49   - <type>string</type>
50   - </param>
51   - <param>
52   - <name>Constant</name>
53   - <key>const</key>
54   - <value>0</value>
55   - <type>int</type>
56   - </param>
57   -</block>
redpitaya/client/gr_rp_blocks/gr_nco_counter_send_conf.xml
1   -<?xml version="1.0"?>
2   -<!--
3   -# GNU Radio blocks for the Red Pitaya transceiver
4   -# Copyright (C) 2015 Renzo Davoli
5   -#
6   -# This program is free software; you can redistribute it and/or
7   -# modify it under the terms of the GNU General Public License
8   -# as published by the Free Software Foundation; either version 2
9   -# of the License, or (at your option) any later version.
10   -#
11   -# This program is distributed in the hope that it will be useful,
12   -# but WITHOUT ANY WARRANTY; without even the implied warranty of
13   -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14   -# GNU General Public License for more details.
15   -#
16   -# You should have received a copy of the GNU General Public License
17   -# along with this program; if not, write to the Free Software
18   -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19   - -->
20   -<block>
21   - <name>nco_counter_send_conf</name>
22   - <key>nco_counter_send_conf</key>
23   - <category>Red Pitaya</category>
24   - <import>import redpitaya_gnuradio</import>
25   - <make>redpitaya_gnuradio.nco_counter_send_conf(
26   - addr=$addr,
27   - port=$port,
28   - device=$device,
29   - freq_ref=$freq_ref,
30   - freq_dds=$freq_dds,
31   - acc_size=$acc_size,
32   - offset=$offset,
33   - pinc_sw=$pinc_sw,
34   - poff_sw=$poff_sw,
35   -)
36   - </make>
37   - <callback>set_nco(device=$device, freq_ref=$freq_ref, freq_dds=$freq_dds, acc_size=$acc_size, offset=$offset, pinc_sw=$pinc_sw, poff_sw=$poff_sw)</callback>
38   - <param>
39   - <name>Address</name>
40   - <key>addr</key>
41   - <value>192.168.0.201</value>
42   - <type>string</type>
43   - </param>
44   - <param>
45   - <name>Port</name>
46   - <key>port</key>
47   - <value>1001</value>
48   - <type>int</type>
49   - </param>
50   - <param>
51   - <name>Device</name>
52   - <key>device</key>
53   - <value>/dev/dds1</value>
54   - <type>string</type>
55   - </param>
56   - <param>
57   - <name>Frequency ref</name>
58   - <key>freq_ref</key>
59   - <value>125000000</value>
60   - <type>int</type>
61   - </param>
62   - <param>
63   - <name>Frequency DDS</name>
64   - <key>freq_dds</key>
65   - <value>0</value>
66   - <type>int</type>
67   - </param>
68   - <param>
69   - <name>Accumulator size</name>
70   - <key>acc_size</key>
71   - <value>32</value>
72   - <type>int</type>
73   - </param>
74   - <param>
75   - <name>Offset</name>
76   - <key>offset</key>
77   - <value>0</value>
78   - <type>int</type>
79   - </param>
80   -<param>
81   - <name>Pinc SW</name>
82   - <key>pinc_sw</key>
83   - <value>1</value>
84   - <type>int</type>
85   - </param>
86   -<param>
87   - <name>Poff SW</name>
88   - <key>poff_sw</key>
89   - <value>1</value>
90   - <type>int</type>
91   - </param>
92   -</block>
redpitaya/client/gr_rp_blocks/gr_source_test.xml
1   -<?xml version="1.0"?>
2   -<!--
3   -# GNU Radio blocks for the Red Pitaya transceiver
4   -# Copyright (C) 2015 Renzo Davoli
5   -#
6   -# This program is free software; you can redistribute it and/or
7   -# modify it under the terms of the GNU General Public License
8   -# as published by the Free Software Foundation; either version 2
9   -# of the License, or (at your option) any later version.
10   -#
11   -# This program is distributed in the hope that it will be useful,
12   -# but WITHOUT ANY WARRANTY; without even the implied warranty of
13   -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14   -# GNU General Public License for more details.
15   -#
16   -# You should have received a copy of the GNU General Public License
17   -# along with this program; if not, write to the Free Software
18   -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19   - -->
20   -<block>
21   - <name>source_test</name>
22   - <key>source_test</key>
23   - <category>Red Pitaya</category>
24   - <import>import redpitaya_gnuradio</import>
25   - <make>redpitaya_gnuradio.source_test()</make>
26   - <source>
27   - <name>out</name>
28   - <type>complex</type>
29   - </source>
30   -</block>
redpitaya/client/gr_rp_blocks/gr_source_test.xml.old
1   -<?xml version="1.0"?>
2   -<!--
3   -# GNU Radio blocks for the Red Pitaya transceiver
4   -# Copyright (C) 2015 Renzo Davoli
5   -#
6   -# This program is free software; you can redistribute it and/or
7   -# modify it under the terms of the GNU General Public License
8   -# as published by the Free Software Foundation; either version 2
9   -# of the License, or (at your option) any later version.
10   -#
11   -# This program is distributed in the hope that it will be useful,
12   -# but WITHOUT ANY WARRANTY; without even the implied warranty of
13   -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14   -# GNU General Public License for more details.
15   -#
16   -# You should have received a copy of the GNU General Public License
17   -# along with this program; if not, write to the Free Software
18   -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19   - -->
20   -<block>
21   - <name>source_test</name>
22   - <key>source_test</key>
23   - <category>Red Pitaya</category>
24   - <import>import redpitaya_gnuradio</import>
25   - <make>redpitaya_gnuradio.source_test()</make>
26   - <source>
27   - <name>out</name>
28   - <type>complex</type>
29   - </source>
30   -</block>
redpitaya/client/gr_rp_blocks/redpitaya_gnuradio.py
1   -#!/usr/bin/env python
2   -
3   -# GNU Radio blocks for the Red Pitaya transceiver
4   -# Copyright (C) 2015 Renzo Davoli
5   -#
6   -# This program is free software; you can redistribute it and/or
7   -# modify it under the terms of the GNU General Public License
8   -# as published by the Free Software Foundation; either version 2
9   -# of the License, or (at your option) any later version.
10   -#
11   -# This program is distributed in the hope that it will be useful,
12   -# but WITHOUT ANY WARRANTY; without even the implied warranty of
13   -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14   -# GNU General Public License for more details.
15   -#
16   -# You should have received a copy of the GNU General Public License
17   -# along with this program; if not, write to the Free Software
18   -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19   -
20   -import socket, os
21   -from gnuradio import gr, blocks
22   -
23   -class add_const_set_offset(gr.hier_block2):
24   - def __init__(self, addr, port, device, const):
25   - self.name = "add_const_set_offset"
26   - gr.hier_block2.__init__(
27   - self,
28   - name = self.name,
29   - input_signature = gr.io_signature(0, 0, 0),
30   - output_signature = gr.io_signature(0, 0, 0)
31   - )
32   - self.ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
33   - self.ctrl_sock.connect((addr, port))
34   - self.set_const(device, const)
35   -
36   - def set_const(self, device, const):
37   - self.ctrl_sock.send('%s;%s;%i\n'%(self.name, device, const))
38   -
39   -
40   -class nco_counter_send_conf(gr.hier_block2):
41   - def __init__(self, addr, port, device, freq_ref, freq_dds, acc_size, offset, pinc_sw, poff_sw):
42   - self.name = "nco_counter_send_conf"
43   - gr.hier_block2.__init__(
44   - self,
45   - name = self.name,
46   - input_signature = gr.io_signature(0, 0, 0),
47   - output_signature = gr.io_signature(0, 0, 0)
48   - )
49   - self.ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
50   - self.ctrl_sock.connect((addr, port))
51   - self.set_nco(device, freq_ref, freq_dds, acc_size, offset, pinc_sw, poff_sw)
52   -
53   - def set_nco(self, device, freq_ref, freq_dds, acc_size, offset, pinc_sw, poff_sw):
54   - self.ctrl_sock.send('%s;%s;%i;%i;%i;%i;%i;%i\n'%(self.name, device, freq_ref, freq_dds, acc_size, offset, pinc_sw, poff_sw))
55   -
56   -'''~
57   -class source_test(gr.hier_block2):
58   - def __init__(self):
59   - self.name = "source_test"
60   - gr.hier_block2.__init__(
61   - self,
62   - name = self.name,
63   - input_signature = gr.io_signature(0, 0, 0),
64   - output_signature = gr.io_signature(1, 1, gr.sizeof_gr_complex)
65   - )
66   - self.data_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
67   - self.data_sock.connect((addr, port))
68   - self.data_sock.send('%s'%self.name)
69   - fd = os.dup(self.data_sock.fileno())
70   - self.connect(blocks.file_descriptor_source(gr.sizeof_gr_complex, fd), self)
71   -'''
redpitaya/client/gr_rp_blocks/redpitaya_gnuradio.pyc
No preview for this file type
redpitaya/client/gr_source_test.xml
  1 +<?xml version="1.0"?>
  2 +<!--
  3 +# GNU Radio blocks for the Red Pitaya transceiver
  4 +# Copyright (C) 2015 Renzo Davoli
  5 +#
  6 +# This program is free software; you can redistribute it and/or
  7 +# modify it under the terms of the GNU General Public License
  8 +# as published by the Free Software Foundation; either version 2
  9 +# of the License, or (at your option) any later version.
  10 +#
  11 +# This program is distributed in the hope that it will be useful,
  12 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 +# GNU General Public License for more details.
  15 +#
  16 +# You should have received a copy of the GNU General Public License
  17 +# along with this program; if not, write to the Free Software
  18 +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19 + -->
  20 +<block>
  21 + <name>source_test</name>
  22 + <key>source_test</key>
  23 + <category>Red Pitaya</category>
  24 + <import>import redpitaya_gnuradio</import>
  25 + <make>redpitaya_gnuradio.source_test()</make>
  26 + <source>
  27 + <name>out</name>
  28 + <type>complex</type>
  29 + </source>
  30 +</block>
redpitaya/client/gr_source_test.xml.old
  1 +<?xml version="1.0"?>
  2 +<!--
  3 +# GNU Radio blocks for the Red Pitaya transceiver
  4 +# Copyright (C) 2015 Renzo Davoli
  5 +#
  6 +# This program is free software; you can redistribute it and/or
  7 +# modify it under the terms of the GNU General Public License
  8 +# as published by the Free Software Foundation; either version 2
  9 +# of the License, or (at your option) any later version.
  10 +#
  11 +# This program is distributed in the hope that it will be useful,
  12 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 +# GNU General Public License for more details.
  15 +#
  16 +# You should have received a copy of the GNU General Public License
  17 +# along with this program; if not, write to the Free Software
  18 +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19 + -->
  20 +<block>
  21 + <name>source_test</name>
  22 + <key>source_test</key>
  23 + <category>Red Pitaya</category>
  24 + <import>import redpitaya_gnuradio</import>
  25 + <make>redpitaya_gnuradio.source_test()</make>
  26 + <source>
  27 + <name>out</name>
  28 + <type>complex</type>
  29 + </source>
  30 +</block>
redpitaya/client/pid_dds.grc
Diff suppressed. Click to show
1   -<?xml version='1.0' encoding='utf-8'?>
2   -<?grc format='1' created='3.7.10'?>
3   -<flow_graph>
4   - <timestamp>Thu Feb 2 22:54:58 2017</timestamp>
5   - <block>
6   - <key>options</key>
7   - <param>
8   - <key>author</key>
9   - <value></value>
10   - </param>
11   - <param>
12   - <key>window_size</key>
13   - <value></value>
14   - </param>
15   - <param>
16   - <key>category</key>
17   - <value>[GRC Hier Blocks]</value>
18   - </param>
19   - <param>
20   - <key>comment</key>
21   - <value></value>
22   - </param>
23   - <param>
24   - <key>description</key>
25   - <value></value>
26   - </param>
27   - <param>
28   - <key>_enabled</key>
29   - <value>True</value>
30   - </param>
31   - <param>
32   - <key>_coordinate</key>
33   - <value>(8, 8)</value>
34   - </param>
35   - <param>
36   - <key>_rotation</key>
37   - <value>0</value>
38   - </param>
39   - <param>
40   - <key>generate_options</key>
41   - <value>qt_gui</value>
42   - </param>
43   - <param>
44   - <key>hier_block_src_path</key>
45   - <value>.:</value>
46   - </param>
47   - <param>
48   - <key>id</key>
49   - <value>pid_dds</value>
50   - </param>
51   - <param>
52   - <key>max_nouts</key>
53   - <value>0</value>
54   - </param>
55   - <param>
56   - <key>qt_qss_theme</key>
57   - <value></value>
58   - </param>
59   - <param>
60   - <key>realtime_scheduling</key>
61   - <value></value>
62   - </param>
63   - <param>
64   - <key>run_command</key>
65   - <value>{python} -u {filename}</value>
66   - </param>
67   - <param>
68   - <key>run_options</key>
69   - <value>prompt</value>
70   - </param>
71   - <param>
72   - <key>run</key>
73   - <value>True</value>
74   - </param>
75   - <param>
76   - <key>thread_safe_setters</key>
77   - <value></value>
78   - </param>
79   - <param>
80   - <key>title</key>
81   - <value></value>
82   - </param>
83   - </block>
84   - <block>
85   - <key>variable_qtgui_range</key>
86   - <param>
87   - <key>comment</key>
88   - <value></value>
89   - </param>
90   - <param>
91   - <key>value</key>
92   - <value>0</value>
93   - </param>
94   - <param>
95   - <key>_enabled</key>
96   - <value>True</value>
97   - </param>
98   - <param>
99   - <key>_coordinate</key>
100   - <value>(216, 8)</value>
101   - </param>
102   - <param>
103   - <key>gui_hint</key>
104   - <value>1, 1</value>
105   - </param>
106   - <param>
107   - <key>_rotation</key>
108   - <value>0</value>
109   - </param>
110   - <param>
111   - <key>id</key>
112   - <value>adc1_offset</value>
113   - </param>
114   - <param>
115   - <key>label</key>
116   - <value>adc1_offset</value>
117   - </param>
118   - <param>
119   - <key>min_len</key>
120   - <value>200</value>
121   - </param>
122   - <param>
123   - <key>orient</key>
124   - <value>Qt.Horizontal</value>
125   - </param>
126   - <param>
127   - <key>start</key>
128   - <value>-2**13</value>
129   - </param>
130   - <param>
131   - <key>step</key>
132   - <value>1</value>
133   - </param>
134   - <param>
135   - <key>stop</key>
136   - <value>2**13-1</value>
137   - </param>
138   - <param>
139   - <key>rangeType</key>
140   - <value>int</value>
141   - </param>
142   - <param>
143   - <key>widget</key>
144   - <value>counter_slider</value>
145   - </param>
146   - </block>
147   - <block>
148   - <key>variable</key>
149   - <param>
150   - <key>comment</key>
151   - <value></value>
152   - </param>
153   - <param>
154   - <key>_enabled</key>
155   - <value>True</value>
156   - </param>
157   - <param>
158   - <key>_coordinate</key>
159   - <value>(8, 104)</value>
160   - </param>
161   - <param>
162   - <key>_rotation</key>
163   - <value>0</value>
164   - </param>
165   - <param>
166   - <key>id</key>
167   - <value>addr</value>
168   - </param>
169   - <param>
170   - <key>value</key>
171   - <value>"192.168.0.202"</value>
172   - </param>
173   - </block>
174   - <block>
175   - <key>variable_qtgui_range</key>
176   - <param>
177   - <key>comment</key>
178   - <value></value>
179   - </param>
180   - <param>
181   - <key>value</key>
182   - <value>0</value>
183   - </param>
184   - <param>
185   - <key>_enabled</key>
186   - <value>True</value>
187   - </param>
188   - <param>
189   - <key>_coordinate</key>
190   - <value>(400, 8)</value>
191   - </param>
192   - <param>
193   - <key>gui_hint</key>
194   - <value>1, 2</value>
195   - </param>
196   - <param>
197   - <key>_rotation</key>
198   - <value>0</value>
199   - </param>
200   - <param>
201   - <key>id</key>
202   - <value>dac1_offset</value>
203   - </param>
204   - <param>
205   - <key>label</key>
206   - <value>dac1_offset</value>
207   - </param>
208   - <param>
209   - <key>min_len</key>
210   - <value>200</value>
211   - </param>
212   - <param>
213   - <key>orient</key>
214   - <value>Qt.Horizontal</value>
215   - </param>
216   - <param>
217   - <key>start</key>
218   - <value>-2**13</value>
219   - </param>
220   - <param>
221   - <key>step</key>
222   - <value>1</value>
223   - </param>
224   - <param>
225   - <key>stop</key>
226   - <value>2**13-1</value>
227   - </param>
228   - <param>
229   - <key>rangeType</key>
230   - <value>int</value>
231   - </param>
232   - <param>
233   - <key>widget</key>
234   - <value>counter_slider</value>
235   - </param>
236   - </block>
237   - <block>
238   - <key>variable_qtgui_range</key>
239   - <param>
240   - <key>comment</key>
241   - <value></value>
242   - </param>
243   - <param>
244   - <key>value</key>
245   - <value>0</value>
246   - </param>
247   - <param>
248   - <key>_enabled</key>
249   - <value>True</value>
250   - </param>
251   - <param>
252   - <key>_coordinate</key>
253   - <value>(704, 8)</value>
254   - </param>
255   - <param>
256   - <key>gui_hint</key>
257   - <value>1, 3</value>
258   - </param>
259   - <param>
260   - <key>_rotation</key>
261   - <value>0</value>
262   - </param>
263   - <param>
264   - <key>id</key>
265   - <value>dds_ampl</value>
266   - </param>
267   - <param>
268   - <key>label</key>
269   - <value>dds_ampl</value>
270   - </param>
271   - <param>
272   - <key>min_len</key>
273   - <value>200</value>
274   - </param>
275   - <param>
276   - <key>orient</key>
277   - <value>Qt.Horizontal</value>
278   - </param>
279   - <param>
280   - <key>start</key>
281   - <value>0</value>
282   - </param>
283   - <param>
284   - <key>step</key>
285   - <value>1</value>
286   - </param>
287   - <param>
288   - <key>stop</key>
289   - <value>2**14-1</value>
290   - </param>
291   - <param>
292   - <key>rangeType</key>
293   - <value>int</value>
294   - </param>
295   - <param>
296   - <key>widget</key>
297   - <value>counter_slider</value>
298   - </param>
299   - </block>
300   - <block>
301   - <key>variable_qtgui_range</key>
302   - <param>
303   - <key>comment</key>
304   - <value></value>
305   - </param>
306   - <param>
307   - <key>value</key>
308   - <value>0</value>
309   - </param>
310   - <param>
311   - <key>_enabled</key>
312   - <value>True</value>
313   - </param>
314   - <param>
315   - <key>_coordinate</key>
316   - <value>(696, 784)</value>
317   - </param>
318   - <param>
319   - <key>gui_hint</key>
320   - <value>4, 3</value>
321   - </param>
322   - <param>
323   - <key>_rotation</key>
324   - <value>0</value>
325   - </param>
326   - <param>
327   - <key>id</key>
328   - <value>dds_f0</value>
329   - </param>
330   - <param>
331   - <key>label</key>
332   - <value>dds_f0</value>
333   - </param>
334   - <param>
335   - <key>min_len</key>
336   - <value>200</value>
337   - </param>
338   - <param>
339   - <key>orient</key>
340   - <value>Qt.Horizontal</value>
341   - </param>
342   - <param>
343   - <key>start</key>
344   - <value>0</value>
345   - </param>
346   - <param>
347   - <key>step</key>
348   - <value>1</value>
349   - </param>
350   - <param>
351   - <key>stop</key>
352   - <value>2**14-1</value>
353   - </param>
354   - <param>
355   - <key>rangeType</key>
356   - <value>int</value>
357   - </param>
358   - <param>
359   - <key>widget</key>
360   - <value>counter_slider</value>
361   - </param>
362   - </block>
363   - <block>
364   - <key>variable_qtgui_range</key>
365   - <param>
366   - <key>comment</key>
367   - <value></value>
368   - </param>
369   - <param>
370   - <key>value</key>
371   - <value>0</value>
372   - </param>
373   - <param>
374   - <key>_enabled</key>
375   - <value>True</value>
376   - </param>
377   - <param>
378   - <key>_coordinate</key>
379   - <value>(696, 272)</value>
380   - </param>
381   - <param>
382   - <key>gui_hint</key>
383   - <value>2, 3</value>
384   - </param>
385   - <param>
386   - <key>_rotation</key>
387   - <value>0</value>
388   - </param>
389   - <param>
390   - <key>id</key>
391   - <value>dds_nco</value>
392   - </param>
393   - <param>
394   - <key>label</key>
395   - <value>dds_nco</value>
396   - </param>
397   - <param>
398   - <key>min_len</key>
399   - <value>200</value>
400   - </param>
401   - <param>
402   - <key>orient</key>
403   - <value>Qt.Horizontal</value>
404   - </param>
405   - <param>
406   - <key>start</key>
407   - <value>0</value>
408   - </param>
409   - <param>
410   - <key>step</key>
411   - <value>1</value>
412   - </param>
413   - <param>
414   - <key>stop</key>
415   - <value>60000000</value>
416   - </param>
417   - <param>
418   - <key>rangeType</key>
419   - <value>int</value>
420   - </param>
421   - <param>
422   - <key>widget</key>
423   - <value>counter_slider</value>
424   - </param>
425   - </block>
426   - <block>
427   - <key>variable_qtgui_range</key>
428   - <param>
429   - <key>comment</key>
430   - <value></value>
431   - </param>
432   - <param>
433   - <key>value</key>
434   - <value>0</value>
435   - </param>
436   - <param>
437   - <key>_enabled</key>
438   - <value>True</value>
439   - </param>
440   - <param>
441   - <key>_coordinate</key>
442   - <value>(704, 536)</value>
443   - </param>
444   - <param>
445   - <key>gui_hint</key>
446   - <value>3, 3</value>
447   - </param>
448   - <param>
449   - <key>_rotation</key>
450   - <value>0</value>
451   - </param>
452   - <param>
453   - <key>id</key>
454   - <value>dds_offset</value>
455   - </param>
456   - <param>
457   - <key>label</key>
458   - <value>dds_offset</value>
459   - </param>
460   - <param>
461   - <key>min_len</key>
462   - <value>200</value>
463   - </param>
464   - <param>
465   - <key>orient</key>
466   - <value>Qt.Horizontal</value>
467   - </param>
468   - <param>
469   - <key>start</key>
470   - <value>-2**13</value>
471   - </param>
472   - <param>
473   - <key>step</key>
474   - <value>1</value>
475   - </param>
476   - <param>
477   - <key>stop</key>
478   - <value>2**13-1</value>
479   - </param>
480   - <param>
481   - <key>rangeType</key>
482   - <value>int</value>
483   - </param>
484   - <param>
485   - <key>widget</key>
486   - <value>counter_slider</value>
487   - </param>
488   - </block>
489   - <block>
490   - <key>variable_qtgui_push_button</key>
491   - <param>
492   - <key>comment</key>
493   - <value></value>
494   - </param>
495   - <param>
496   - <key>value</key>
497   - <value>0</value>
498   - </param>
499   - <param>
500   - <key>_enabled</key>
501   - <value>True</value>
502   - </param>
503   - <param>
504   - <key>_coordinate</key>
505   - <value>(392, 800)</value>
506   - </param>
507   - <param>
508   - <key>gui_hint</key>
509   - <value>4, 2</value>
510   - </param>
511   - <param>
512   - <key>_rotation</key>
513   - <value>0</value>
514   - </param>
515   - <param>
516   - <key>id</key>
517   - <value>pid_int_rst</value>
518   - </param>
519   - <param>
520   - <key>label</key>
521   - <value>pid_int_rst</value>
522   - </param>
523   - <param>
524   - <key>pressed</key>
525   - <value>1</value>
526   - </param>
527   - <param>
528   - <key>released</key>
529   - <value>0</value>
530   - </param>
531   - <param>
532   - <key>type</key>
533   - <value>int</value>
534   - </param>
535   - </block>
536   - <block>
537   - <key>variable_qtgui_range</key>
538   - <param>
539   - <key>comment</key>
540   - <value></value>
541   - </param>
542   - <param>
543   - <key>value</key>
544   - <value>0</value>
545   - </param>
546   - <param>
547   - <key>_enabled</key>
548   - <value>True</value>
549   - </param>
550   - <param>
551   - <key>_coordinate</key>
552   - <value>(192, 784)</value>
553   - </param>
554   - <param>
555   - <key>gui_hint</key>
556   - <value>4, 1</value>
557   - </param>
558   - <param>
559   - <key>_rotation</key>
560   - <value>0</value>
561   - </param>
562   - <param>
563   - <key>id</key>
564   - <value>pid_kd</value>
565   - </param>
566   - <param>
567   - <key>label</key>
568   - <value>pid_kd</value>
569   - </param>
570   - <param>
571   - <key>min_len</key>
572   - <value>200</value>
573   - </param>
574   - <param>
575   - <key>orient</key>
576   - <value>Qt.Horizontal</value>
577   - </param>
578   - <param>
579   - <key>start</key>
580   - <value>0</value>
581   - </param>
582   - <param>
583   - <key>step</key>
584   - <value>1</value>
585   - </param>
586   - <param>
587   - <key>stop</key>
588   - <value>2**14-1</value>
589   - </param>
590   - <param>
591   - <key>rangeType</key>
592   - <value>int</value>
593   - </param>
594   - <param>
595   - <key>widget</key>
596   - <value>counter_slider</value>
597   - </param>
598   - </block>
599   - <block>
600   - <key>variable_qtgui_range</key>
601   - <param>
602   - <key>comment</key>
603   - <value></value>
604   - </param>
605   - <param>
606   - <key>value</key>
607   - <value>0</value>
608   - </param>
609   - <param>
610   - <key>_enabled</key>
611   - <value>True</value>
612   - </param>
613   - <param>
614   - <key>_coordinate</key>
615   - <value>(192, 536)</value>
616   - </param>
617   - <param>
618   - <key>gui_hint</key>
619   - <value>3, 1</value>
620   - </param>
621   - <param>
622   - <key>_rotation</key>
623   - <value>0</value>
624   - </param>
625   - <param>
626   - <key>id</key>
627   - <value>pid_ki</value>
628   - </param>
629   - <param>
630   - <key>label</key>
631   - <value>pid_ki</value>
632   - </param>
633   - <param>
634   - <key>min_len</key>
635   - <value>200</value>
636   - </param>
637   - <param>
638   - <key>orient</key>
639   - <value>Qt.Horizontal</value>
640   - </param>
641   - <param>
642   - <key>start</key>
643   - <value>0</value>
644   - </param>
645   - <param>
646   - <key>step</key>
647   - <value>1</value>
648   - </param>
649   - <param>
650   - <key>stop</key>
651   - <value>2**14-1</value>
652   - </param>
653   - <param>
654   - <key>rangeType</key>
655   - <value>int</value>
656   - </param>
657   - <param>
658   - <key>widget</key>
659   - <value>counter_slider</value>
660   - </param>
661   - </block>
662   - <block>
663   - <key>variable_qtgui_range</key>
664   - <param>
665   - <key>comment</key>
666   - <value></value>
667   - </param>
668   - <param>
669   - <key>value</key>
670   - <value>0</value>
671   - </param>
672   - <param>
673   - <key>_enabled</key>
674   - <value>True</value>
675   - </param>
676   - <param>
677   - <key>_coordinate</key>
678   - <value>(200, 272)</value>
679   - </param>
680   - <param>
681   - <key>gui_hint</key>
682   - <value>2, 1</value>
683   - </param>
684   - <param>
685   - <key>_rotation</key>
686   - <value>0</value>
687   - </param>
688   - <param>
689   - <key>id</key>
690   - <value>pid_kp</value>
691   - </param>
692   - <param>
693   - <key>label</key>
694   - <value>pid_kp</value>
695   - </param>
696   - <param>
697   - <key>min_len</key>
698   - <value>200</value>
699   - </param>
700   - <param>
701   - <key>orient</key>
702   - <value>Qt.Horizontal</value>
703   - </param>
704   - <param>
705   - <key>start</key>
706   - <value>0</value>
707   - </param>
708   - <param>
709   - <key>step</key>
710   - <value>1</value>
711   - </param>
712   - <param>
713   - <key>stop</key>
714   - <value>2**14-1</value>
715   - </param>
716   - <param>
717   - <key>rangeType</key>
718   - <value>int</value>
719   - </param>
720   - <param>
721   - <key>widget</key>
722   - <value>counter_slider</value>
723   - </param>
724   - </block>
725   - <block>
726   - <key>variable_qtgui_check_box</key>
727   - <param>
728   - <key>comment</key>
729   - <value></value>
730   - </param>
731   - <param>
732   - <key>value</key>
733   - <value>0</value>
734   - </param>
735   - <param>
736   - <key>_enabled</key>
737   - <value>True</value>
738   - </param>
739   - <param>
740   - <key>false</key>
741   - <value>0</value>
742   - </param>
743   - <param>
744   - <key>_coordinate</key>
745   - <value>(400, 544)</value>
746   - </param>
747   - <param>
748   - <key>gui_hint</key>
749   - <value>3, 2</value>
750   - </param>
751   - <param>
752   - <key>_rotation</key>
753   - <value>0</value>
754   - </param>
755   - <param>
756   - <key>id</key>
757   - <value>pid_sign</value>
758   - </param>
759   - <param>
760   - <key>label</key>
761   - <value>pid_sign</value>
762   - </param>
763   - <param>
764   - <key>true</key>
765   - <value>1</value>
766   - </param>
767   - <param>
768   - <key>type</key>
769   - <value>int</value>
770   - </param>
771   - </block>
772   - <block>
773   - <key>variable_qtgui_range</key>
774   - <param>
775   - <key>comment</key>
776   - <value></value>
777   - </param>
778   - <param>
779   - <key>value</key>
780   - <value>0</value>
781   - </param>
782   - <param>
783   - <key>_enabled</key>
784   - <value>True</value>
785   - </param>
786   - <param>
787   - <key>_coordinate</key>
788   - <value>(400, 272)</value>
789   - </param>
790   - <param>
791   - <key>gui_hint</key>
792   - <value>2, 2</value>
793   - </param>
794   - <param>
795   - <key>_rotation</key>
796   - <value>0</value>
797   - </param>
798   - <param>
799   - <key>id</key>
800   - <value>pid_sp</value>
801   - </param>
802   - <param>
803   - <key>label</key>
804   - <value>pid_sp</value>
805   - </param>
806   - <param>
807   - <key>min_len</key>
808   - <value>200</value>
809   - </param>
810   - <param>
811   - <key>orient</key>
812   - <value>Qt.Horizontal</value>
813   - </param>
814   - <param>
815   - <key>start</key>
816   - <value>-2**13</value>
817   - </param>
818   - <param>
819   - <key>step</key>
820   - <value>1</value>
821   - </param>
822   - <param>
823   - <key>stop</key>
824   - <value>2**13-1</value>
825   - </param>
826   - <param>
827   - <key>rangeType</key>
828   - <value>int</value>
829   - </param>
830   - <param>
831   - <key>widget</key>
832   - <value>counter_slider</value>
833   - </param>
834   - </block>
835   - <block>
836   - <key>variable</key>
837   - <param>
838   - <key>comment</key>
839   - <value></value>
840   - </param>
841   - <param>
842   - <key>_enabled</key>
843   - <value>True</value>
844   - </param>
845   - <param>
846   - <key>_coordinate</key>
847   - <value>(8, 176)</value>
848   - </param>
849   - <param>
850   - <key>_rotation</key>
851   - <value>0</value>
852   - </param>
853   - <param>
854   - <key>id</key>
855   - <value>port</value>
856   - </param>
857   - <param>
858   - <key>value</key>
859   - <value>1001</value>
860   - </param>
861   - </block>
862   - <block>
863   - <key>add_const_set_offset</key>
864   - <param>
865   - <key>addr</key>
866   - <value>addr</value>
867   - </param>
868   - <param>
869   - <key>alias</key>
870   - <value></value>
871   - </param>
872   - <param>
873   - <key>comment</key>
874   - <value></value>
875   - </param>
876   - <param>
877   - <key>const</key>
878   - <value>adc1_offset</value>
879   - </param>
880   - <param>
881   - <key>device</key>
882   - <value>/dev/adc1_offset</value>
883   - </param>
884   - <param>
885   - <key>_enabled</key>
886   - <value>True</value>
887   - </param>
888   - <param>
889   - <key>_coordinate</key>
890   - <value>(200, 144)</value>
891   - </param>
892   - <param>
893   - <key>_rotation</key>
894   - <value>0</value>
895   - </param>
896   - <param>
897   - <key>id</key>
898   - <value>add_const_set_offset_0_0_0</value>
899   - </param>
900   - <param>
901   - <key>port</key>
902   - <value>port</value>
903   - </param>
904   - </block>
905   - <block>
906   - <key>add_const_set_offset</key>
907   - <param>
908   - <key>addr</key>
909   - <value>addr</value>
910   - </param>
911   - <param>
912   - <key>alias</key>
913   - <value></value>
914   - </param>
915   - <param>
916   - <key>comment</key>
917   - <value></value>
918   - </param>
919   - <param>
920   - <key>const</key>
921   - <value>dac1_offset</value>
922   - </param>
923   - <param>
924   - <key>device</key>
925   - <value>/dev/dac1_offset</value>
926   - </param>
927   - <param>
928   - <key>_enabled</key>
929   - <value>True</value>
930   - </param>
931   - <param>
932   - <key>_coordinate</key>
933   - <value>(384, 144)</value>
934   - </param>
935   - <param>
936   - <key>_rotation</key>
937   - <value>0</value>
938   - </param>
939   - <param>
940   - <key>id</key>
941   - <value>add_const_set_offset_0_0_0_0</value>
942   - </param>
943   - <param>
944   - <key>port</key>
945   - <value>port</value>
946   - </param>
947   - </block>
948   - <block>
949   - <key>add_const_set_offset</key>
950   - <param>
951   - <key>addr</key>
952   - <value>addr</value>
953   - </param>
954   - <param>
955   - <key>alias</key>
956   - <value></value>
957   - </param>
958   - <param>
959   - <key>comment</key>
960   - <value></value>
961   - </param>
962   - <param>
963   - <key>const</key>
964   - <value>dds_ampl</value>
965   - </param>
966   - <param>
967   - <key>device</key>
968   - <value>/dev/dds_ampl</value>
969   - </param>
970   - <param>
971   - <key>_enabled</key>
972   - <value>True</value>
973   - </param>
974   - <param>
975   - <key>_coordinate</key>
976   - <value>(688, 144)</value>
977   - </param>
978   - <param>
979   - <key>_rotation</key>
980   - <value>0</value>
981   - </param>
982   - <param>
983   - <key>id</key>
984   - <value>add_const_set_offset_0_0_0_0_0</value>
985   - </param>
986   - <param>
987   - <key>port</key>
988   - <value>port</value>
989   - </param>
990   - </block>
991   - <block>
992   - <key>add_const_set_offset</key>
993   - <param>
994   - <key>addr</key>
995   - <value>addr</value>
996   - </param>
997   - <param>
998   - <key>alias</key>
999   - <value></value>
1000   - </param>
1001   - <param>
1002   - <key>comment</key>
1003   - <value></value>
1004   - </param>
1005   - <param>
1006   - <key>const</key>
1007   - <value>dds_offset</value>
1008   - </param>
1009   - <param>
1010   - <key>device</key>
1011   - <value>/dev/dds_offset</value>
1012   - </param>
1013   - <param>
1014   - <key>_enabled</key>
1015   - <value>True</value>
1016   - </param>
1017   - <param>
1018   - <key>_coordinate</key>
1019   - <value>(688, 672)</value>
1020   - </param>
1021   - <param>
1022   - <key>_rotation</key>
1023   - <value>0</value>
1024   - </param>
1025   - <param>
1026   - <key>id</key>
1027   - <value>add_const_set_offset_0_0_0_0_1</value>
1028   - </param>
1029   - <param>
1030   - <key>port</key>
1031   - <value>port</value>
1032   - </param>
1033   - </block>
1034   - <block>
1035   - <key>add_const_set_offset</key>
1036   - <param>
1037   - <key>addr</key>
1038   - <value>addr</value>
1039   - </param>
1040   - <param>
1041   - <key>alias</key>
1042   - <value></value>
1043   - </param>
1044   - <param>
1045   - <key>comment</key>
1046   - <value></value>
1047   - </param>
1048   - <param>
1049   - <key>const</key>
1050   - <value>dds_f0</value>
1051   - </param>
1052   - <param>
1053   - <key>device</key>
1054   - <value>/dev/dds_f0</value>
1055   - </param>
1056   - <param>
1057   - <key>_enabled</key>
1058   - <value>True</value>
1059   - </param>
1060   - <param>
1061   - <key>_coordinate</key>
1062   - <value>(680, 920)</value>
1063   - </param>
1064   - <param>
1065   - <key>_rotation</key>
1066   - <value>0</value>
1067   - </param>
1068   - <param>
1069   - <key>id</key>
1070   - <value>add_const_set_offset_0_0_0_0_1_0</value>
1071   - </param>
1072   - <param>
1073   - <key>port</key>
1074   - <value>port</value>
1075   - </param>
1076   - </block>
1077   - <block>
1078   - <key>add_const_set_offset</key>
1079   - <param>
1080   - <key>addr</key>
1081   - <value>addr</value>
1082   - </param>
1083   - <param>
1084   - <key>alias</key>
1085   - <value></value>
1086   - </param>
1087   - <param>
1088   - <key>comment</key>
1089   - <value></value>
1090   - </param>
1091   - <param>
1092   - <key>const</key>
1093   - <value>pid_sp</value>
1094   - </param>
1095   - <param>
1096   - <key>device</key>
1097   - <value>/dev/pid_sp</value>
1098   - </param>
1099   - <param>
1100   - <key>_enabled</key>
1101   - <value>True</value>
1102   - </param>
1103   - <param>
1104   - <key>_coordinate</key>
1105   - <value>(384, 408)</value>
1106   - </param>
1107   - <param>
1108   - <key>_rotation</key>
1109   - <value>0</value>
1110   - </param>
1111   - <param>
1112   - <key>id</key>
1113   - <value>add_const_set_offset_0_0_0_1</value>
1114   - </param>
1115   - <param>
1116   - <key>port</key>
1117   - <value>port</value>
1118   - </param>
1119   - </block>
1120   - <block>
1121   - <key>add_const_set_offset</key>
1122   - <param>
1123   - <key>addr</key>
1124   - <value>addr</value>
1125   - </param>
1126   - <param>
1127   - <key>alias</key>
1128   - <value></value>
1129   - </param>
1130   - <param>
1131   - <key>comment</key>
1132   - <value></value>
1133   - </param>
1134   - <param>
1135   - <key>const</key>
1136   - <value>pid_kp</value>
1137   - </param>
1138   - <param>
1139   - <key>device</key>
1140   - <value>/dev/pid_kp</value>
1141   - </param>
1142   - <param>
1143   - <key>_enabled</key>
1144   - <value>True</value>
1145   - </param>
1146   - <param>
1147   - <key>_coordinate</key>
1148   - <value>(184, 408)</value>
1149   - </param>
1150   - <param>
1151   - <key>_rotation</key>
1152   - <value>0</value>
1153   - </param>
1154   - <param>
1155   - <key>id</key>
1156   - <value>add_const_set_offset_0_0_0_1_0</value>
1157   - </param>
1158   - <param>
1159   - <key>port</key>
1160   - <value>port</value>
1161   - </param>
1162   - </block>
1163   - <block>
1164   - <key>add_const_set_offset</key>
1165   - <param>
1166   - <key>addr</key>
1167   - <value>addr</value>
1168   - </param>
1169   - <param>
1170   - <key>alias</key>
1171   - <value></value>
1172   - </param>
1173   - <param>
1174   - <key>comment</key>
1175   - <value></value>
1176   - </param>
1177   - <param>
1178   - <key>const</key>
1179   - <value>pid_ki</value>
1180   - </param>
1181   - <param>
1182   - <key>device</key>
1183   - <value>/dev/pid_ki</value>
1184   - </param>
1185   - <param>
1186   - <key>_enabled</key>
1187   - <value>True</value>
1188   - </param>
1189   - <param>
1190   - <key>_coordinate</key>
1191   - <value>(176, 672)</value>
1192   - </param>
1193   - <param>
1194   - <key>_rotation</key>
1195   - <value>0</value>
1196   - </param>
1197   - <param>
1198   - <key>id</key>
1199   - <value>add_const_set_offset_0_0_0_1_0_0</value>
1200   - </param>
1201   - <param>
1202   - <key>port</key>
1203   - <value>port</value>
1204   - </param>
1205   - </block>
1206   - <block>
1207   - <key>add_const_set_offset</key>
1208   - <param>
1209   - <key>addr</key>
1210   - <value>addr</value>
1211   - </param>
1212   - <param>
1213   - <key>alias</key>
1214   - <value></value>
1215   - </param>
1216   - <param>
1217   - <key>comment</key>
1218   - <value></value>
1219   - </param>
1220   - <param>
1221   - <key>const</key>
1222   - <value>pid_kd</value>
1223   - </param>
1224   - <param>
1225   - <key>device</key>
1226   - <value>/dev/pid_kd</value>
1227   - </param>
1228   - <param>
1229   - <key>_enabled</key>
1230   - <value>True</value>
1231   - </param>
1232   - <param>
1233   - <key>_coordinate</key>
1234   - <value>(176, 920)</value>
1235   - </param>
1236   - <param>
1237   - <key>_rotation</key>
1238   - <value>0</value>
1239   - </param>
1240   - <param>
1241   - <key>id</key>
1242   - <value>add_const_set_offset_0_0_0_1_0_0_0</value>
1243   - </param>
1244   - <param>
1245   - <key>port</key>
1246   - <value>port</value>
1247   - </param>
1248   - </block>
1249   - <block>
1250   - <key>add_const_set_offset</key>
1251   - <param>
1252   - <key>addr</key>
1253   - <value>addr</value>
1254   - </param>
1255   - <param>
1256   - <key>alias</key>
1257   - <value></value>
1258   - </param>
1259   - <param>
1260   - <key>comment</key>
1261   - <value></value>
1262   - </param>
1263   - <param>
1264   - <key>const</key>
1265   - <value>pid_sign</value>
1266   - </param>
1267   - <param>
1268   - <key>device</key>
1269   - <value>/dev/pid_sign</value>
1270   - </param>
1271   - <param>
1272   - <key>_enabled</key>
1273   - <value>True</value>
1274   - </param>
1275   - <param>
1276   - <key>_coordinate</key>
1277   - <value>(392, 672)</value>
1278   - </param>
1279   - <param>
1280   - <key>_rotation</key>
1281   - <value>0</value>
1282   - </param>
1283   - <param>
1284   - <key>id</key>
1285   - <value>add_const_set_offset_0_0_0_1_0_0_0_0</value>
1286   - </param>
1287   - <param>
1288   - <key>port</key>
1289   - <value>port</value>
1290   - </param>
1291   - </block>
1292   - <block>
1293   - <key>add_const_set_offset</key>
1294   - <param>
1295   - <key>addr</key>
1296   - <value>addr</value>
1297   - </param>
1298   - <param>
1299   - <key>alias</key>
1300   - <value></value>
1301   - </param>
1302   - <param>
1303   - <key>comment</key>
1304   - <value></value>
1305   - </param>
1306   - <param>
1307   - <key>const</key>
1308   - <value>pid_int_rst</value>
1309   - </param>
1310   - <param>
1311   - <key>device</key>
1312   - <value>/dev/pid_int_rst</value>
1313   - </param>
1314   - <param>
1315   - <key>_enabled</key>
1316   - <value>True</value>
1317   - </param>
1318   - <param>
1319   - <key>_coordinate</key>
1320   - <value>(392, 920)</value>
1321   - </param>
1322   - <param>
1323   - <key>_rotation</key>
1324   - <value>0</value>
1325   - </param>
1326   - <param>
1327   - <key>id</key>
1328   - <value>add_const_set_offset_0_0_0_1_0_0_0_0_0</value>
1329   - </param>
1330   - <param>
1331   - <key>port</key>
1332   - <value>port</value>
1333   - </param>
1334   - </block>
1335   - <block>
1336   - <key>nco_counter_send_conf</key>
1337   - <param>
1338   - <key>acc_size</key>
1339   - <value>28</value>
1340   - </param>
1341   - <param>
1342   - <key>addr</key>
1343   - <value>addr</value>
1344   - </param>
1345   - <param>
1346   - <key>alias</key>
1347   - <value></value>
1348   - </param>
1349   - <param>
1350   - <key>comment</key>
1351   - <value></value>
1352   - </param>
1353   - <param>
1354   - <key>device</key>
1355   - <value>/dev/dds_nco</value>
1356   - </param>
1357   - <param>
1358   - <key>_enabled</key>
1359   - <value>True</value>
1360   - </param>
1361   - <param>
1362   - <key>freq_dds</key>
1363   - <value>dds_nco</value>
1364   - </param>
1365   - <param>
1366   - <key>freq_ref</key>
1367   - <value>125000000</value>
1368   - </param>
1369   - <param>
1370   - <key>_coordinate</key>
1371   - <value>(672, 384)</value>
1372   - </param>
1373   - <param>
1374   - <key>_rotation</key>
1375   - <value>0</value>
1376   - </param>
1377   - <param>
1378   - <key>id</key>
1379   - <value>nco_counter_send_conf_0</value>
1380   - </param>
1381   - <param>
1382   - <key>offset</key>
1383   - <value>0</value>
1384   - </param>
1385   - <param>
1386   - <key>port</key>
1387   - <value>port</value>
1388   - </param>
1389   - </block>
1390   -</flow_graph>
redpitaya/client/pid_dds.py
1   -#!/usr/bin/env python2
2   -# -*- coding: utf-8 -*-
3   -##################################################
4   -# GNU Radio Python Flow Graph
5   -# Title: Pid Dds
6   -# Generated: Fri Mar 31 15:49:11 2017
7   -##################################################
8   -
9   -if __name__ == '__main__':
10   - import ctypes
11   - import sys
12   - if sys.platform.startswith('linux'):
13   - try:
14   - x11 = ctypes.cdll.LoadLibrary('libX11.so')
15   - x11.XInitThreads()
16   - except:
17   - print "Warning: failed to XInitThreads()"
18   -
19   -from PyQt4 import Qt
20   -from gnuradio import eng_notation
21   -from gnuradio import gr
22   -from gnuradio.eng_option import eng_option
23   -from gnuradio.filter import firdes
24   -from gnuradio.qtgui import Range, RangeWidget
25   -from optparse import OptionParser
26   -import redpitaya_gnuradio
27   -import sys
28   -
29   -
30   -class pid_dds(gr.top_block, Qt.QWidget):
31   -
32   - def __init__(self):
33   - gr.top_block.__init__(self, "Pid Dds")
34   - Qt.QWidget.__init__(self)
35   - self.setWindowTitle("Pid Dds")
36   - try:
37   - self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
38   - except:
39   - pass
40   - self.top_scroll_layout = Qt.QVBoxLayout()
41   - self.setLayout(self.top_scroll_layout)
42   - self.top_scroll = Qt.QScrollArea()
43   - self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
44   - self.top_scroll_layout.addWidget(self.top_scroll)
45   - self.top_scroll.setWidgetResizable(True)
46   - self.top_widget = Qt.QWidget()
47   - self.top_scroll.setWidget(self.top_widget)
48   - self.top_layout = Qt.QVBoxLayout(self.top_widget)
49   - self.top_grid_layout = Qt.QGridLayout()
50   - self.top_layout.addLayout(self.top_grid_layout)
51   -
52   - self.settings = Qt.QSettings("GNU Radio", "pid_dds")
53   - self.restoreGeometry(self.settings.value("geometry").toByteArray())
54   -
55   - ##################################################
56   - # Variables
57   - ##################################################
58   - self.port = port = 1001
59   - self.pid_sp = pid_sp = 0
60   - self.pid_sign = pid_sign = 0
61   - self.pid_kp = pid_kp = 0
62   - self.pid_ki = pid_ki = 0
63   - self.pid_kd = pid_kd = 0
64   - self.pid_int_rst = pid_int_rst = 0
65   - self.dds_offset = dds_offset = 0
66   - self.dds_nco = dds_nco = 0
67   - self.dds_f0 = dds_f0 = 0
68   - self.dds_ampl = dds_ampl = 0
69   - self.dac1_offset = dac1_offset = 0
70   - self.addr = addr = "192.168.0.202"
71   - self.adc1_offset = adc1_offset = 0
72   -
73   - ##################################################
74   - # Blocks
75   - ##################################################
76   - self._pid_sp_range = Range(-2**13, 2**13-1, 1, 0, 200)
77   - self._pid_sp_win = RangeWidget(self._pid_sp_range, self.set_pid_sp, 'pid_sp', "counter_slider", int)
78   - self.top_grid_layout.addWidget(self._pid_sp_win, 2, 2)
79   - _pid_sign_check_box = Qt.QCheckBox('pid_sign')
80   - self._pid_sign_choices = {True: 1, False: 0}
81   - self._pid_sign_choices_inv = dict((v,k) for k,v in self._pid_sign_choices.iteritems())
82   - self._pid_sign_callback = lambda i: Qt.QMetaObject.invokeMethod(_pid_sign_check_box, "setChecked", Qt.Q_ARG("bool", self._pid_sign_choices_inv[i]))
83   - self._pid_sign_callback(self.pid_sign)
84   - _pid_sign_check_box.stateChanged.connect(lambda i: self.set_pid_sign(self._pid_sign_choices[bool(i)]))
85   - self.top_grid_layout.addWidget(_pid_sign_check_box, 3, 2)
86   - self._pid_kp_range = Range(0, 2**14-1, 1, 0, 200)
87   - self._pid_kp_win = RangeWidget(self._pid_kp_range, self.set_pid_kp, 'pid_kp', "counter_slider", int)
88   - self.top_grid_layout.addWidget(self._pid_kp_win, 2, 1)
89   - self._pid_ki_range = Range(0, 2**14-1, 1, 0, 200)
90   - self._pid_ki_win = RangeWidget(self._pid_ki_range, self.set_pid_ki, 'pid_ki', "counter_slider", int)
91   - self.top_grid_layout.addWidget(self._pid_ki_win, 3, 1)
92   - self._pid_kd_range = Range(0, 2**14-1, 1, 0, 200)
93   - self._pid_kd_win = RangeWidget(self._pid_kd_range, self.set_pid_kd, 'pid_kd', "counter_slider", int)
94   - self.top_grid_layout.addWidget(self._pid_kd_win, 4, 1)
95   - _pid_int_rst_push_button = Qt.QPushButton('pid_int_rst')
96   - self._pid_int_rst_choices = {'Pressed': 1, 'Released': 0}
97   - _pid_int_rst_push_button.pressed.connect(lambda: self.set_pid_int_rst(self._pid_int_rst_choices['Pressed']))
98   - _pid_int_rst_push_button.released.connect(lambda: self.set_pid_int_rst(self._pid_int_rst_choices['Released']))
99   - self.top_grid_layout.addWidget(_pid_int_rst_push_button, 4, 2)
100   - self._dds_offset_range = Range(-2**13, 2**13-1, 1, 0, 200)
101   - self._dds_offset_win = RangeWidget(self._dds_offset_range, self.set_dds_offset, 'dds_offset', "counter_slider", int)
102   - self.top_grid_layout.addWidget(self._dds_offset_win, 3, 3)
103   - self._dds_nco_range = Range(0, 60000000, 1, 0, 200)
104   - self._dds_nco_win = RangeWidget(self._dds_nco_range, self.set_dds_nco, 'dds_nco', "counter_slider", int)
105   - self.top_grid_layout.addWidget(self._dds_nco_win, 2, 3)
106   - self._dds_f0_range = Range(0, 2**14-1, 1, 0, 200)
107   - self._dds_f0_win = RangeWidget(self._dds_f0_range, self.set_dds_f0, 'dds_f0', "counter_slider", int)
108   - self.top_grid_layout.addWidget(self._dds_f0_win, 4, 3)
109   - self._dds_ampl_range = Range(0, 2**14-1, 1, 0, 200)
110   - self._dds_ampl_win = RangeWidget(self._dds_ampl_range, self.set_dds_ampl, 'dds_ampl', "counter_slider", int)
111   - self.top_grid_layout.addWidget(self._dds_ampl_win, 1, 3)
112   - self._dac1_offset_range = Range(-2**13, 2**13-1, 1, 0, 200)
113   - self._dac1_offset_win = RangeWidget(self._dac1_offset_range, self.set_dac1_offset, 'dac1_offset', "counter_slider", int)
114   - self.top_grid_layout.addWidget(self._dac1_offset_win, 1, 2)
115   - self._adc1_offset_range = Range(-2**13, 2**13-1, 1, 0, 200)
116   - self._adc1_offset_win = RangeWidget(self._adc1_offset_range, self.set_adc1_offset, 'adc1_offset', "counter_slider", int)
117   - self.top_grid_layout.addWidget(self._adc1_offset_win, 1, 1)
118   - self.nco_counter_send_conf_0 = redpitaya_gnuradio.nco_counter_send_conf(
119   - addr=addr,
120   - port=port,
121   - device='/dev/dds_nco',
122   - freq_ref=125000000,
123   - freq_dds=dds_nco,
124   - acc_size=28,
125   - offset=0,
126   - )
127   -
128   - self.add_const_set_offset_0_0_0_1_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
129   - addr=addr,
130   - port=port,
131   - device='/dev/pid_int_rst',
132   - const=pid_int_rst,
133   - )
134   -
135   - self.add_const_set_offset_0_0_0_1_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
136   - addr=addr,
137   - port=port,
138   - device='/dev/pid_sign',
139   - const=pid_sign,
140   - )
141   -
142   - self.add_const_set_offset_0_0_0_1_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
143   - addr=addr,
144   - port=port,
145   - device='/dev/pid_kd',
146   - const=pid_kd,
147   - )
148   -
149   - self.add_const_set_offset_0_0_0_1_0_0 = redpitaya_gnuradio.add_const_set_offset(
150   - addr=addr,
151   - port=port,
152   - device='/dev/pid_ki',
153   - const=pid_ki,
154   - )
155   -
156   - self.add_const_set_offset_0_0_0_1_0 = redpitaya_gnuradio.add_const_set_offset(
157   - addr=addr,
158   - port=port,
159   - device='/dev/pid_kp',
160   - const=pid_kp,
161   - )
162   -
163   - self.add_const_set_offset_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset(
164   - addr=addr,
165   - port=port,
166   - device='/dev/pid_sp',
167   - const=pid_sp,
168   - )
169   -
170   - self.add_const_set_offset_0_0_0_0_1_0 = redpitaya_gnuradio.add_const_set_offset(
171   - addr=addr,
172   - port=port,
173   - device='/dev/dds_f0',
174   - const=dds_f0,
175   - )
176   -
177   - self.add_const_set_offset_0_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset(
178   - addr=addr,
179   - port=port,
180   - device='/dev/dds_offset',
181   - const=dds_offset,
182   - )
183   -
184   - self.add_const_set_offset_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
185   - addr=addr,
186   - port=port,
187   - device='/dev/dds_ampl',
188   - const=dds_ampl,
189   - )
190   -
191   - self.add_const_set_offset_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
192   - addr=addr,
193   - port=port,
194   - device='/dev/dac1_offset',
195   - const=dac1_offset,
196   - )
197   -
198   - self.add_const_set_offset_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
199   - addr=addr,
200   - port=port,
201   - device='/dev/adc1_offset',
202   - const=adc1_offset,
203   - )
204   -
205   -
206   - def closeEvent(self, event):
207   - self.settings = Qt.QSettings("GNU Radio", "pid_dds")
208   - self.settings.setValue("geometry", self.saveGeometry())
209   - event.accept()
210   -
211   - def get_port(self):
212   - return self.port
213   -
214   - def set_port(self, port):
215   - self.port = port
216   -
217   - def get_pid_sp(self):
218   - return self.pid_sp
219   -
220   - def set_pid_sp(self, pid_sp):
221   - self.pid_sp = pid_sp
222   - self.add_const_set_offset_0_0_0_1.set_const(device='/dev/pid_sp', const=self.pid_sp)
223   -
224   - def get_pid_sign(self):
225   - return self.pid_sign
226   -
227   - def set_pid_sign(self, pid_sign):
228   - self.pid_sign = pid_sign
229   - self._pid_sign_callback(self.pid_sign)
230   - self.add_const_set_offset_0_0_0_1_0_0_0_0.set_const(device='/dev/pid_sign', const=self.pid_sign)
231   -
232   - def get_pid_kp(self):
233   - return self.pid_kp
234   -
235   - def set_pid_kp(self, pid_kp):
236   - self.pid_kp = pid_kp
237   - self.add_const_set_offset_0_0_0_1_0.set_const(device='/dev/pid_kp', const=self.pid_kp)
238   -
239   - def get_pid_ki(self):
240   - return self.pid_ki
241   -
242   - def set_pid_ki(self, pid_ki):
243   - self.pid_ki = pid_ki
244   - self.add_const_set_offset_0_0_0_1_0_0.set_const(device='/dev/pid_ki', const=self.pid_ki)
245   -
246   - def get_pid_kd(self):
247   - return self.pid_kd
248   -
249   - def set_pid_kd(self, pid_kd):
250   - self.pid_kd = pid_kd
251   - self.add_const_set_offset_0_0_0_1_0_0_0.set_const(device='/dev/pid_kd', const=self.pid_kd)
252   -
253   - def get_pid_int_rst(self):
254   - return self.pid_int_rst
255   -
256   - def set_pid_int_rst(self, pid_int_rst):
257   - self.pid_int_rst = pid_int_rst
258   - self.add_const_set_offset_0_0_0_1_0_0_0_0_0.set_const(device='/dev/pid_int_rst', const=self.pid_int_rst)
259   -
260   - def get_dds_offset(self):
261   - return self.dds_offset
262   -
263   - def set_dds_offset(self, dds_offset):
264   - self.dds_offset = dds_offset
265   - self.add_const_set_offset_0_0_0_0_1.set_const(device='/dev/dds_offset', const=self.dds_offset)
266   -
267   - def get_dds_nco(self):
268   - return self.dds_nco
269   -
270   - def set_dds_nco(self, dds_nco):
271   - self.dds_nco = dds_nco
272   - self.nco_counter_send_conf_0.set_nco(device='/dev/dds_nco', freq_ref=125000000, freq_dds=self.dds_nco, acc_size=28, offset=0)
273   -
274   - def get_dds_f0(self):
275   - return self.dds_f0
276   -
277   - def set_dds_f0(self, dds_f0):
278   - self.dds_f0 = dds_f0
279   - self.add_const_set_offset_0_0_0_0_1_0.set_const(device='/dev/dds_f0', const=self.dds_f0)
280   -
281   - def get_dds_ampl(self):
282   - return self.dds_ampl
283   -
284   - def set_dds_ampl(self, dds_ampl):
285   - self.dds_ampl = dds_ampl
286   - self.add_const_set_offset_0_0_0_0_0.set_const(device='/dev/dds_ampl', const=self.dds_ampl)
287   -
288   - def get_dac1_offset(self):
289   - return self.dac1_offset
290   -
291   - def set_dac1_offset(self, dac1_offset):
292   - self.dac1_offset = dac1_offset
293   - self.add_const_set_offset_0_0_0_0.set_const(device='/dev/dac1_offset', const=self.dac1_offset)
294   -
295   - def get_addr(self):
296   - return self.addr
297   -
298   - def set_addr(self, addr):
299   - self.addr = addr
300   -
301   - def get_adc1_offset(self):
302   - return self.adc1_offset
303   -
304   - def set_adc1_offset(self, adc1_offset):
305   - self.adc1_offset = adc1_offset
306   - self.add_const_set_offset_0_0_0.set_const(device='/dev/adc1_offset', const=self.adc1_offset)
307   -
308   -
309   -def main(top_block_cls=pid_dds, options=None):
310   -
311   - from distutils.version import StrictVersion
312   - if StrictVersion(Qt.qVersion()) >= StrictVersion("4.5.0"):
313   - style = gr.prefs().get_string('qtgui', 'style', 'raster')
314   - Qt.QApplication.setGraphicsSystem(style)
315   - qapp = Qt.QApplication(sys.argv)
316   -
317   - tb = top_block_cls()
318   - tb.start()
319   - tb.show()
320   -
321   - def quitting():
322   - tb.stop()
323   - tb.wait()
324   - qapp.connect(qapp, Qt.SIGNAL("aboutToQuit()"), quitting)
325   - qapp.exec_()
326   -
327   -
328   -if __name__ == '__main__':
329   - main()
redpitaya/client/pid_vco.grc
Diff suppressed. Click to show
  1 +<?xml version='1.0' encoding='utf-8'?>
  2 +<?grc format='1' created='3.7.10'?>
  3 +<flow_graph>
  4 + <timestamp>Thu Feb 2 22:54:58 2017</timestamp>
  5 + <block>
  6 + <key>options</key>
  7 + <param>
  8 + <key>author</key>
  9 + <value></value>
  10 + </param>
  11 + <param>
  12 + <key>window_size</key>
  13 + <value></value>
  14 + </param>
  15 + <param>
  16 + <key>category</key>
  17 + <value>[GRC Hier Blocks]</value>
  18 + </param>
  19 + <param>
  20 + <key>comment</key>
  21 + <value></value>
  22 + </param>
  23 + <param>
  24 + <key>description</key>
  25 + <value></value>
  26 + </param>
  27 + <param>
  28 + <key>_enabled</key>
  29 + <value>True</value>
  30 + </param>
  31 + <param>
  32 + <key>_coordinate</key>
  33 + <value>(8, 8)</value>
  34 + </param>
  35 + <param>
  36 + <key>_rotation</key>
  37 + <value>0</value>
  38 + </param>
  39 + <param>
  40 + <key>generate_options</key>
  41 + <value>qt_gui</value>
  42 + </param>
  43 + <param>
  44 + <key>hier_block_src_path</key>
  45 + <value>.:</value>
  46 + </param>
  47 + <param>
  48 + <key>id</key>
  49 + <value>pid_vco</value>
  50 + </param>
  51 + <param>
  52 + <key>max_nouts</key>
  53 + <value>0</value>
  54 + </param>
  55 + <param>
  56 + <key>qt_qss_theme</key>
  57 + <value></value>
  58 + </param>
  59 + <param>
  60 + <key>realtime_scheduling</key>
  61 + <value></value>
  62 + </param>
  63 + <param>
  64 + <key>run_command</key>
  65 + <value>{python} -u {filename}</value>
  66 + </param>
  67 + <param>
  68 + <key>run_options</key>
  69 + <value>prompt</value>
  70 + </param>
  71 + <param>
  72 + <key>run</key>
  73 + <value>True</value>
  74 + </param>
  75 + <param>
  76 + <key>thread_safe_setters</key>
  77 + <value></value>
  78 + </param>
  79 + <param>
  80 + <key>title</key>
  81 + <value></value>
  82 + </param>
  83 + </block>
  84 + <block>
  85 + <key>variable_qtgui_range</key>
  86 + <param>
  87 + <key>comment</key>
  88 + <value></value>
  89 + </param>
  90 + <param>
  91 + <key>value</key>
  92 + <value>0</value>
  93 + </param>
  94 + <param>
  95 + <key>_enabled</key>
  96 + <value>True</value>
  97 + </param>
  98 + <param>
  99 + <key>_coordinate</key>
  100 + <value>(216, 8)</value>
  101 + </param>
  102 + <param>
  103 + <key>gui_hint</key>
  104 + <value>1, 1</value>
  105 + </param>
  106 + <param>
  107 + <key>_rotation</key>
  108 + <value>0</value>
  109 + </param>
  110 + <param>
  111 + <key>id</key>
  112 + <value>adc1_offset</value>
  113 + </param>
  114 + <param>
  115 + <key>label</key>
  116 + <value>adc1_offset</value>
  117 + </param>
  118 + <param>
  119 + <key>min_len</key>
  120 + <value>200</value>
  121 + </param>
  122 + <param>
  123 + <key>orient</key>
  124 + <value>Qt.Horizontal</value>
  125 + </param>
  126 + <param>
  127 + <key>start</key>
  128 + <value>-2**13</value>
  129 + </param>
  130 + <param>
  131 + <key>step</key>
  132 + <value>1</value>
  133 + </param>
  134 + <param>
  135 + <key>stop</key>
  136 + <value>2**13-1</value>
  137 + </param>
  138 + <param>
  139 + <key>rangeType</key>
  140 + <value>int</value>
  141 + </param>
  142 + <param>
  143 + <key>widget</key>
  144 + <value>counter_slider</value>
  145 + </param>
  146 + </block>
  147 + <block>
  148 + <key>variable</key>
  149 + <param>
  150 + <key>comment</key>
  151 + <value></value>
  152 + </param>
  153 + <param>
  154 + <key>_enabled</key>
  155 + <value>True</value>
  156 + </param>
  157 + <param>
  158 + <key>_coordinate</key>
  159 + <value>(8, 104)</value>
  160 + </param>
  161 + <param>
  162 + <key>_rotation</key>
  163 + <value>0</value>
  164 + </param>
  165 + <param>
  166 + <key>id</key>
  167 + <value>addr</value>
  168 + </param>
  169 + <param>
  170 + <key>value</key>
  171 + <value>"192.168.0.203"</value>
  172 + </param>
  173 + </block>
  174 + <block>
  175 + <key>variable_qtgui_range</key>
  176 + <param>
  177 + <key>comment</key>
  178 + <value></value>
  179 + </param>
  180 + <param>
  181 + <key>value</key>
  182 + <value>0</value>
  183 + </param>
  184 + <param>
  185 + <key>_enabled</key>
  186 + <value>True</value>
  187 + </param>
  188 + <param>
  189 + <key>_coordinate</key>
  190 + <value>(400, 8)</value>
  191 + </param>
  192 + <param>
  193 + <key>gui_hint</key>
  194 + <value>1, 2</value>
  195 + </param>
  196 + <param>
  197 + <key>_rotation</key>
  198 + <value>0</value>
  199 + </param>
  200 + <param>
  201 + <key>id</key>
  202 + <value>dac1_offset</value>
  203 + </param>
  204 + <param>
  205 + <key>label</key>
  206 + <value>dac1_offset</value>
  207 + </param>
  208 + <param>
  209 + <key>min_len</key>
  210 + <value>200</value>
  211 + </param>
  212 + <param>
  213 + <key>orient</key>
  214 + <value>Qt.Horizontal</value>
  215 + </param>
  216 + <param>
  217 + <key>start</key>
  218 + <value>-2**13</value>
  219 + </param>
  220 + <param>
  221 + <key>step</key>
  222 + <value>1</value>
  223 + </param>
  224 + <param>
  225 + <key>stop</key>
  226 + <value>2**13-1</value>
  227 + </param>
  228 + <param>
  229 + <key>rangeType</key>
  230 + <value>int</value>
  231 + </param>
  232 + <param>
  233 + <key>widget</key>
  234 + <value>counter_slider</value>
  235 + </param>
  236 + </block>
  237 + <block>
  238 + <key>variable_qtgui_range</key>
  239 + <param>
  240 + <key>comment</key>
  241 + <value></value>
  242 + </param>
  243 + <param>
  244 + <key>value</key>
  245 + <value>0</value>
  246 + </param>
  247 + <param>
  248 + <key>_enabled</key>
  249 + <value>True</value>
  250 + </param>
  251 + <param>
  252 + <key>_coordinate</key>
  253 + <value>(704, 8)</value>
  254 + </param>
  255 + <param>
  256 + <key>gui_hint</key>
  257 + <value>1, 3</value>
  258 + </param>
  259 + <param>
  260 + <key>_rotation</key>
  261 + <value>0</value>
  262 + </param>
  263 + <param>
  264 + <key>id</key>
  265 + <value>dds_ampl</value>
  266 + </param>
  267 + <param>
  268 + <key>label</key>
  269 + <value>dds_ampl</value>
  270 + </param>
  271 + <param>
  272 + <key>min_len</key>
  273 + <value>200</value>
  274 + </param>
  275 + <param>
  276 + <key>orient</key>
  277 + <value>Qt.Horizontal</value>
  278 + </param>
  279 + <param>
  280 + <key>start</key>
  281 + <value>0</value>
  282 + </param>
  283 + <param>
  284 + <key>step</key>
  285 + <value>1</value>
  286 + </param>
  287 + <param>
  288 + <key>stop</key>
  289 + <value>2**13-1</value>
  290 + </param>
  291 + <param>
  292 + <key>rangeType</key>
  293 + <value>int</value>
  294 + </param>
  295 + <param>
  296 + <key>widget</key>
  297 + <value>counter_slider</value>
  298 + </param>
  299 + </block>
  300 + <block>
  301 + <key>variable_qtgui_range</key>
  302 + <param>
  303 + <key>comment</key>
  304 + <value></value>
  305 + </param>
  306 + <param>
  307 + <key>value</key>
  308 + <value>0</value>
  309 + </param>
  310 + <param>
  311 + <key>_enabled</key>
  312 + <value>True</value>
  313 + </param>
  314 + <param>
  315 + <key>_coordinate</key>
  316 + <value>(696, 668)</value>
  317 + </param>
  318 + <param>
  319 + <key>gui_hint</key>
  320 + <value>4, 3</value>
  321 + </param>
  322 + <param>
  323 + <key>_rotation</key>
  324 + <value>0</value>
  325 + </param>
  326 + <param>
  327 + <key>id</key>
  328 + <value>dds_f0</value>
  329 + </param>
  330 + <param>
  331 + <key>label</key>
  332 + <value>dds_f0</value>
  333 + </param>
  334 + <param>
  335 + <key>min_len</key>
  336 + <value>200</value>
  337 + </param>
  338 + <param>
  339 + <key>orient</key>
  340 + <value>Qt.Horizontal</value>
  341 + </param>
  342 + <param>
  343 + <key>start</key>
  344 + <value>0</value>
  345 + </param>
  346 + <param>
  347 + <key>step</key>
  348 + <value>1</value>
  349 + </param>
  350 + <param>
  351 + <key>stop</key>
  352 + <value>60000000</value>
  353 + </param>
  354 + <param>
  355 + <key>rangeType</key>
  356 + <value>int</value>
  357 + </param>
  358 + <param>
  359 + <key>widget</key>
  360 + <value>counter_slider</value>
  361 + </param>
  362 + </block>
  363 + <block>
  364 + <key>variable_qtgui_range</key>
  365 + <param>
  366 + <key>comment</key>
  367 + <value></value>
  368 + </param>
  369 + <param>
  370 + <key>value</key>
  371 + <value>0</value>
  372 + </param>
  373 + <param>
  374 + <key>_enabled</key>
  375 + <value>True</value>
  376 + </param>
  377 + <param>
  378 + <key>_coordinate</key>
  379 + <value>(696, 236)</value>
  380 + </param>
  381 + <param>
  382 + <key>gui_hint</key>
  383 + <value>2, 3</value>
  384 + </param>
  385 + <param>
  386 + <key>_rotation</key>
  387 + <value>0</value>
  388 + </param>
  389 + <param>
  390 + <key>id</key>
  391 + <value>dds_nco</value>
  392 + </param>
  393 + <param>
  394 + <key>label</key>
  395 + <value>dds_nco</value>
  396 + </param>
  397 + <param>
  398 + <key>min_len</key>
  399 + <value>200</value>
  400 + </param>
  401 + <param>
  402 + <key>orient</key>
  403 + <value>Qt.Horizontal</value>
  404 + </param>
  405 + <param>
  406 + <key>start</key>
  407 + <value>0</value>
  408 + </param>
  409 + <param>
  410 + <key>step</key>
  411 + <value>1</value>
  412 + </param>
  413 + <param>
  414 + <key>stop</key>
  415 + <value>60000000</value>
  416 + </param>
  417 + <param>
  418 + <key>rangeType</key>
  419 + <value>int</value>
  420 + </param>
  421 + <param>
  422 + <key>widget</key>
  423 + <value>counter_slider</value>
  424 + </param>
  425 + </block>
  426 + <block>
  427 + <key>variable_qtgui_range</key>
  428 + <param>
  429 + <key>comment</key>
  430 + <value></value>
  431 + </param>
  432 + <param>
  433 + <key>value</key>
  434 + <value>0</value>
  435 + </param>
  436 + <param>
  437 + <key>_enabled</key>
  438 + <value>True</value>
  439 + </param>
  440 + <param>
  441 + <key>_coordinate</key>
  442 + <value>(704, 460)</value>
  443 + </param>
  444 + <param>
  445 + <key>gui_hint</key>
  446 + <value>3, 3</value>
  447 + </param>
  448 + <param>
  449 + <key>_rotation</key>
  450 + <value>0</value>
  451 + </param>
  452 + <param>
  453 + <key>id</key>
  454 + <value>dds_offset</value>
  455 + </param>
  456 + <param>
  457 + <key>label</key>
  458 + <value>dds_offset</value>
  459 + </param>
  460 + <param>
  461 + <key>min_len</key>
  462 + <value>200</value>
  463 + </param>
  464 + <param>
  465 + <key>orient</key>
  466 + <value>Qt.Horizontal</value>
  467 + </param>
  468 + <param>
  469 + <key>start</key>
  470 + <value>-2**13</value>
  471 + </param>
  472 + <param>
  473 + <key>step</key>
  474 + <value>1</value>
  475 + </param>
  476 + <param>
  477 + <key>stop</key>
  478 + <value>2**13-1</value>
  479 + </param>
  480 + <param>
  481 + <key>rangeType</key>
  482 + <value>int</value>
  483 + </param>
  484 + <param>
  485 + <key>widget</key>
  486 + <value>counter_slider</value>
  487 + </param>
  488 + </block>
  489 + <block>
  490 + <key>variable_qtgui_range</key>
  491 + <param>
  492 + <key>comment</key>
  493 + <value></value>
  494 + </param>
  495 + <param>
  496 + <key>value</key>
  497 + <value>0</value>
  498 + </param>
  499 + <param>
  500 + <key>_enabled</key>
  501 + <value>True</value>
  502 + </param>
  503 + <param>
  504 + <key>_coordinate</key>
  505 + <value>(672, 868)</value>
  506 + </param>
  507 + <param>
  508 + <key>gui_hint</key>
  509 + <value>5, 3</value>
  510 + </param>
  511 + <param>
  512 + <key>_rotation</key>
  513 + <value>0</value>
  514 + </param>
  515 + <param>
  516 + <key>id</key>
  517 + <value>dds_range</value>
  518 + </param>
  519 + <param>
  520 + <key>label</key>
  521 + <value>dds_range</value>
  522 + </param>
  523 + <param>
  524 + <key>min_len</key>
  525 + <value>200</value>
  526 + </param>
  527 + <param>
  528 + <key>orient</key>
  529 + <value>Qt.Horizontal</value>
  530 + </param>
  531 + <param>
  532 + <key>start</key>
  533 + <value>-2**13</value>
  534 + </param>
  535 + <param>
  536 + <key>step</key>
  537 + <value>1</value>
  538 + </param>
  539 + <param>
  540 + <key>stop</key>
  541 + <value>2**13-1</value>
  542 + </param>
  543 + <param>
  544 + <key>rangeType</key>
  545 + <value>int</value>
  546 + </param>
  547 + <param>
  548 + <key>widget</key>
  549 + <value>counter_slider</value>
  550 + </param>
  551 + </block>
  552 + <block>
  553 + <key>variable_qtgui_range</key>
  554 + <param>
  555 + <key>comment</key>
  556 + <value></value>
  557 + </param>
  558 + <param>
  559 + <key>value</key>
  560 + <value>0</value>
  561 + </param>
  562 + <param>
  563 + <key>_enabled</key>
  564 + <value>True</value>
  565 + </param>
  566 + <param>
  567 + <key>_coordinate</key>
  568 + <value>(192, 668)</value>
  569 + </param>
  570 + <param>
  571 + <key>gui_hint</key>
  572 + <value>4, 1</value>
  573 + </param>
  574 + <param>
  575 + <key>_rotation</key>
  576 + <value>0</value>
  577 + </param>
  578 + <param>
  579 + <key>id</key>
  580 + <value>pid_kd</value>
  581 + </param>
  582 + <param>
  583 + <key>label</key>
  584 + <value>pid_kd</value>
  585 + </param>
  586 + <param>
  587 + <key>min_len</key>
  588 + <value>200</value>
  589 + </param>
  590 + <param>
  591 + <key>orient</key>
  592 + <value>Qt.Horizontal</value>
  593 + </param>
  594 + <param>
  595 + <key>start</key>
  596 + <value>0</value>
  597 + </param>
  598 + <param>
  599 + <key>step</key>
  600 + <value>1</value>
  601 + </param>
  602 + <param>
  603 + <key>stop</key>
  604 + <value>2**14-1</value>
  605 + </param>
  606 + <param>
  607 + <key>rangeType</key>
  608 + <value>int</value>
  609 + </param>
  610 + <param>
  611 + <key>widget</key>
  612 + <value>counter_slider</value>
  613 + </param>
  614 + </block>
  615 + <block>
  616 + <key>variable_qtgui_range</key>
  617 + <param>
  618 + <key>comment</key>
  619 + <value></value>
  620 + </param>
  621 + <param>
  622 + <key>value</key>
  623 + <value>0</value>
  624 + </param>
  625 + <param>
  626 + <key>_enabled</key>
  627 + <value>True</value>
  628 + </param>
  629 + <param>
  630 + <key>_coordinate</key>
  631 + <value>(192, 460)</value>
  632 + </param>
  633 + <param>
  634 + <key>gui_hint</key>
  635 + <value>3, 1</value>
  636 + </param>
  637 + <param>
  638 + <key>_rotation</key>
  639 + <value>0</value>
  640 + </param>
  641 + <param>
  642 + <key>id</key>
  643 + <value>pid_ki</value>
  644 + </param>
  645 + <param>
  646 + <key>label</key>
  647 + <value>pid_ki</value>
  648 + </param>
  649 + <param>
  650 + <key>min_len</key>
  651 + <value>200</value>
  652 + </param>
  653 + <param>
  654 + <key>orient</key>
  655 + <value>Qt.Horizontal</value>
  656 + </param>
  657 + <param>
  658 + <key>start</key>
  659 + <value>0</value>
  660 + </param>
  661 + <param>
  662 + <key>step</key>
  663 + <value>1</value>
  664 + </param>
  665 + <param>
  666 + <key>stop</key>
  667 + <value>2**14-1</value>
  668 + </param>
  669 + <param>
  670 + <key>rangeType</key>
  671 + <value>int</value>
  672 + </param>
  673 + <param>
  674 + <key>widget</key>
  675 + <value>counter_slider</value>
  676 + </param>
  677 + </block>
  678 + <block>
  679 + <key>variable_qtgui_range</key>
  680 + <param>
  681 + <key>comment</key>
  682 + <value></value>
  683 + </param>
  684 + <param>
  685 + <key>value</key>
  686 + <value>0</value>
  687 + </param>
  688 + <param>
  689 + <key>_enabled</key>
  690 + <value>True</value>
  691 + </param>
  692 + <param>
  693 + <key>_coordinate</key>
  694 + <value>(200, 236)</value>
  695 + </param>
  696 + <param>
  697 + <key>gui_hint</key>
  698 + <value>2, 1</value>
  699 + </param>
  700 + <param>
  701 + <key>_rotation</key>
  702 + <value>0</value>
  703 + </param>
  704 + <param>
  705 + <key>id</key>
  706 + <value>pid_kp</value>
  707 + </param>
  708 + <param>
  709 + <key>label</key>
  710 + <value>pid_kp</value>
  711 + </param>
  712 + <param>
  713 + <key>min_len</key>
  714 + <value>200</value>
  715 + </param>
  716 + <param>
  717 + <key>orient</key>
  718 + <value>Qt.Horizontal</value>
  719 + </param>
  720 + <param>
  721 + <key>start</key>
  722 + <value>0</value>
  723 + </param>
  724 + <param>
  725 + <key>step</key>
  726 + <value>1</value>
  727 + </param>
  728 + <param>
  729 + <key>stop</key>
  730 + <value>2**14-1</value>
  731 + </param>
  732 + <param>
  733 + <key>rangeType</key>
  734 + <value>int</value>
  735 + </param>
  736 + <param>
  737 + <key>widget</key>
  738 + <value>counter_slider</value>
  739 + </param>
  740 + </block>
  741 + <block>
  742 + <key>variable_qtgui_push_button</key>
  743 + <param>
  744 + <key>comment</key>
  745 + <value></value>
  746 + </param>
  747 + <param>
  748 + <key>value</key>
  749 + <value>0</value>
  750 + </param>
  751 + <param>
  752 + <key>_enabled</key>
  753 + <value>True</value>
  754 + </param>
  755 + <param>
  756 + <key>_coordinate</key>
  757 + <value>(392, 684)</value>
  758 + </param>
  759 + <param>
  760 + <key>gui_hint</key>
  761 + <value>4, 2</value>
  762 + </param>
  763 + <param>
  764 + <key>_rotation</key>
  765 + <value>0</value>
  766 + </param>
  767 + <param>
  768 + <key>id</key>
  769 + <value>pid_rst_int</value>
  770 + </param>
  771 + <param>
  772 + <key>label</key>
  773 + <value>pid_rst_int</value>
  774 + </param>
  775 + <param>
  776 + <key>pressed</key>
  777 + <value>1</value>
  778 + </param>
  779 + <param>
  780 + <key>released</key>
  781 + <value>0</value>
  782 + </param>
  783 + <param>
  784 + <key>type</key>
  785 + <value>int</value>
  786 + </param>
  787 + </block>
  788 + <block>
  789 + <key>variable_qtgui_range</key>
  790 + <param>
  791 + <key>comment</key>
  792 + <value></value>
  793 + </param>
  794 + <param>
  795 + <key>value</key>
  796 + <value>0</value>
  797 + </param>
  798 + <param>
  799 + <key>_enabled</key>
  800 + <value>True</value>
  801 + </param>
  802 + <param>
  803 + <key>_coordinate</key>
  804 + <value>(400, 236)</value>
  805 + </param>
  806 + <param>
  807 + <key>gui_hint</key>
  808 + <value>2, 2</value>
  809 + </param>
  810 + <param>
  811 + <key>_rotation</key>
  812 + <value>0</value>
  813 + </param>
  814 + <param>
  815 + <key>id</key>
  816 + <value>pid_setpoint</value>
  817 + </param>
  818 + <param>
  819 + <key>label</key>
  820 + <value>pid_setpoint</value>
  821 + </param>
  822 + <param>
  823 + <key>min_len</key>
  824 + <value>200</value>
  825 + </param>
  826 + <param>
  827 + <key>orient</key>
  828 + <value>Qt.Horizontal</value>
  829 + </param>
  830 + <param>
  831 + <key>start</key>
  832 + <value>-2**13</value>
  833 + </param>
  834 + <param>
  835 + <key>step</key>
  836 + <value>1</value>
  837 + </param>
  838 + <param>
  839 + <key>stop</key>
  840 + <value>2**13-1</value>
  841 + </param>
  842 + <param>
  843 + <key>rangeType</key>
  844 + <value>int</value>
  845 + </param>
  846 + <param>
  847 + <key>widget</key>
  848 + <value>counter_slider</value>
  849 + </param>
  850 + </block>
  851 + <block>
  852 + <key>variable_qtgui_check_box</key>
  853 + <param>
  854 + <key>comment</key>
  855 + <value></value>
  856 + </param>
  857 + <param>
  858 + <key>value</key>
  859 + <value>0</value>
  860 + </param>
  861 + <param>
  862 + <key>_enabled</key>
  863 + <value>True</value>
  864 + </param>
  865 + <param>
  866 + <key>false</key>
  867 + <value>0</value>
  868 + </param>
  869 + <param>
  870 + <key>_coordinate</key>
  871 + <value>(400, 468)</value>
  872 + </param>
  873 + <param>
  874 + <key>gui_hint</key>
  875 + <value>3, 2</value>
  876 + </param>
  877 + <param>
  878 + <key>_rotation</key>
  879 + <value>0</value>
  880 + </param>
  881 + <param>
  882 + <key>id</key>
  883 + <value>pid_sign</value>
  884 + </param>
  885 + <param>
  886 + <key>label</key>
  887 + <value>pid_sign</value>
  888 + </param>
  889 + <param>
  890 + <key>true</key>
  891 + <value>1</value>
  892 + </param>
  893 + <param>
  894 + <key>type</key>
  895 + <value>int</value>
  896 + </param>
  897 + </block>
  898 + <block>
  899 + <key>variable_qtgui_check_box</key>
  900 + <param>
  901 + <key>comment</key>
  902 + <value></value>
  903 + </param>
  904 + <param>
  905 + <key>value</key>
  906 + <value>0</value>
  907 + </param>
  908 + <param>
  909 + <key>_enabled</key>
  910 + <value>True</value>
  911 + </param>
  912 + <param>
  913 + <key>false</key>
  914 + <value>0</value>
  915 + </param>
  916 + <param>
  917 + <key>_coordinate</key>
  918 + <value>(960, 12)</value>
  919 + </param>
  920 + <param>
  921 + <key>gui_hint</key>
  922 + <value>1, 4</value>
  923 + </param>
  924 + <param>
  925 + <key>_rotation</key>
  926 + <value>0</value>
  927 + </param>
  928 + <param>
  929 + <key>id</key>
  930 + <value>pinc</value>
  931 + </param>
  932 + <param>
  933 + <key>label</key>
  934 + <value>pinc</value>
  935 + </param>
  936 + <param>
  937 + <key>true</key>
  938 + <value>1</value>
  939 + </param>
  940 + <param>
  941 + <key>type</key>
  942 + <value>int</value>
  943 + </param>
  944 + </block>
  945 + <block>
  946 + <key>variable_qtgui_check_box</key>
  947 + <param>
  948 + <key>comment</key>
  949 + <value></value>
  950 + </param>
  951 + <param>
  952 + <key>value</key>
  953 + <value>0</value>
  954 + </param>
  955 + <param>
  956 + <key>_enabled</key>
  957 + <value>True</value>
  958 + </param>
  959 + <param>
  960 + <key>false</key>
  961 + <value>0</value>
  962 + </param>
  963 + <param>
  964 + <key>_coordinate</key>
  965 + <value>(952, 164)</value>
  966 + </param>
  967 + <param>
  968 + <key>gui_hint</key>
  969 + <value>2, 4</value>
  970 + </param>
  971 + <param>
  972 + <key>_rotation</key>
  973 + <value>0</value>
  974 + </param>
  975 + <param>
  976 + <key>id</key>
  977 + <value>poff</value>
  978 + </param>
  979 + <param>
  980 + <key>label</key>
  981 + <value>poff</value>
  982 + </param>
  983 + <param>
  984 + <key>true</key>
  985 + <value>1</value>
  986 + </param>
  987 + <param>
  988 + <key>type</key>
  989 + <value>int</value>
  990 + </param>
  991 + </block>
  992 + <block>
  993 + <key>variable</key>
  994 + <param>
  995 + <key>comment</key>
  996 + <value></value>
  997 + </param>
  998 + <param>
  999 + <key>_enabled</key>
  1000 + <value>True</value>
  1001 + </param>
  1002 + <param>
  1003 + <key>_coordinate</key>
  1004 + <value>(8, 176)</value>
  1005 + </param>
  1006 + <param>
  1007 + <key>_rotation</key>
  1008 + <value>0</value>
  1009 + </param>
  1010 + <param>
  1011 + <key>id</key>
  1012 + <value>port</value>
  1013 + </param>
  1014 + <param>
  1015 + <key>value</key>
  1016 + <value>1001</value>
  1017 + </param>
  1018 + </block>
  1019 + <block>
  1020 + <key>add_const_set_offset</key>
  1021 + <param>
  1022 + <key>addr</key>
  1023 + <value>addr</value>
  1024 + </param>
  1025 + <param>
  1026 + <key>alias</key>
  1027 + <value></value>
  1028 + </param>
  1029 + <param>
  1030 + <key>comment</key>
  1031 + <value></value>
  1032 + </param>
  1033 + <param>
  1034 + <key>const</key>
  1035 + <value>adc1_offset</value>
  1036 + </param>
  1037 + <param>
  1038 + <key>device</key>
  1039 + <value>/dev/adc1_offset</value>
  1040 + </param>
  1041 + <param>
  1042 + <key>_enabled</key>
  1043 + <value>True</value>
  1044 + </param>
  1045 + <param>
  1046 + <key>_coordinate</key>
  1047 + <value>(200, 144)</value>
  1048 + </param>
  1049 + <param>
  1050 + <key>_rotation</key>
  1051 + <value>0</value>
  1052 + </param>
  1053 + <param>
  1054 + <key>id</key>
  1055 + <value>add_const_set_offset_0_0_0</value>
  1056 + </param>
  1057 + <param>
  1058 + <key>port</key>
  1059 + <value>port</value>
  1060 + </param>
  1061 + </block>
  1062 + <block>
  1063 + <key>add_const_set_offset</key>
  1064 + <param>
  1065 + <key>addr</key>
  1066 + <value>addr</value>
  1067 + </param>
  1068 + <param>
  1069 + <key>alias</key>
  1070 + <value></value>
  1071 + </param>
  1072 + <param>
  1073 + <key>comment</key>
  1074 + <value></value>
  1075 + </param>
  1076 + <param>
  1077 + <key>const</key>
  1078 + <value>dac1_offset</value>
  1079 + </param>
  1080 + <param>
  1081 + <key>device</key>
  1082 + <value>/dev/dac1_offset</value>
  1083 + </param>
  1084 + <param>
  1085 + <key>_enabled</key>
  1086 + <value>True</value>
  1087 + </param>
  1088 + <param>
  1089 + <key>_coordinate</key>
  1090 + <value>(384, 144)</value>
  1091 + </param>
  1092 + <param>
  1093 + <key>_rotation</key>
  1094 + <value>0</value>
  1095 + </param>
  1096 + <param>
  1097 + <key>id</key>
  1098 + <value>add_const_set_offset_0_0_0_0</value>
  1099 + </param>
  1100 + <param>
  1101 + <key>port</key>
  1102 + <value>port</value>
  1103 + </param>
  1104 + </block>
  1105 + <block>
  1106 + <key>add_const_set_offset</key>
  1107 + <param>
  1108 + <key>addr</key>
  1109 + <value>addr</value>
  1110 + </param>
  1111 + <param>
  1112 + <key>alias</key>
  1113 + <value></value>
  1114 + </param>
  1115 + <param>
  1116 + <key>comment</key>
  1117 + <value></value>
  1118 + </param>
  1119 + <param>
  1120 + <key>const</key>
  1121 + <value>dds_ampl</value>
  1122 + </param>
  1123 + <param>
  1124 + <key>device</key>
  1125 + <value>/dev/dds_ampl</value>
  1126 + </param>
  1127 + <param>
  1128 + <key>_enabled</key>
  1129 + <value>True</value>
  1130 + </param>
  1131 + <param>
  1132 + <key>_coordinate</key>
  1133 + <value>(688, 144)</value>
  1134 + </param>
  1135 + <param>
  1136 + <key>_rotation</key>
  1137 + <value>0</value>
  1138 + </param>
  1139 + <param>
  1140 + <key>id</key>
  1141 + <value>add_const_set_offset_0_0_0_0_0</value>
  1142 + </param>
  1143 + <param>
  1144 + <key>port</key>
  1145 + <value>port</value>
  1146 + </param>
  1147 + </block>
  1148 + <block>
  1149 + <key>add_const_set_offset</key>
  1150 + <param>
  1151 + <key>addr</key>
  1152 + <value>addr</value>
  1153 + </param>
  1154 + <param>
  1155 + <key>alias</key>
  1156 + <value></value>
  1157 + </param>
  1158 + <param>
  1159 + <key>comment</key>
  1160 + <value></value>
  1161 + </param>
  1162 + <param>
  1163 + <key>const</key>
  1164 + <value>dds_offset</value>
  1165 + </param>
  1166 + <param>
  1167 + <key>device</key>
  1168 + <value>/dev/dds_offset</value>
  1169 + </param>
  1170 + <param>
  1171 + <key>_enabled</key>
  1172 + <value>True</value>
  1173 + </param>
  1174 + <param>
  1175 + <key>_coordinate</key>
  1176 + <value>(688, 596)</value>
  1177 + </param>
  1178 + <param>
  1179 + <key>_rotation</key>
  1180 + <value>0</value>
  1181 + </param>
  1182 + <param>
  1183 + <key>id</key>
  1184 + <value>add_const_set_offset_0_0_0_0_1</value>
  1185 + </param>
  1186 + <param>
  1187 + <key>port</key>
  1188 + <value>port</value>
  1189 + </param>
  1190 + </block>
  1191 + <block>
  1192 + <key>add_const_set_offset</key>
  1193 + <param>
  1194 + <key>addr</key>
  1195 + <value>addr</value>
  1196 + </param>
  1197 + <param>
  1198 + <key>alias</key>
  1199 + <value></value>
  1200 + </param>
  1201 + <param>
  1202 + <key>comment</key>
  1203 + <value></value>
  1204 + </param>
  1205 + <param>
  1206 + <key>const</key>
  1207 + <value>int(dds_f0/(125e6/2**32))</value>
  1208 + </param>
  1209 + <param>
  1210 + <key>device</key>
  1211 + <value>/dev/dds_f0</value>
  1212 + </param>
  1213 + <param>
  1214 + <key>_enabled</key>
  1215 + <value>True</value>
  1216 + </param>
  1217 + <param>
  1218 + <key>_coordinate</key>
  1219 + <value>(680, 804)</value>
  1220 + </param>
  1221 + <param>
  1222 + <key>_rotation</key>
  1223 + <value>0</value>
  1224 + </param>
  1225 + <param>
  1226 + <key>id</key>
  1227 + <value>add_const_set_offset_0_0_0_0_1_0</value>
  1228 + </param>
  1229 + <param>
  1230 + <key>port</key>
  1231 + <value>port</value>
  1232 + </param>
  1233 + </block>
  1234 + <block>
  1235 + <key>add_const_set_offset</key>
  1236 + <param>
  1237 + <key>addr</key>
  1238 + <value>addr</value>
  1239 + </param>
  1240 + <param>
  1241 + <key>alias</key>
  1242 + <value></value>
  1243 + </param>
  1244 + <param>
  1245 + <key>comment</key>
  1246 + <value></value>
  1247 + </param>
  1248 + <param>
  1249 + <key>const</key>
  1250 + <value>dds_range</value>
  1251 + </param>
  1252 + <param>
  1253 + <key>device</key>
  1254 + <value>/dev/dds_range</value>
  1255 + </param>
  1256 + <param>
  1257 + <key>_enabled</key>
  1258 + <value>True</value>
  1259 + </param>
  1260 + <param>
  1261 + <key>_coordinate</key>
  1262 + <value>(712, 924)</value>
  1263 + </param>
  1264 + <param>
  1265 + <key>_rotation</key>
  1266 + <value>0</value>
  1267 + </param>
  1268 + <param>
  1269 + <key>id</key>
  1270 + <value>add_const_set_offset_0_0_0_0_1_0_0</value>
  1271 + </param>
  1272 + <param>
  1273 + <key>port</key>
  1274 + <value>port</value>
  1275 + </param>
  1276 + </block>
  1277 + <block>
  1278 + <key>add_const_set_offset</key>
  1279 + <param>
  1280 + <key>addr</key>
  1281 + <value>addr</value>
  1282 + </param>
  1283 + <param>
  1284 + <key>alias</key>
  1285 + <value></value>
  1286 + </param>
  1287 + <param>
  1288 + <key>comment</key>
  1289 + <value></value>
  1290 + </param>
  1291 + <param>
  1292 + <key>const</key>
  1293 + <value>pid_setpoint</value>
  1294 + </param>
  1295 + <param>
  1296 + <key>device</key>
  1297 + <value>/dev/pid_setpoint</value>
  1298 + </param>
  1299 + <param>
  1300 + <key>_enabled</key>
  1301 + <value>True</value>
  1302 + </param>
  1303 + <param>
  1304 + <key>_coordinate</key>
  1305 + <value>(384, 372)</value>
  1306 + </param>
  1307 + <param>
  1308 + <key>_rotation</key>
  1309 + <value>0</value>
  1310 + </param>
  1311 + <param>
  1312 + <key>id</key>
  1313 + <value>add_const_set_offset_0_0_0_1</value>
  1314 + </param>
  1315 + <param>
  1316 + <key>port</key>
  1317 + <value>port</value>
  1318 + </param>
  1319 + </block>
  1320 + <block>
  1321 + <key>add_const_set_offset</key>
  1322 + <param>
  1323 + <key>addr</key>
  1324 + <value>addr</value>
  1325 + </param>
  1326 + <param>
  1327 + <key>alias</key>
  1328 + <value></value>
  1329 + </param>
  1330 + <param>
  1331 + <key>comment</key>
  1332 + <value></value>
  1333 + </param>
  1334 + <param>
  1335 + <key>const</key>
  1336 + <value>pid_kp</value>
  1337 + </param>
  1338 + <param>
  1339 + <key>device</key>
  1340 + <value>/dev/pid_kp</value>
  1341 + </param>
  1342 + <param>
  1343 + <key>_enabled</key>
  1344 + <value>True</value>
  1345 + </param>
  1346 + <param>
  1347 + <key>_coordinate</key>
  1348 + <value>(184, 372)</value>
  1349 + </param>
  1350 + <param>
  1351 + <key>_rotation</key>
  1352 + <value>0</value>
  1353 + </param>
  1354 + <param>
  1355 + <key>id</key>
  1356 + <value>add_const_set_offset_0_0_0_1_0</value>
  1357 + </param>
  1358 + <param>
  1359 + <key>port</key>
  1360 + <value>port</value>
  1361 + </param>
  1362 + </block>
  1363 + <block>
  1364 + <key>add_const_set_offset</key>
  1365 + <param>
  1366 + <key>addr</key>
  1367 + <value>addr</value>
  1368 + </param>
  1369 + <param>
  1370 + <key>alias</key>
  1371 + <value></value>
  1372 + </param>
  1373 + <param>
  1374 + <key>comment</key>
  1375 + <value></value>
  1376 + </param>
  1377 + <param>
  1378 + <key>const</key>
  1379 + <value>pid_ki</value>
  1380 + </param>
  1381 + <param>
  1382 + <key>device</key>
  1383 + <value>/dev/pid_ki</value>
  1384 + </param>
  1385 + <param>
  1386 + <key>_enabled</key>
  1387 + <value>True</value>
  1388 + </param>
  1389 + <param>
  1390 + <key>_coordinate</key>
  1391 + <value>(176, 596)</value>
  1392 + </param>
  1393 + <param>
  1394 + <key>_rotation</key>
  1395 + <value>0</value>
  1396 + </param>
  1397 + <param>
  1398 + <key>id</key>
  1399 + <value>add_const_set_offset_0_0_0_1_0_0</value>
  1400 + </param>
  1401 + <param>
  1402 + <key>port</key>
  1403 + <value>port</value>
  1404 + </param>
  1405 + </block>
  1406 + <block>
  1407 + <key>add_const_set_offset</key>
  1408 + <param>
  1409 + <key>addr</key>
  1410 + <value>addr</value>
  1411 + </param>
  1412 + <param>
  1413 + <key>alias</key>
  1414 + <value></value>
  1415 + </param>
  1416 + <param>
  1417 + <key>comment</key>
  1418 + <value></value>
  1419 + </param>
  1420 + <param>
  1421 + <key>const</key>
  1422 + <value>pid_kd</value>
  1423 + </param>
  1424 + <param>
  1425 + <key>device</key>
  1426 + <value>/dev/pid_kd</value>
  1427 + </param>
  1428 + <param>
  1429 + <key>_enabled</key>
  1430 + <value>True</value>
  1431 + </param>
  1432 + <param>
  1433 + <key>_coordinate</key>
  1434 + <value>(176, 804)</value>
  1435 + </param>
  1436 + <param>
  1437 + <key>_rotation</key>
  1438 + <value>0</value>
  1439 + </param>
  1440 + <param>
  1441 + <key>id</key>
  1442 + <value>add_const_set_offset_0_0_0_1_0_0_0</value>
  1443 + </param>
  1444 + <param>
  1445 + <key>port</key>
  1446 + <value>port</value>
  1447 + </param>
  1448 + </block>
  1449 + <block>
  1450 + <key>add_const_set_offset</key>
  1451 + <param>
  1452 + <key>addr</key>
  1453 + <value>addr</value>
  1454 + </param>
  1455 + <param>
  1456 + <key>alias</key>
  1457 + <value></value>
  1458 + </param>
  1459 + <param>
  1460 + <key>comment</key>
  1461 + <value></value>
  1462 + </param>
  1463 + <param>
  1464 + <key>const</key>
  1465 + <value>pid_sign</value>
  1466 + </param>
  1467 + <param>
  1468 + <key>device</key>
  1469 + <value>/dev/pid_sign</value>
  1470 + </param>
  1471 + <param>
  1472 + <key>_enabled</key>
  1473 + <value>True</value>
  1474 + </param>
  1475 + <param>
  1476 + <key>_coordinate</key>
  1477 + <value>(392, 596)</value>
  1478 + </param>
  1479 + <param>
  1480 + <key>_rotation</key>
  1481 + <value>0</value>
  1482 + </param>
  1483 + <param>
  1484 + <key>id</key>
  1485 + <value>add_const_set_offset_0_0_0_1_0_0_0_0</value>
  1486 + </param>
  1487 + <param>
  1488 + <key>port</key>
  1489 + <value>port</value>
  1490 + </param>
  1491 + </block>
  1492 + <block>
  1493 + <key>add_const_set_offset</key>
  1494 + <param>
  1495 + <key>addr</key>
  1496 + <value>addr</value>
  1497 + </param>
  1498 + <param>
  1499 + <key>alias</key>
  1500 + <value></value>
  1501 + </param>
  1502 + <param>
  1503 + <key>comment</key>
  1504 + <value></value>
  1505 + </param>
  1506 + <param>
  1507 + <key>const</key>
  1508 + <value>pid_rst_int</value>
  1509 + </param>
  1510 + <param>
  1511 + <key>device</key>
  1512 + <value>/dev/pid_rst_int</value>
  1513 + </param>
  1514 + <param>
  1515 + <key>_enabled</key>
  1516 + <value>True</value>
  1517 + </param>
  1518 + <param>
  1519 + <key>_coordinate</key>
  1520 + <value>(392, 804)</value>
  1521 + </param>
  1522 + <param>
  1523 + <key>_rotation</key>
  1524 + <value>0</value>
  1525 + </param>
  1526 + <param>
  1527 + <key>id</key>
  1528 + <value>add_const_set_offset_0_0_0_1_0_0_0_0_0</value>
  1529 + </param>
  1530 + <param>
  1531 + <key>port</key>
  1532 + <value>port</value>
  1533 + </param>
  1534 + </block>
  1535 + <block>
  1536 + <key>nco_counter_send_conf</key>
  1537 + <param>
  1538 + <key>acc_size</key>
  1539 + <value>32</value>
  1540 + </param>
  1541 + <param>
  1542 + <key>addr</key>
  1543 + <value>addr</value>
  1544 + </param>
  1545 + <param>
  1546 + <key>alias</key>
  1547 + <value></value>
  1548 + </param>
  1549 + <param>
  1550 + <key>comment</key>
  1551 + <value></value>
  1552 + </param>
  1553 + <param>
  1554 + <key>device</key>
  1555 + <value>/dev/dds_nco</value>
  1556 + </param>
  1557 + <param>
  1558 + <key>_enabled</key>
  1559 + <value>True</value>
  1560 + </param>
  1561 + <param>
  1562 + <key>freq_dds</key>
  1563 + <value>dds_nco</value>
  1564 + </param>
  1565 + <param>
  1566 + <key>freq_ref</key>
  1567 + <value>125000000</value>
  1568 + </param>
  1569 + <param>
  1570 + <key>_coordinate</key>
  1571 + <value>(672, 344)</value>
  1572 + </param>
  1573 + <param>
  1574 + <key>_rotation</key>
  1575 + <value>0</value>
  1576 + </param>
  1577 + <param>
  1578 + <key>id</key>
  1579 + <value>nco_counter_send_conf_0</value>
  1580 + </param>
  1581 + <param>
  1582 + <key>offset</key>
  1583 + <value>0</value>
  1584 + </param>
  1585 + <param>
  1586 + <key>pinc_sw</key>
  1587 + <value>pinc</value>
  1588 + </param>
  1589 + <param>
  1590 + <key>poff_sw</key>
  1591 + <value>poff</value>
  1592 + </param>
  1593 + <param>
  1594 + <key>port</key>
  1595 + <value>port</value>
  1596 + </param>
  1597 + </block>
  1598 +</flow_graph>
redpitaya/client/pid_vco.py
  1 +#!/usr/bin/env python2
  2 +# -*- coding: utf-8 -*-
  3 +##################################################
  4 +# GNU Radio Python Flow Graph
  5 +# Title: Pid Vco
  6 +# Generated: Tue Apr 11 15:32:11 2017
  7 +##################################################
  8 +
  9 +if __name__ == '__main__':
  10 + import ctypes
  11 + import sys
  12 + if sys.platform.startswith('linux'):
  13 + try:
  14 + x11 = ctypes.cdll.LoadLibrary('libX11.so')
  15 + x11.XInitThreads()
  16 + except:
  17 + print "Warning: failed to XInitThreads()"
  18 +
  19 +from PyQt4 import Qt
  20 +from gnuradio import eng_notation
  21 +from gnuradio import gr
  22 +from gnuradio.eng_option import eng_option
  23 +from gnuradio.filter import firdes
  24 +from gnuradio.qtgui import Range, RangeWidget
  25 +from optparse import OptionParser
  26 +import redpitaya_gnuradio
  27 +import sys
  28 +
  29 +
  30 +class pid_vco(gr.top_block, Qt.QWidget):
  31 +
  32 + def __init__(self):
  33 + gr.top_block.__init__(self, "Pid Vco")
  34 + Qt.QWidget.__init__(self)
  35 + self.setWindowTitle("Pid Vco")
  36 + try:
  37 + self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
  38 + except:
  39 + pass
  40 + self.top_scroll_layout = Qt.QVBoxLayout()
  41 + self.setLayout(self.top_scroll_layout)
  42 + self.top_scroll = Qt.QScrollArea()
  43 + self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
  44 + self.top_scroll_layout.addWidget(self.top_scroll)
  45 + self.top_scroll.setWidgetResizable(True)
  46 + self.top_widget = Qt.QWidget()
  47 + self.top_scroll.setWidget(self.top_widget)
  48 + self.top_layout = Qt.QVBoxLayout(self.top_widget)
  49 + self.top_grid_layout = Qt.QGridLayout()
  50 + self.top_layout.addLayout(self.top_grid_layout)
  51 +
  52 + self.settings = Qt.QSettings("GNU Radio", "pid_vco")
  53 + self.restoreGeometry(self.settings.value("geometry").toByteArray())
  54 +
  55 + ##################################################
  56 + # Variables
  57 + ##################################################
  58 + self.port = port = 1001
  59 + self.poff = poff = 0
  60 + self.pinc = pinc = 0
  61 + self.pid_sign = pid_sign = 0
  62 + self.pid_setpoint = pid_setpoint = 0
  63 + self.pid_rst_int = pid_rst_int = 0
  64 + self.pid_kp = pid_kp = 0
  65 + self.pid_ki = pid_ki = 0
  66 + self.pid_kd = pid_kd = 0
  67 + self.dds_range = dds_range = 0
  68 + self.dds_offset = dds_offset = 0
  69 + self.dds_nco = dds_nco = 0
  70 + self.dds_f0 = dds_f0 = 0
  71 + self.dds_ampl = dds_ampl = 0
  72 + self.dac1_offset = dac1_offset = 0
  73 + self.addr = addr = "192.168.0.203"
  74 + self.adc1_offset = adc1_offset = 0
  75 +
  76 + ##################################################
  77 + # Blocks
  78 + ##################################################
  79 + _poff_check_box = Qt.QCheckBox('poff')
  80 + self._poff_choices = {True: 1, False: 0}
  81 + self._poff_choices_inv = dict((v,k) for k,v in self._poff_choices.iteritems())
  82 + self._poff_callback = lambda i: Qt.QMetaObject.invokeMethod(_poff_check_box, "setChecked", Qt.Q_ARG("bool", self._poff_choices_inv[i]))
  83 + self._poff_callback(self.poff)
  84 + _poff_check_box.stateChanged.connect(lambda i: self.set_poff(self._poff_choices[bool(i)]))
  85 + self.top_grid_layout.addWidget(_poff_check_box, 2, 4)
  86 + _pinc_check_box = Qt.QCheckBox('pinc')
  87 + self._pinc_choices = {True: 1, False: 0}
  88 + self._pinc_choices_inv = dict((v,k) for k,v in self._pinc_choices.iteritems())
  89 + self._pinc_callback = lambda i: Qt.QMetaObject.invokeMethod(_pinc_check_box, "setChecked", Qt.Q_ARG("bool", self._pinc_choices_inv[i]))
  90 + self._pinc_callback(self.pinc)
  91 + _pinc_check_box.stateChanged.connect(lambda i: self.set_pinc(self._pinc_choices[bool(i)]))
  92 + self.top_grid_layout.addWidget(_pinc_check_box, 1, 4)
  93 + _pid_sign_check_box = Qt.QCheckBox('pid_sign')
  94 + self._pid_sign_choices = {True: 1, False: 0}
  95 + self._pid_sign_choices_inv = dict((v,k) for k,v in self._pid_sign_choices.iteritems())
  96 + self._pid_sign_callback = lambda i: Qt.QMetaObject.invokeMethod(_pid_sign_check_box, "setChecked", Qt.Q_ARG("bool", self._pid_sign_choices_inv[i]))
  97 + self._pid_sign_callback(self.pid_sign)
  98 + _pid_sign_check_box.stateChanged.connect(lambda i: self.set_pid_sign(self._pid_sign_choices[bool(i)]))
  99 + self.top_grid_layout.addWidget(_pid_sign_check_box, 3, 2)
  100 + self._pid_setpoint_range = Range(-2**13, 2**13-1, 1, 0, 200)
  101 + self._pid_setpoint_win = RangeWidget(self._pid_setpoint_range, self.set_pid_setpoint, 'pid_setpoint', "counter_slider", int)
  102 + self.top_grid_layout.addWidget(self._pid_setpoint_win, 2, 2)
  103 + _pid_rst_int_push_button = Qt.QPushButton('pid_rst_int')
  104 + self._pid_rst_int_choices = {'Pressed': 1, 'Released': 0}
  105 + _pid_rst_int_push_button.pressed.connect(lambda: self.set_pid_rst_int(self._pid_rst_int_choices['Pressed']))
  106 + _pid_rst_int_push_button.released.connect(lambda: self.set_pid_rst_int(self._pid_rst_int_choices['Released']))
  107 + self.top_grid_layout.addWidget(_pid_rst_int_push_button, 4, 2)
  108 + self._pid_kp_range = Range(0, 2**14-1, 1, 0, 200)
  109 + self._pid_kp_win = RangeWidget(self._pid_kp_range, self.set_pid_kp, 'pid_kp', "counter_slider", int)
  110 + self.top_grid_layout.addWidget(self._pid_kp_win, 2, 1)
  111 + self._pid_ki_range = Range(0, 2**14-1, 1, 0, 200)
  112 + self._pid_ki_win = RangeWidget(self._pid_ki_range, self.set_pid_ki, 'pid_ki', "counter_slider", int)
  113 + self.top_grid_layout.addWidget(self._pid_ki_win, 3, 1)
  114 + self._pid_kd_range = Range(0, 2**14-1, 1, 0, 200)
  115 + self._pid_kd_win = RangeWidget(self._pid_kd_range, self.set_pid_kd, 'pid_kd', "counter_slider", int)
  116 + self.top_grid_layout.addWidget(self._pid_kd_win, 4, 1)
  117 + self._dds_range_range = Range(-2**13, 2**13-1, 1, 0, 200)
  118 + self._dds_range_win = RangeWidget(self._dds_range_range, self.set_dds_range, 'dds_range', "counter_slider", int)
  119 + self.top_grid_layout.addWidget(self._dds_range_win, 5, 3)
  120 + self._dds_offset_range = Range(-2**13, 2**13-1, 1, 0, 200)
  121 + self._dds_offset_win = RangeWidget(self._dds_offset_range, self.set_dds_offset, 'dds_offset', "counter_slider", int)
  122 + self.top_grid_layout.addWidget(self._dds_offset_win, 3, 3)
  123 + self._dds_nco_range = Range(0, 60000000, 1, 0, 200)
  124 + self._dds_nco_win = RangeWidget(self._dds_nco_range, self.set_dds_nco, 'dds_nco', "counter_slider", int)
  125 + self.top_grid_layout.addWidget(self._dds_nco_win, 2, 3)
  126 + self._dds_f0_range = Range(0, 60000000, 1, 0, 200)
  127 + self._dds_f0_win = RangeWidget(self._dds_f0_range, self.set_dds_f0, 'dds_f0', "counter_slider", int)
  128 + self.top_grid_layout.addWidget(self._dds_f0_win, 4, 3)
  129 + self._dds_ampl_range = Range(0, 2**13-1, 1, 0, 200)
  130 + self._dds_ampl_win = RangeWidget(self._dds_ampl_range, self.set_dds_ampl, 'dds_ampl', "counter_slider", int)
  131 + self.top_grid_layout.addWidget(self._dds_ampl_win, 1, 3)
  132 + self._dac1_offset_range = Range(-2**13, 2**13-1, 1, 0, 200)
  133 + self._dac1_offset_win = RangeWidget(self._dac1_offset_range, self.set_dac1_offset, 'dac1_offset', "counter_slider", int)
  134 + self.top_grid_layout.addWidget(self._dac1_offset_win, 1, 2)
  135 + self._adc1_offset_range = Range(-2**13, 2**13-1, 1, 0, 200)
  136 + self._adc1_offset_win = RangeWidget(self._adc1_offset_range, self.set_adc1_offset, 'adc1_offset', "counter_slider", int)
  137 + self.top_grid_layout.addWidget(self._adc1_offset_win, 1, 1)
  138 + self.nco_counter_send_conf_0 = redpitaya_gnuradio.nco_counter_send_conf(
  139 + addr=addr,
  140 + port=port,
  141 + device='/dev/dds_nco',
  142 + freq_ref=125000000,
  143 + freq_dds=dds_nco,
  144 + acc_size=32,
  145 + offset=0,
  146 + pinc_sw=pinc,
  147 + poff_sw=poff,
  148 + )
  149 +
  150 + self.add_const_set_offset_0_0_0_1_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
  151 + addr=addr,
  152 + port=port,
  153 + device='/dev/pid_rst_int',
  154 + const=pid_rst_int,
  155 + )
  156 +
  157 + self.add_const_set_offset_0_0_0_1_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
  158 + addr=addr,
  159 + port=port,
  160 + device='/dev/pid_sign',
  161 + const=pid_sign,
  162 + )
  163 +
  164 + self.add_const_set_offset_0_0_0_1_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
  165 + addr=addr,
  166 + port=port,
  167 + device='/dev/pid_kd',
  168 + const=pid_kd,
  169 + )
  170 +
  171 + self.add_const_set_offset_0_0_0_1_0_0 = redpitaya_gnuradio.add_const_set_offset(
  172 + addr=addr,
  173 + port=port,
  174 + device='/dev/pid_ki',
  175 + const=pid_ki,
  176 + )
  177 +
  178 + self.add_const_set_offset_0_0_0_1_0 = redpitaya_gnuradio.add_const_set_offset(
  179 + addr=addr,
  180 + port=port,
  181 + device='/dev/pid_kp',
  182 + const=pid_kp,
  183 + )
  184 +
  185 + self.add_const_set_offset_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset(
  186 + addr=addr,
  187 + port=port,
  188 + device='/dev/pid_setpoint',
  189 + const=pid_setpoint,
  190 + )
  191 +
  192 + self.add_const_set_offset_0_0_0_0_1_0_0 = redpitaya_gnuradio.add_const_set_offset(
  193 + addr=addr,
  194 + port=port,
  195 + device='/dev/dds_range',
  196 + const=dds_range,
  197 + )
  198 +
  199 + self.add_const_set_offset_0_0_0_0_1_0 = redpitaya_gnuradio.add_const_set_offset(
  200 + addr=addr,
  201 + port=port,
  202 + device='/dev/dds_f0',
  203 + const=int(dds_f0/(125e6/2**32)),
  204 + )
  205 +
  206 + self.add_const_set_offset_0_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset(
  207 + addr=addr,
  208 + port=port,
  209 + device='/dev/dds_offset',
  210 + const=dds_offset,
  211 + )
  212 +
  213 + self.add_const_set_offset_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
  214 + addr=addr,
  215 + port=port,
  216 + device='/dev/dds_ampl',
  217 + const=dds_ampl,
  218 + )
  219 +
  220 + self.add_const_set_offset_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
  221 + addr=addr,
  222 + port=port,
  223 + device='/dev/dac1_offset',
  224 + const=dac1_offset,
  225 + )
  226 +
  227 + self.add_const_set_offset_0_0_0 = redpitaya_gnuradio.add_const_set_offset(
  228 + addr=addr,
  229 + port=port,
  230 + device='/dev/adc1_offset',
  231 + const=adc1_offset,
  232 + )
  233 +
  234 +
  235 + def closeEvent(self, event):
  236 + self.settings = Qt.QSettings("GNU Radio", "pid_vco")
  237 + self.settings.setValue("geometry", self.saveGeometry())
  238 + event.accept()
  239 +
  240 + def get_port(self):
  241 + return self.port
  242 +
  243 + def set_port(self, port):
  244 + self.port = port
  245 +
  246 + def get_poff(self):
  247 + return self.poff
  248 +
  249 + def set_poff(self, poff):
  250 + self.poff = poff
  251 + self._poff_callback(self.poff)
  252 + self.nco_counter_send_conf_0.set_nco(device='/dev/dds_nco', freq_ref=125000000, freq_dds=self.dds_nco, acc_size=32, offset=0, pinc_sw=self.pinc, poff_sw=self.poff)
  253 +
  254 + def get_pinc(self):
  255 + return self.pinc
  256 +
  257 + def set_pinc(self, pinc):
  258 + self.pinc = pinc
  259 + self._pinc_callback(self.pinc)
  260 + self.nco_counter_send_conf_0.set_nco(device='/dev/dds_nco', freq_ref=125000000, freq_dds=self.dds_nco, acc_size=32, offset=0, pinc_sw=self.pinc, poff_sw=self.poff)
  261 +
  262 + def get_pid_sign(self):
  263 + return self.pid_sign
  264 +
  265 + def set_pid_sign(self, pid_sign):
  266 + self.pid_sign = pid_sign
  267 + self._pid_sign_callback(self.pid_sign)
  268 + self.add_const_set_offset_0_0_0_1_0_0_0_0.set_const(device='/dev/pid_sign', const=self.pid_sign)
  269 +
  270 + def get_pid_setpoint(self):
  271 + return self.pid_setpoint
  272 +
  273 + def set_pid_setpoint(self, pid_setpoint):
  274 + self.pid_setpoint = pid_setpoint
  275 + self.add_const_set_offset_0_0_0_1.set_const(device='/dev/pid_setpoint', const=self.pid_setpoint)
  276 +
  277 + def get_pid_rst_int(self):
  278 + return self.pid_rst_int
  279 +
  280 + def set_pid_rst_int(self, pid_rst_int):
  281 + self.pid_rst_int = pid_rst_int
  282 + self.add_const_set_offset_0_0_0_1_0_0_0_0_0.set_const(device='/dev/pid_rst_int', const=self.pid_rst_int)
  283 +
  284 + def get_pid_kp(self):
  285 + return self.pid_kp
  286 +
  287 + def set_pid_kp(self, pid_kp):
  288 + self.pid_kp = pid_kp
  289 + self.add_const_set_offset_0_0_0_1_0.set_const(device='/dev/pid_kp', const=self.pid_kp)
  290 +
  291 + def get_pid_ki(self):
  292 + return self.pid_ki
  293 +
  294 + def set_pid_ki(self, pid_ki):
  295 + self.pid_ki = pid_ki
  296 + self.add_const_set_offset_0_0_0_1_0_0.set_const(device='/dev/pid_ki', const=self.pid_ki)
  297 +
  298 + def get_pid_kd(self):
  299 + return self.pid_kd
  300 +
  301 + def set_pid_kd(self, pid_kd):
  302 + self.pid_kd = pid_kd
  303 + self.add_const_set_offset_0_0_0_1_0_0_0.set_const(device='/dev/pid_kd', const=self.pid_kd)
  304 +
  305 + def get_dds_range(self):
  306 + return self.dds_range
  307 +
  308 + def set_dds_range(self, dds_range):
  309 + self.dds_range = dds_range
  310 + self.add_const_set_offset_0_0_0_0_1_0_0.set_const(device='/dev/dds_range', const=self.dds_range)
  311 +
  312 + def get_dds_offset(self):
  313 + return self.dds_offset
  314 +
  315 + def set_dds_offset(self, dds_offset):
  316 + self.dds_offset = dds_offset
  317 + self.add_const_set_offset_0_0_0_0_1.set_const(device='/dev/dds_offset', const=self.dds_offset)
  318 +
  319 + def get_dds_nco(self):
  320 + return self.dds_nco
  321 +
  322 + def set_dds_nco(self, dds_nco):
  323 + self.dds_nco = dds_nco
  324 + self.nco_counter_send_conf_0.set_nco(device='/dev/dds_nco', freq_ref=125000000, freq_dds=self.dds_nco, acc_size=32, offset=0, pinc_sw=self.pinc, poff_sw=self.poff)
  325 +
  326 + def get_dds_f0(self):
  327 + return self.dds_f0
  328 +
  329 + def set_dds_f0(self, dds_f0):
  330 + self.dds_f0 = dds_f0
  331 + self.add_const_set_offset_0_0_0_0_1_0.set_const(device='/dev/dds_f0', const=int(self.dds_f0/(125e6/2**32)))
  332 +
  333 + def get_dds_ampl(self):
  334 + return self.dds_ampl
  335 +
  336 + def set_dds_ampl(self, dds_ampl):
  337 + self.dds_ampl = dds_ampl
  338 + self.add_const_set_offset_0_0_0_0_0.set_const(device='/dev/dds_ampl', const=self.dds_ampl)
  339 +
  340 + def get_dac1_offset(self):
  341 + return self.dac1_offset
  342 +
  343 + def set_dac1_offset(self, dac1_offset):
  344 + self.dac1_offset = dac1_offset
  345 + self.add_const_set_offset_0_0_0_0.set_const(device='/dev/dac1_offset', const=self.dac1_offset)
  346 +
  347 + def get_addr(self):
  348 + return self.addr
  349 +
  350 + def set_addr(self, addr):
  351 + self.addr = addr
  352 +
  353 + def get_adc1_offset(self):
  354 + return self.adc1_offset
  355 +
  356 + def set_adc1_offset(self, adc1_offset):
  357 + self.adc1_offset = adc1_offset
  358 + self.add_const_set_offset_0_0_0.set_const(device='/dev/adc1_offset', const=self.adc1_offset)
  359 +
  360 +
  361 +def main(top_block_cls=pid_vco, options=None):
  362 +
  363 + from distutils.version import StrictVersion
  364 + if StrictVersion(Qt.qVersion()) >= StrictVersion("4.5.0"):
  365 + style = gr.prefs().get_string('qtgui', 'style', 'raster')
  366 + Qt.QApplication.setGraphicsSystem(style)
  367 + qapp = Qt.QApplication(sys.argv)
  368 +
  369 + tb = top_block_cls()
  370 + tb.start()
  371 + tb.show()
  372 +
  373 + def quitting():
  374 + tb.stop()
  375 + tb.wait()
  376 + qapp.connect(qapp, Qt.SIGNAL("aboutToQuit()"), quitting)
  377 + qapp.exec_()
  378 +
  379 +
  380 +if __name__ == '__main__':
  381 + main()
redpitaya/client/redpitaya_gnuradio.py
  1 +#!/usr/bin/env python
  2 +
  3 +# GNU Radio blocks for the Red Pitaya transceiver
  4 +# Copyright (C) 2015 Renzo Davoli
  5 +#
  6 +# This program is free software; you can redistribute it and/or
  7 +# modify it under the terms of the GNU General Public License
  8 +# as published by the Free Software Foundation; either version 2
  9 +# of the License, or (at your option) any later version.
  10 +#
  11 +# This program is distributed in the hope that it will be useful,
  12 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 +# GNU General Public License for more details.
  15 +#
  16 +# You should have received a copy of the GNU General Public License
  17 +# along with this program; if not, write to the Free Software
  18 +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19 +
  20 +import socket, os
  21 +from gnuradio import gr, blocks
  22 +
  23 +class add_const_set_offset(gr.hier_block2):
  24 + def __init__(self, addr, port, device, const):
  25 + self.name = "add_const_set_offset"
  26 + gr.hier_block2.__init__(
  27 + self,
  28 + name = self.name,
  29 + input_signature = gr.io_signature(0, 0, 0),
  30 + output_signature = gr.io_signature(0, 0, 0)
  31 + )
  32 + self.ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  33 + self.ctrl_sock.connect((addr, port))
  34 + self.set_const(device, const)
  35 +
  36 + def set_const(self, device, const):
  37 + self.ctrl_sock.send('%s;%s;%i\n'%(self.name, device, const))
  38 +
  39 +
  40 +class nco_counter_send_conf(gr.hier_block2):
  41 + def __init__(self, addr, port, device, freq_ref, freq_dds, acc_size, offset, pinc_sw, poff_sw):
  42 + self.name = "nco_counter_send_conf"
  43 + gr.hier_block2.__init__(
  44 + self,
  45 + name = self.name,
  46 + input_signature = gr.io_signature(0, 0, 0),
  47 + output_signature = gr.io_signature(0, 0, 0)
  48 + )
  49 + self.ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  50 + self.ctrl_sock.connect((addr, port))
  51 + self.set_nco(device, freq_ref, freq_dds, acc_size, offset, pinc_sw, poff_sw)
  52 +
  53 + def set_nco(self, device, freq_ref, freq_dds, acc_size, offset, pinc_sw, poff_sw):
  54 + self.ctrl_sock.send('%s;%s;%i;%i;%i;%i;%i;%i\n'%(self.name, device, freq_ref, freq_dds, acc_size, offset, pinc_sw, poff_sw))
  55 +
  56 +'''~
  57 +class source_test(gr.hier_block2):
  58 + def __init__(self):
  59 + self.name = "source_test"
  60 + gr.hier_block2.__init__(
  61 + self,
  62 + name = self.name,
  63 + input_signature = gr.io_signature(0, 0, 0),
  64 + output_signature = gr.io_signature(1, 1, gr.sizeof_gr_complex)
  65 + )
  66 + self.data_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  67 + self.data_sock.connect((addr, port))
  68 + self.data_sock.send('%s'%self.name)
  69 + fd = os.dup(self.data_sock.fileno())
  70 + self.connect(blocks.file_descriptor_source(gr.sizeof_gr_complex, fd), self)
  71 +'''
redpitaya/client/redpitaya_gnuradio.pyc
No preview for this file type
redpitaya/client/sourceme.bma
  1 +export GRC_BLOCKS_PATH=.
sdr/fm_radio/fm_radio.py
... ... @@ -3,7 +3,7 @@
3 3 ##################################################
4 4 # GNU Radio Python Flow Graph
5 5 # Title: Fm Radio
6   -# Generated: Sat Apr 8 11:09:28 2017
  6 +# Generated: Tue Apr 11 17:29:18 2017
7 7 ##################################################
8 8  
9 9 if __name__ == '__main__':