我正在尝试文档的chapter 5中的Waveform示例,但是我没有看到Siggen端口或硬限制端口的任何输出。我将频率设置为50 MHz并将siggen的输出端口连接到hardlimit的输入端口。我试图从本地域管理器运行它,它似乎正确启动。但是,当我选择Plot Port Data时,我只得到一个空图。在Domain Manager控制台上,我在启动波形后立即看到了这一点:
INFO:ApplicationFactory_impl - Done creating application DCE:a81037d5-98e5-4e80-9791-0364ec62018a:testWaveform_339_175951424_1 testWaveform_339_175951424
INFO:DomainManager_impl - Uninstalling application DCE:a81037d5-98e5-4e80-9791-0364ec62018a
立即卸载应用程序是正常的,还是我只是误解?
答案 0 :(得分:0)
使用REDHAWK 1.9.0从本地域启动testWaveform时,如果域管理器具有默认调试级别,则以下输出是正常的。
信息:DomainManager - 启动域管理器 信息:DomainManager - 启动ORB! 信息:DomainManager_impl - 安装应用程序/waveforms/testWaveform/testWaveform.sad.xml 信息:ApplicationFactory_impl - 完成创建应用程序DCE:885f9cdf-fcdd-41a6-9cfd-a0da8289eef5:testWaveform_340_084417030_1 testWaveform_340_084417030 信息:DomainManager_impl - 卸载应用程序DCE:885f9cdf-fcdd-41a6-9cfd-a0da8289eef5
确保已启动波形。这可以通过单击顶部工具栏上的绿色“开始波形”按钮,右键单击SCA资源管理器视图中的活动域中的波形并选择“开始”或右键单击SCA Explorer中的每个单独组件来完成。或波形图并选择开始。一旦组件启动,它将在块的上部发出绿光。
如果这不起作用,则以下调试步骤可帮助您跟踪此问题以及将来的问题。
Run&在沙箱而不是域中绘制组件。如果问题出在域/设备管理器配置中或组件内,这将有助于缩小范围。
不是绘图,而是使用快照,数据列表或监控端口工具确认数据正在流经组件。如果流经组件的数据可能与绘图工具不兼容,则此方法很有用。 (这不应该是你的情况,因为你专门使用Hard limit& Siggen,它们都是BulkIO并且与绘图工具兼容)
打开域和设备管理器的调试。启动域时,有一些下拉菜单可以选择域和设备管理器从Trace到Fatal输出的调试级别。如果从命令行运行nodeBooter,则可以使用标志“-debug”来设置调试输出级别。
打开组件和设备的调试开关。有关如何执行此操作的详细信息,请参阅此堆栈溢出帖子。 How to log at a debug or trace level for a component that is part of a Waveform
这些下一个调试步骤稍微高级一些,主要用于调试omniORB相关问题。
Tracing level level 0 - critical errors only level 1 - informational messages only level 2 - configuration information and warnings level 5 - the above plus report server thread creation and communication socket shutdown level 10 - the above plus execution trace messages level 25 - output trace message per send or receive giop message level 30 - dump up to 128 bytes of a giop message level 40 - dump the complete giop message Valid values = (n >= 0)
希望您现在拥有进一步调试问题的工具!如果仍然无法使绘图工作,请使用其他详细信息和调试输出更新您的帖子。如果您确实需要绘图,请使用解决方案更新您的帖子,以防其他人遇到类似问题。
答案 1 :(得分:0)
仔细检查以确保在波形启动后通过选择工具栏中的绿色播放按钮启动波形。
如果这不起作用,请在python中尝试以下内容(假设您运行的是1.9版):
from ossie.utils import sb
gen = sb.launch('SigGen')
limit = sb.launch('HardLimit')
sink = sb.DataSink()
gen.connect(limit)
limit.connect(sink)
sb.start()
data = sink.getData()
此时,如果“data”变量包含长数组,则表示组件正常工作。然后,您可以通过以下内容继续您的python会话来绘制python中的数据(需要安装matplotlib和PyQt4):
plot = sb.LinePlot()
limit.connect(plot)
plot.start()
至于问题的第二部分,当启动Waveform时,它实际上是从XML文件创建一个Application Factory实例,而后者又可以创建一个或多个Application实例。然后,当不再需要Application Factory时,将卸载它。通过IDE启动时,在卸载之前,只会从Application Factory创建一个Application。有关应用程序和应用程序的更多信息可以在Chapter 11 of the REDHAWK Manual.
中找到