0

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

   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

立即卸载应用程序是否正常,还是我只是误解?

4

2 回答 2

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

于 2013-12-09T20:44:14.420 回答
0

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

INFO:DomainManager - 启动域管理器 INFO:DomainManager - 启动 ORB!INFO:DomainManager_impl - 安装应用程序 /waveforms/testWaveform/testWaveform.sad.xml INFO:ApplicationFactory_impl - 完成创建应用程序 DCE:885f9cdf-fcdd-41a6-9cfd-a0da8289eef5:testWaveform_340_084417030_1 testWaveform_340_084417030 DCFO:DomainManager_impl:Ecdf-安装finstall -9cfd-a0da8289eef5

确保您已启动波形。这可以通过单击顶部工具栏上的绿色“启动波形”按钮、右键单击 SCA Explorer 视图中活动域中的波形并选择“开始”或右键单击 SCA Explorer 中的每个单独组件来完成或波形图并选择开始。组件启动后,块的上部会发出绿光。

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

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

  • 使用快照、数据列表或监控端口工具来确认数据正在流经组件,而不是绘图。如果流经组件的数据可能不是与绘图工具兼容的类型,这将很有帮助。(这对您来说不应该是这种情况,因为您专门使用硬限制和 Siggen,它们既是 BulkIO 又与绘图工具兼容)

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

  • 在您的组件和设备上打开调试。有关如何执行此操作的详细信息,请参阅此堆栈溢出帖子。 如何在调试或跟踪级别记录作为波形一部分的组件

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

  • REDHAWK 大量使用omniORB,并且有自己的调试标志和工具集。有关功能的完整列表,请参阅 omniORB 文档 ( http://omniorb.sourceforge.net/docs.html )。您可以通过添加“traceLevel = X”在 /etc/omniORB.cfg 文件中打开 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 包中找到它。

希望您现在拥有进一步调试问题的工具!如果您仍然无法使绘图工作,请使用其他详细信息和调试输出更新您的帖子。如果您确实开始工作,请使用解决方案更新您的帖子,以防其他人遇到类似问题。

于 2013-12-09T17:17:22.417 回答