2016-06-21 12 views
1

私はPythonを使ってSRIのキーワードにアクセスしようとしています。 Pythonでこれを行うための例やドキュメントはありません。PythonでアクセスするSRI(redhawksdr)

私はSRIを取得し、キーワードをチェックし、もしあれば、対応する値をコピーしたいと思います。

SRIはタプルとしてコピーされると思いますが、おそらくCF変換があり、例が見つかりません。

どうすればよいですか?

答えて

0

これまで見てきたとおり、SRIオブジェクトはPythonで、HardLimitのPython実装と同じ方法で受け取ることができます(here)。

データ、T、EOS、streamIDで、スリランカ、sriChanged、inputQueueFlushed = self.port_dataFloat_in.getPacket()

あなたはSRIオブジェクトを作成したら、キーワードがリストされています。 pythonのサンドボックスの例を見てみましょう。私はプロパティが設定されている場合、キーワードCHAN_RFとCOL_RFを出力するREDHAWK 2.0.1とSigGen 2.0.1を使用しています。

 
>>> from ossie.utils import sb 
>>> src = sb.launch('rh.SigGen') 
>>> src.chan_rf = 1e6 
>>> src.col_rf = 1e3 
sink = sb.DataSink() 
>>> src.connect(sink, usesPortName="dataFloat_out") 
>>> sb.start() 
>>> sb.stop() 
>>> sri = sink.sri() 
>>> sri.keywords 
[ossie.cf.CF.DataType(id='CHAN_RF', value=CORBA.Any(CORBA.TC_double, 1000000.0)), ossie.cf.CF.DataType(id='COL_RF', value=CORBA.Any(CORBA.TC_double, 1000.0))] 
>>> sri.keywords[0].id 
'CHAN_RF' 
>>> sri.keywords[0].value 
CORBA.Any(CORBA.TC_double, 1000000.0) 
>>> sri.keywords[0].value.value() 
1000000.0 
0

キーワードは、SRIでstring/CORBA :: AnyのペアであるCF DataTypのリストとして渡されます。 Pythonでは、キーワードは次のようなものを使ってアクセスできます:

from omniORB import any 
packet = self.port_myPortName.getPacket() # note that the return value is a little different for REDHAWK versions < 2.0 
if packet.dataBuffer is None: 
    return NOOP 
for keyword in packet.SRI.keywords: 
    if "keywordOfInterest" == keyword.id: 
     myValue = any.from_any(keyword.value) 
関連する問題