Единоразовая запись в файл, без Event структуры

Работа с файлами и базами данных
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

Единоразовая запись в файл, без Event структуры

Сообщение yakuba26 »

Такая проблема! Как обойтись без Event структуры, что бы произвести запись строки в файл единожды, пока в нее не придет другая строка?
Пока не нашел решения, что бы идти в обход Event структуры.
У меня сейчас стоит селектор который определяет какая строка идет на запись. Можно ли им управлять управлять исходя из состояния светодиода а не кнопки?

P.s Очень нужна помощь в данном вопросе :help: :help: :help: :help: :help: :help: :suicide:

файл сохранил в 13 версии.
Вложения
запись в файл.vi
(12.3 КБ) 174 скачивания
Artem.spb

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

Re: Единоразовая запись в файл, без Event структуры

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

1) Тут уже жаловались, что мы отвечаем вопросами на вопрос и удаляемся от темы, но всё же: чем события не угодили?

2) открыть файл на запись и параллельно в ЭТОМ же цикле читать из него - жесть. Как они у вас не подрались?
3) совсем по-хорошему работы с файлами можно вынести в отдельный цикл (отдельно от UI)
4) индикатор можно прочитать через локальную переменную.

А по существу: если очень хочется без событий, используйте старый добрый пулинг
txt.png
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

Re: Единоразовая запись в файл, без Event структуры

Сообщение yakuba26 »

События срабатывают только при нажатии на кнопку, а как сделать что бы событие выполнялось при изменении значения индикатора с тру на фолс и наоборот? :dntknw:
Тогда события меня устраивают :super:

насчет второго пункта, это я эксперементировал и забыл удалить. :crazy:
Artem.spb

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

Re: Единоразовая запись в файл, без Event структуры

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

yakuba26 писал(а):События срабатывают только при нажатии на кнопку, а как сделать что бы событие выполнялось при изменении значения индикатора с тру на фолс и наоборот? :dntknw:
Тогда события меня устраивают :super:
Есть одна извращательная технология.
Но опять же. индикатор где-то меняется? Там сразу можно и создать событие/команду/что угодно на запись очередной строки лога
valsig.png
valsig.png (18.43 КБ) 4212 просмотров
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Единоразовая запись в файл, без Event структуры

Сообщение Borjomy_1 »

Обычно используются Notifier, чтобы передать событие из потока в поток. С точки зрения программирования - это самый первый способ. Если требуется гарантированная запись всех событий (в то время, когда одно обрабатывается), то используется очередь (Queue)
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

Re: Единоразовая запись в файл, без Event структуры

Сообщение yakuba26 »

Artem.spb писал(а):
yakuba26 писал(а):События срабатывают только при нажатии на кнопку, а как сделать что бы событие выполнялось при изменении значения индикатора с тру на фолс и наоборот? :dntknw:
Тогда события меня устраивают :super:
Есть одна извращательная технология.
Но опять же. индикатор где-то меняется? Там сразу можно и создать событие/команду/что угодно на запись очередной строки лога
valsig.png
будет два цикла while, в одном будет выполнятся какая то логика, одним из результатов которой будет индикатор. И вот я хотел в втором цикле при изменении индикатора, проводить одну запись события в файл пока он не изменит своего положения.
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

Re: Единоразовая запись в файл, без Event структуры

Сообщение yakuba26 »

Благодарю за помощь :super: :drink: :thank: Все работает как и задумал :dance:
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

Re: Единоразовая запись в файл, без Event структуры

Сообщение yakuba26 »

Artem.spb писал(а):1) Тут уже жаловались, что мы отвечаем вопросами на вопрос и удаляемся от темы, но всё же: чем события не угодили?

2) открыть файл на запись и параллельно в ЭТОМ же цикле читать из него - жесть. Как они у вас не подрались?
3) совсем по-хорошему работы с файлами можно вынести в отдельный цикл (отдельно от UI)
4) индикатор можно прочитать через локальную переменную.

А по существу: если очень хочется без событий, используйте старый добрый пулинг
txt.png
Можете дать совет как правильно выполнить второй пункт? :think:
Правильно осуществить запись а потом и чтение этого файла.
Artem.spb

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

Re: Единоразовая запись в файл, без Event структуры

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

