payloadmod
GNURadio で変数を変更する際に問題があります。私は GNURadio をリモートで実行し、実行時に変数を変更しています。これは、XMLRPC サーバー ブロックによってサポートされています。
まず、次の XML のバリエーションを使用して、ランタイム シナリオの変数をリモートで簡単に変更できます(各変数名の前に必ず指定してfreq
ください) 。packetlen
bandwidth
ipaddress
gain
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 では、次のように 2 つの変数も作成してみました。
id=payloadmodfrnt
value=‘digital.constellation_qpsk()’
id=payloadmod
value=eval(str(payloadmodfrnt).replace("'",""))
in 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 に変更されません。bpsk ではなく qpsk を送信し続けます (受信機でコンスタレーションが変更されていないことがわかります)。
戻る/入力するか、何かを押す必要があります。基本的に、ペイロード変数をキックするか、何かを変更する必要があります。または (最も単純なオプション)、payloadmod 変数を正しく変更するには、適切な XML タグが必要ですか?