使用Python访问SRI(红鹰软件定义无线电平台)

2024-03-28 09:39:37 发布

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

我试图使用python访问SRI中的关键字。在python中没有这样做的示例或文档。在

我想获取SRI,检查关键字,如果有,复制相应的值。在

我认为SRI将复制为元组,但可能有CF转换,我找不到任何例子。在

我该怎么做?在


Tags: 文档示例关键字例子cf元组sri
2条回答

如您所见,您可以用python接收SRI对象,方法与显示的HardLimit python实现here相同。在

data, T, EOS, streamID, sri, sriChanged, inputQueueFlushed = self.port_dataFloat_in.getPacket()

一旦你有了sri对象,关键字就是一个列表。让我们看看python沙盒中的一个示例。我使用的是redhawk2.0.1和siggen2.0.1,如果设置了属性,它们将输出关键字CHAN_RF和COL_RF。在

>>> 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

关键字作为CF数据类型的列表与SRI一起传递,这些数据类型是string/CORBA::Any pairs。在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)

相关问题 更多 >