2013-11-13 3 views
0

Как должен быть сконфигурирован блок данных DataReader для чтения в поплавковых данных? Я использовал sig_source и блок DataWriter для успешной записи в файл. Поскольку я не могу найти описание блока DataReader, я ожидаю, что он сможет читать файл, сгенерированный блоком DataWriter. Однако, когда я пытаюсь прочитать файл, я не вижу никаких данных. Вот процедура я следовал:RedHAWK DataReader не выводит данные

  1. Start DataWriter
  2. Start sig_source
  3. Проверьте вывод в файл (Result = УСПЕХ)
  4. Выключите все
  5. Start DataReader (указывает на файл, созданный DataWriter) не
  6. выходной порт монитора (Result = нет данных присутствует)

Я также попытался привязать блок к выходу DataReader в случае, если RedHawk требует раковины перед потоками данных из источника. Это тоже не сработало.

EDIT: Я провел дополнительный эксперимент, чтобы проверить, действительно ли параметр цикла DataReader является проблемой. В этом эксперименте я подключил DataReader (указывающий на исходный файл) к DataWriter (указывающий на новый файл). Свойства компонента для обоих блоков были за сообщение Юсефа. Я ожидал, что это создаст копию файла. Результаты были странными. Новый файл был всего 65536 байт, а оригинал был намного больше. Кажется, он соответствует этим 65536 байтам. Кроме того, если я удалю новый файл и попытаюсь перезапустить блоки, нет выхода (т. Е. Файл не будет создан снова). Чтобы создать новый файл во второй раз, мне нужно удалить блок DataReader с доски и перезагрузить его.

ответ

0

Я не знаю, какую версию REDHAWK вы используете, но недавно я тестировал компоненты DataReader и DataWriter из версий 1.8.4 и 1.9.0 ядра REDHAWK, IDE, & Основные компоненты. Здесь была моя установка:

Waveform 1:

  • Siggen с настройками по умолчанию, реализация питон

  • DataConverter с настройками по умолчанию (необходимы как Siggen выводит реальные двойники и данные Писатель берет в плотах)

  • DataWriter с настройками по умолчанию & набор названий файлов.

Я запустил и начал эту форму сигнала и подтвердил, что файл был записан.

Waveform 2:

  • DataReader со следующими параметрами:
    • комплекс: ложные
    • InputFile: Мое местоположение файла
    • петля: правда
    • игра: истинный

Все остальные настройки были оставлены по умолчанию

Я запустил Waveform 2, запустил форму волны, и подтвержденные данные протекали по графику вывода порта.

В общем, вот пара вещей, которые нужно учитывать при использовании DataReader.

  1. Установка свойства loop в true. Возможно, воспроизведение может происходить слишком быстро. Обратите внимание, что свойство loop является execparam ie. он должен быть установлен, когда процесс компонента запущен, поэтому он не может быть установлен после запуска осциллограммы или в изолированной песочнице. Он должен быть установлен при разработке формы волны.

  2. Если вы используете IDE v1.8, попробуйте построить вывод, а не использовать монитор порта в качестве второй формы подтверждающего потока данных. Если вы используете IDE v1.9, инструмент datalist идеально подходит для этой ситуации. Сделайте 100-точечный захват или непрерывный захват, и он будет сидеть на порту, пока точки данных не будут вытолкнут из порта, а целевое количество точек не будет собрано или пользователь не остановит.

  3. Не забудьте установить для свойства воспроизведения DataReader значение true и убедиться, что свойство complex установлено правильно. Я считаю, что для стандартных значений по умолчанию значение true и значение по умолчанию - false.

Сообщите нам, если у вас остались проблемы.

+0

Благодарим за отзыв. Я добавил дополнительную информацию на свой пост. Я не считаю, что это параметр цикла, и это действительно единственное отличие в наших тестах. – user2988280

0

DataReader отправляет только 64 Кбайт данных, так как считает, что он нашел EOF после первого pushPacket, который, как представляется, является ошибкой в ​​DataReader.

Чтобы отправить файл размером более 64 КБ, вы можете быстро скопировать код, чтобы заставить работу работать. В файле DataReader.py ($ SDROOT/dom/components/DataReader/python/DataReader.py). Найдите (строка 44?):

self.EOF = True 

в методе DataReader_i.initialize(). Это должно быть:

self.EOF = False 
Смежные вопросы