0

DataReader 块应该如何配置为读取浮点数据?我使用 sig_source 和 DataWriter 块成功写入文件。由于我找不到 DataReader 块的描述,我希望它能够读取 DataWriter 块生成的文件。但是,当我尝试读取文件时,我看不到任何数据生成。这是我遵循的程序:

  1. 启动数据写入器
  2. 启动 sig_source
  3. 验证输出到文件(结果 = 成功)
  4. 关掉一切
  5. 启动 DataReader(指向 DataWriter 创建的文件)
  6. 监视器输出端口(结果 = 不存在数据)

我还尝试将一个块附加到 DataReader 的输出,以防 RedHawk 在数据从源流出之前需要一个接收器。这也不起作用。

编辑:我进行了一个额外的实验来测试确定 DataReader 循环参数是否真的是问题所在。在这个实验中,我将 DataReader(指向原始文件)连接到 DataWriter(指向新文件)。两个块的组件属性都根据 Youssef 的帖子。我期待这会生成文件的副本。结果很奇怪。新文件只有 65536 字节,而原始文件要大得多。它似乎与那些 65536 字节匹配。此外,如果我删除新文件并尝试重新运行这些块,则没有输出(即不会再次创建文件)。为了第二次生成新文件,我必须从黑板上删除 DataReader 块并重新加载它。

4

2 回答 2

0

我不确定您运行的是哪个版本的 REDHAWK,但我最近测试了 REDHAWK 核心、IDE 和基本组件的 1.8.4 和 1.9.0 版本中的 DataReader 和 DataWriter 组件。这是我的设置:

波形 1:

  • 具有默认设置的 SigGen,python 实现

  • 具有默认设置的 DataConverter(需要作为 SigGen 输出 Real doubles 和 data Writer 采用浮点数)

  • 具有默认设置和文件名设置的 DataWriter。

我启动并启动该波形并确认文件已写入。

波形 2:

  • 具有以下设置的 DataReader:
    • 复杂:错误
    • InputFile:我的文件位置
    • 循环:真
    • 玩:真

所有其他设置均保留为默认值

我启动波形 2,启动波形并通过绘制端口输出确认数据正在流动。

一般来说,使用 DataReader 时需要注意以下几点。

  1. 将循环属性设置为 true。播放可能发生得太快。请注意,循环属性是一个 execparam 即。它必须在组件进程启动时设置,因此无法在启动波形后或在 IDE 沙箱内设置。设计波形时必须设置。

  2. 如果您使用的是 v1.8 IDE,请尝试绘制输出而不是使用端口监视器作为确认数据流的第二种形式。如果您使用的是 v1.9 IDE,datalist 工具将非常适合这种情况。进行 100 点捕获或连续捕获,它将位于端口上,直到数据点被推出端口并且已收集目标点数或用户按下停止。

  3. 不要忘记将 DataReader 的 play 属性设置为 true 并确保复杂属性设置正确。我相信 complex 默认为 true,而 play 默认为 false。

如果您仍然有问题,请告诉我们。

于 2013-11-18T14:58:43.087 回答
0

DataReader 只发送了 64K 的数据,因为它认为在其第一个 pushPacket 之后发现了 EOF,这似乎是 DataReader 中的一个错误。

要发送大于 64K 的文件,您可以快速更改代码以使其正常工作。在 DataReader.py 文件中 ($SDROOT/dom/components/DataReader/python/DataReader.py)。找到(第 44 行?):

self.EOF = True

在 DataReader_i.initialize() 方法中。这应该是:

self.EOF = False
于 2013-11-22T13:58:12.087 回答