我想使用python訪問SRI中的關鍵字。在python中沒有這樣做的例子或文檔。在python中訪問SRI(redhawksdr)
我想抓住SRI,檢查關鍵字,如果存在,請複製相應的值。
我認爲SRI將複製爲一個元組,但有可能是CF轉換,我無法找到任何示例。
我會怎麼做呢?
我想使用python訪問SRI中的關鍵字。在python中沒有這樣做的例子或文檔。在python中訪問SRI(redhawksdr)
我想抓住SRI,檢查關鍵字,如果存在,請複製相應的值。
我認爲SRI將複製爲一個元組,但有可能是CF轉換,我無法找到任何示例。
我會怎麼做呢?
正如您可能已經看到的那樣,您可以像使用HardLimit python實現here一樣接收Python中的SRI對象。
數據,T,EOS,流ID,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
關鍵字與SRI一起作爲CF數據類型的列表傳遞,它是字符串/ 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)