Redhawk波形示例没有Plot输出



我正在尝试文档第5章中的波形示例,但我没有看到Siggen端口或硬限制端口的任何输出。我将频率设置为50 MHz,并将Siggen的输出端口连接到硬限制的输入端口。我正在尝试从本地域管理器运行它,它似乎启动正确。但是,当我选择绘图端口数据时,我只得到一个空的绘图。在域管理器控制台上,我在启动波形后看到了这一点:

   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

它立即卸载应用程序是正常的吗?还是我只是误解了?

当使用REDHAWK 1.9.0从本地域启动testWaveform时,当域管理器具有默认调试级别时,以下输出是正常的。

信息:DomainManager-正在启动域管理器信息:DomainManager-正在启动ORB!信息:DomainManager_impl-正在安装应用程序/v波形/testWaveform/testWaverform.sad.xml信息:ApplicationFactory_impl-完成创建应用程序DCE:885f9cdf-fcdd-41a6-9cfd-a0da8289eef5:testWaveform_340_084417030_1 testWaveform _340_084517030信息:DomainManager_impl-卸载应用程序DCE:885f9cdf-fcdd-41a6-9cfd-a0da8289eef5

请确保您已启动波形。这可以通过单击顶部工具栏上的绿色"启动波形"按钮,在SCA资源管理器视图中右键单击活动域中的波形并选择"启动",或者右键单击SCA资源管理者或波形图中的每个单独组件并选择启动来完成。一旦组件启动,它将在块的上部显示绿色辉光。

如果这不起作用,以下调试步骤可能会帮助您跟踪此问题以及将来的问题。

  • 运行&在沙盒中而不是在域中绘制组件。如果问题出现在域/设备管理器配置中或组件中,这将有助于缩小范围。

  • 使用快照、数据列表或监视器端口工具确认数据在组件中流动,而不是绘图。如果流经零部件的数据类型可能与打印工具不兼容,这将非常有用。(这不应该是你的情况,因为你是专门使用硬限制和Siggen,这是BulkIO和兼容的绘图工具)

  • 打开域和设备管理器上的调试。启动域时,有下拉菜单可选择域和设备管理器输出的调试级别,从"跟踪"到"致命"。如果从命令行运行nodeBooter,则可以使用标志"-debug"来设置调试输出级别。

  • 打开组件和设备的调试。有关如何做到这一点的详细信息,请参阅这篇堆栈溢出文章。如何在调试或跟踪级别记录作为波形一部分的组件

接下来的调试步骤稍微高级一些,主要用于调试omniORB相关的问题。

  • omniORB被REDHAWK大量使用,并且有自己的一组调试标志和工具。有关功能的完整列表,请参阅omniORB文档(http://omniorb.sourceforge.net/docs.html)。您可以在/etc/omniORB.cfg文件中添加"traceLevel=X"来打开omniORB调试级别,其中X是跟踪级别,如下所述:
跟踪级别级别0-仅严重错误级别1-仅限信息性消息级别2-配置信息和警告级别5-以上加上报表服务器线程创建和通信插座关闭级别10-以上加上执行跟踪消息级别25-每次发送或接收giop消息都输出跟踪消息级别30-转储最多128字节的giop消息40级-转储完整的giop消息有效值=(n>=0)
  • 如果从omniORB输出或REDHAWK IDE中给定IOR,则可以使用命令行工具catior.omni将IOR解码为IP地址/Unix管道位置。如果您没有安装catior.omni,它可以在Epel存储库中的omniORB-utils包中找到

希望您现在有了进一步调试问题的工具!如果您仍然无法使打印工作,请使用其他详细信息更新您的文章并调试输出。如果你真的开始打印了,用解决方案更新你的帖子,以防其他人有类似的问题。

在Waveform启动后,双击工具栏中的绿色播放按钮,确保启动Waveform。

如果这不起作用,请在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文件创建一个应用程序工厂实例,而XML文件又可以创建一个或多个应用程序实例。然后,当不再需要应用程序工厂时,它将被卸载。通过IDE启动时,在卸载应用程序之前,仅从应用程序工厂创建一个应用程序。有关应用程序和应用程序工厂的更多信息,请参阅REDHAWK手册第11章。

最新更新