Длительная запись данных

Простейшие вопросы в области инженерной разработки
Ответить
Meteor
user
user
Сообщения: 74
Зарегистрирован: 25 окт 2013, 17:37
Версия LabVIEW: 2012

Длительная запись данных

Сообщение Meteor »

Здравствуйте, форумчане!
Заткнулся с простой задачей и поэтому прошу помощи.
Цель программы в течение нескольких часов принимать данные из компорта, декодировать их и "выжимку" (примерно пару десятков байт в секунду) сохранять в текстовом файле.
Прием и декодирование не являются проблемой, затык в сохранении.
Если просто открыть файл и писать в него, то получается не очень хорошо, при этом неважно пишутся ли эти десятки байт каждую секунду, или накапливаются блоками размером в единицы-десятки кБ.
Если же накапливать данные и идти путем открыть файл - записать текстовые данные - закрыть файл, то получается с каждым новым открытием теряю данные записанные До этого открытия;
если же сделать: открыть файл - запросить размер файла - прочитать текст - добавить к прочитанному новый блок - записать текст- закрыть, то на новой записи объем растет не на величину блока, а на сумму чтения и записи, т.е. первый раз записан блок из 8192 Б, на второй записи объем становится не 16384Б, а 24хххБ, на третьей уже под 57кБ и т.д. Ну и такой подход чреват тем, что к концу придется вычитывать уже мегабайтные файлы и это мне не нравится.
Как поступить красиво, качественно и продуктивно?
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5463
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 87 раз

Re: Длительная запись данных

Сообщение IvanLis »

Meteor писал(а): 19 июл 2020, 22:02Заткнулся с простой задачей и поэтому прошу помощи.
Читаете размер файла и устанавливаете курсор в позицию (конец).
Дописываете данные...
Можно хоть Gb записать, т.к. в память ничего из файла не грузится.
1.png
temp.vi
lv2012 save from 2016
(7.25 КБ) 64 скачивания
Только учтите, что в зависимости от FS может использоваться буферизация, именно на уровне FS, по этому файл желательно в конце закрывать :wink:
Meteor
user
user
Сообщения: 74
Зарегистрирован: 25 окт 2013, 17:37
Версия LabVIEW: 2012

Re: Длительная запись данных

Сообщение Meteor »

Спасибо, буду пробовать.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3404
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 173 раза
Контактная информация:

Re: Длительная запись данных

Сообщение Artem.spb »

IvanLis писал(а): 19 июл 2020, 22:20 Читаете размер файла и устанавливаете курсор в позицию (конец).
можно одним действием:
fs2.PNG
fs2.PNG (11.4 КБ) 1187 просмотров
ну и не нужно в цикле перед каждой записью бегать в конец, если в цикле только запись файла
fs.PNG
fs.PNG (10.15 КБ) 1187 просмотров
Meteor
user
user
Сообщения: 74
Зарегистрирован: 25 окт 2013, 17:37
Версия LabVIEW: 2012

Re: Длительная запись данных

Сообщение Meteor »

О, спасибо за такую подсказку.
Файл создается единожды при нажатии кнопки "запись" и имя уникальное при каждом нажатии, так что запись действительно всегда в конец будет.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»