1

我在更改payloadmodGNURadio 中的变量时遇到问题。我正在远程运行 GNURadio 并在运行时更改变量,这由 XMLRPC Server 块支持。

首先,我可以使用以下 XML 的变体远程轻松地更改运行时场景中的freqpacketlenbandwidthipaddressgain等变量:(确保set_在每个变量名称之前指定)

<?xml version="1.0"?>
<methodCall><methodName>set_bandwidth</methodName><params><param><value><int>200000</int></value></param></params></methodCall>

但是,我遇到了set_payloadmod变量问题。

在 gnuradio-companion 中,我设置了以下变量:

id=payloadmod
value=digital.constellation_qpsk()

我发送以下 XML 来更改payloadmod变量。

<?xml version="1.0"?>
<methodCall><methodName>set_payloadmod</methodName><params><param><value><string>digital.constellation_bpsk()</string></value></param></params></methodCall>

我收到以下错误。

<?xml version='1.0'?>
<methodResponse>
<fault>
<value><struct>
<member>
<name>faultCode</name>
<value><int>1</int></value>
</member>
<member>
<name>faultString</name>
<value><string>&lt;type 'exceptions.AttributeError'&gt;:'str' object has no attribute 'bits_per_symbol'</string></value>
</member>
</struct></value>
</fault>
</methodResponse>

它不喜欢 XML 字符串标记。我尝试将 XML 标记更改为以下内容,但未成功:

<int>digital.constellation_bpsk()</int>
<value>digital.constellation_bpsk()</value>
<any>digital.constellation_bpsk()</any>

在 gnuradio-companion 中,我还尝试创建两个变量,如下所示:

id=payloadmodfrnt
value=‘digital.constellation_qpsk()’

id=payloadmod
value=eval(str(payloadmodfrnt).replace("'",""))

eval(str(……).replace("'","")in payloadmod 变量将从使用以下 XML 传入的 payloadmodfrnt 变量字符串中删除单引号:

<?xml version="1.0"?>
<methodCall><methodName>set_payloadmodfrnt</methodName><params><param><value><string>digital.constellation_bpsk()</string></value></param></params></methodCall>

payloadmodfrnt和中的变量都会发生变化payloadmod(可在 GUI 中查看)。但是,payloadmod 变量不会更改为 bpsk。它将继续传输 qpsk 而不是 bpsk(我可以看到接收器上的星座没有改变)。

返回/输入或需要按下某些东西。基本上需要踢出有效载荷变量或使其改变。或者(最简单的选项),我需要正确的 XML 标签来正确更改 payloadmod 变量?

4

0 回答 0