更改变量`payloadmod=数字星座()`在运行时在GNU无线电中使用XMLRPC服务器块supp

2024-05-23 14:27:05 发布

您现在位置:Python中文网/ 问答频道 /正文

更改GNURadio中的payloadmod变量时遇到问题。我远程运行GNURadio并在运行时更改变量,这是XMLRPC服务器块支持的。在

首先,我可以轻松地在运行时场景中使用以下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中,我有以下变量集:

^{pr2}$

我发送以下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("'",""))

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>

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

Return/enter或需要按什么。基本上payload变量需要被踢或者其他什么来改变它。或者(最简单的选择),我需要正确的XML标记来正确地更改payloadmod变量?在


Tags: stringparamvaluexmlparamsintsetconstellation