yakuba26 писал(а): Можете дать совет как правильно выполнить второй пункт? :think:
Правильно осуществить запись а потом и чтение этого файла.
осуществить запись, а потом и чтение этого файла.
Это очевидно же.
fileIO.png
Основная суть - использовать только один референс на файл и выполнять операции последовательно.
Если операции очень надо разнести в разные циклы, то можно и два раза открыть, но надо использовать что-то типа семафоров, чтобы не лезть в файлы одновременно.
Хотя может система и сама справится, если два потока будут лезть в файл. Надо проверять
Artem.spb

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

Re: Единоразовая запись в файл, без Event структуры

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

Оказывается, не подерутся.
fileIO2.png
С одной тсороны странно, с другой вполне логично - два разных референса на файл не должны зависеть друг от друга.
Проверять параллельную запись лень :)
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Единоразовая запись в файл, без Event структуры

Сообщение dadreamer »

Artem.spb писал(а):Оказывается, не подерутся.
fileIO2.png
С одной тсороны странно, с другой вполне логично - два разных референса на файл не должны зависеть друг от друга.
Проверять параллельную запись лень :)
Нет, конечно, разве ни разу не открывали в нескольких блокнотах один и тот же текстовик? :) Да и вообще, множество системных (и не только) файлов открыты одновременно множеством процессов системы. Параллельная запись также будет работать, :labview: не выдаст никакой ошибки, пока refnum/хэндл корректен. ОС использует внутренний механизм блокировок и сериализацию при синхронной записи. Проблема может быть только в Race Conditions в самой программе. Но я думаю автор в курсе, что это такое. А если нет, то рано или поздно с этим столкнётся. :wink:
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

Re: Единоразовая запись в файл, без Event структуры

Сообщение yakuba26 »

Artem.spb писал(а):
yakuba26 писал(а): Можете дать совет как правильно выполнить второй пункт? :think:
Правильно осуществить запись а потом и чтение этого файла.
осуществить запись, а потом и чтение этого файла.
Это очевидно же.
fileIO.png
Основная суть - использовать только один референс на файл и выполнять операции последовательно.
Если операции очень надо разнести в разные циклы, то можно и два раза открыть, но надо использовать что-то типа семафоров, чтобы не лезть в файлы одновременно.
Хотя может система и сама справится, если два потока будут лезть в файл. Надо проверять
Спасибо за помощь :super: :drink: я понял, что нужно выполнить было последовательно, хотел уточнить у Вас как сделать правильно!
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

Re: Единоразовая запись в файл, без Event структуры

Сообщение yakuba26 »

dadreamer писал(а):
Artem.spb писал(а):Оказывается, не подерутся.
fileIO2.png
С одной тсороны странно, с другой вполне логично - два разных референса на файл не должны зависеть друг от друга.
Проверять параллельную запись лень :)
Нет, конечно, разве ни разу не открывали в нескольких блокнотах один и тот же текстовик? :) Да и вообще, множество системных (и не только) файлов открыты одновременно множеством процессов системы. Параллельная запись также будет работать, :labview: не выдаст никакой ошибки, пока refnum/хэндл корректен. ОС использует внутренний механизм блокировок и сериализацию при синхронной записи. Проблема может быть только в Race Conditions в самой программе. Но я думаю автор в курсе, что это такое. А если нет, то рано или поздно с этим столкнётся. :wink:
Еще не столкнулся, но думаю это не за горами :crazy: :think:
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Единоразовая запись в файл, без Event структуры

Сообщение dadreamer »

yakuba26 писал(а):Еще не столкнулся, но думаю это не за горами :crazy: :think:
Когда освоитесь с языком, советую эту статью (и следующую) разобрать: http://labviewportal.org/viewtopic.php?p=50067#p50067 Но это стоит делать только после прочтения базовой литературы а ля Трэвис "LabVIEW для всех".
Artem.spb

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

Re: Единоразовая запись в файл, без Event структуры

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

dadreamer писал(а): Нет, конечно, разве ни разу не открывали в нескольких блокнотах один и тот же текстовик?
Открыть файл и писать в него - разные вещи. Не зря офисные проги блокируют доступ к открытым документам
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Сохранение данных»