當腳本退出時,「createApplication」有意清除,但有兩種方法可以解決它。
最簡單的方法是在腳本的末尾添加一個while循環。只要腳本正在運行,這將保持波形運行,並且您可以通過運行腳本的終端中的Ctrl-C來停止它。根據您的原始腳本,它將如下所示:
#! /usr/local/bin/python
import time
from ossie.utils import redhawk
#Start a new domain and device managers
domain = redhawk.kickDomain()
time.sleep(1)
wave = domain.createApplication("/waveforms/Test/Test.sad.xml")
wave.start()
while True:
time.sleep(1)
這不建議用於除測試以外的其他任何操作。除了在腳本結束時關閉波形外,上面的代碼還會停止域和設備管理器。對於在啓動時啓動波形的系統,通常會通過/etc/init.d腳本啓動域和設備管理器,如下所示:
nodeBooter -D --daemon
nodeBooter -d /nodes/DevMgr_[hostname]/DeviceManager.dcd.xml --daemon
然後在你的腳本,你會做這樣的事情:
from ossie.utils import redhawk
from ossie.cf import CF
domain = redhawk.Domain('REDHAWK_DEV')
try:
domain.installApplication("/waveforms/Test/Test.sad.xml")
except CF.DomainManager.ApplicationAlreadyInstalled:
print "Already Installed, skipping."
factories = domain._get_applicationFactories()
#if multiple applications are installed you can look for the correct factory
# using factories[i]._get_name() == 'Test'
myFactory = factories[0]
myFactory.create('Test_[UNIQUEID]', [], [])