在 python 中访问 SRI (redhawksdr)
Access SRI in python (redhawksdr)
我正在尝试使用 python 访问 SRI 中的关键字。 python 中没有执行此操作的示例或文档。
我想抓取SRI,检查关键字,如果存在,则复制相应的值。
我认为 SRI 将作为元组复制过来,但可能有 CF 转换,我找不到任何示例。
我该怎么做?
如您所见,您可以在 python 中以与 here.
所示的 HardLimit python 实现相同的方式接收 SRI 对象
data, T, EOS, streamID, sri, sriChanged, inputQueueFlushed = self.port_dataFloat_in.getPacket()
一旦你有了 sri 对象,关键词就是一个列表。让我们看一下 python 沙箱中的示例。我正在使用 REDHAWK 2.0.1 和 SigGen 2.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 对。在 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)
我正在尝试使用 python 访问 SRI 中的关键字。 python 中没有执行此操作的示例或文档。
我想抓取SRI,检查关键字,如果存在,则复制相应的值。
我认为 SRI 将作为元组复制过来,但可能有 CF 转换,我找不到任何示例。
我该怎么做?
如您所见,您可以在 python 中以与 here.
所示的 HardLimit python 实现相同的方式接收 SRI 对象data, T, EOS, streamID, sri, sriChanged, inputQueueFlushed = self.port_dataFloat_in.getPacket()
一旦你有了 sri 对象,关键词就是一个列表。让我们看一下 python 沙箱中的示例。我正在使用 REDHAWK 2.0.1 和 SigGen 2.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 对。在 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)