我在更改GNURadio中的payloadmod
变量时遇到问题。我正在远程运行GNURadio并在运行时更改变量,这是XMLRPC服务器块支持的。
首先,我可以轻松地远程更改运行时方案中的freq
,packetlen
,bandwidth
,ipaddress
,gain
等变量使用以下XML的变体:(确保在每个变量名称之前指定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><type 'exceptions.AttributeError'>:'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("'",""))
payloadmod变量中的eval(str(……).replace("'","")
将从使用以下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变量吗?