Единоразовая запись в файл, без Event структуры
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Единоразовая запись в файл, без Event структуры
Такая проблема! Как обойтись без Event структуры, что бы произвести запись строки в файл единожды, пока в нее не придет другая строка?
Пока не нашел решения, что бы идти в обход Event структуры.
У меня сейчас стоит селектор который определяет какая строка идет на запись. Можно ли им управлять управлять исходя из состояния светодиода а не кнопки?
P.s Очень нужна помощь в данном вопросе
файл сохранил в 13 версии.
Пока не нашел решения, что бы идти в обход Event структуры.
У меня сейчас стоит селектор который определяет какая строка идет на запись. Можно ли им управлять управлять исходя из состояния светодиода а не кнопки?
P.s Очень нужна помощь в данном вопросе
файл сохранил в 13 версии.
- Вложения
-
- запись в файл.vi
- (12.3 КБ) 175 скачиваний
-
- professor
- Сообщения: 3403
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Единоразовая запись в файл, без Event структуры
1) Тут уже жаловались, что мы отвечаем вопросами на вопрос и удаляемся от темы, но всё же: чем события не угодили?
2) открыть файл на запись и параллельно в ЭТОМ же цикле читать из него - жесть. Как они у вас не подрались?
3) совсем по-хорошему работы с файлами можно вынести в отдельный цикл (отдельно от UI)
4) индикатор можно прочитать через локальную переменную.
А по существу: если очень хочется без событий, используйте старый добрый пулинг
2) открыть файл на запись и параллельно в ЭТОМ же цикле читать из него - жесть. Как они у вас не подрались?
3) совсем по-хорошему работы с файлами можно вынести в отдельный цикл (отдельно от UI)
4) индикатор можно прочитать через локальную переменную.
А по существу: если очень хочется без событий, используйте старый добрый пулинг
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Единоразовая запись в файл, без Event структуры
События срабатывают только при нажатии на кнопку, а как сделать что бы событие выполнялось при изменении значения индикатора с тру на фолс и наоборот?
Тогда события меня устраивают
насчет второго пункта, это я эксперементировал и забыл удалить.
Тогда события меня устраивают
насчет второго пункта, это я эксперементировал и забыл удалить.
-
- professor
- Сообщения: 3403
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Единоразовая запись в файл, без Event структуры
Есть одна извращательная технология.yakuba26 писал(а):События срабатывают только при нажатии на кнопку, а как сделать что бы событие выполнялось при изменении значения индикатора с тру на фолс и наоборот?
Тогда события меня устраивают
Но опять же. индикатор где-то меняется? Там сразу можно и создать событие/команду/что угодно на запись очередной строки лога
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Единоразовая запись в файл, без Event структуры
Обычно используются Notifier, чтобы передать событие из потока в поток. С точки зрения программирования - это самый первый способ. Если требуется гарантированная запись всех событий (в то время, когда одно обрабатывается), то используется очередь (Queue)
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Единоразовая запись в файл, без Event структуры
будет два цикла while, в одном будет выполнятся какая то логика, одним из результатов которой будет индикатор. И вот я хотел в втором цикле при изменении индикатора, проводить одну запись события в файл пока он не изменит своего положения.Artem.spb писал(а):Есть одна извращательная технология.yakuba26 писал(а):События срабатывают только при нажатии на кнопку, а как сделать что бы событие выполнялось при изменении значения индикатора с тру на фолс и наоборот?
Тогда события меня устраивают
Но опять же. индикатор где-то меняется? Там сразу можно и создать событие/команду/что угодно на запись очередной строки лога
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Единоразовая запись в файл, без Event структуры
Можете дать совет как правильно выполнить второй пункт?Artem.spb писал(а):1) Тут уже жаловались, что мы отвечаем вопросами на вопрос и удаляемся от темы, но всё же: чем события не угодили?
2) открыть файл на запись и параллельно в ЭТОМ же цикле читать из него - жесть. Как они у вас не подрались?
3) совсем по-хорошему работы с файлами можно вынести в отдельный цикл (отдельно от UI)
4) индикатор можно прочитать через локальную переменную.
А по существу: если очень хочется без событий, используйте старый добрый пулинг
Правильно осуществить запись а потом и чтение этого файла.
-
- professor
- Сообщения: 3403
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Единоразовая запись в файл, без Event структуры
осуществить запись, а потом и чтение этого файла.yakuba26 писал(а): Можете дать совет как правильно выполнить второй пункт?
Правильно осуществить запись а потом и чтение этого файла.
Это очевидно же.
Основная суть - использовать только один референс на файл и выполнять операции последовательно.
Если операции очень надо разнести в разные циклы, то можно и два раза открыть, но надо использовать что-то типа семафоров, чтобы не лезть в файлы одновременно.
Хотя может система и сама справится, если два потока будут лезть в файл. Надо проверять
-
- professor
- Сообщения: 3403
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Единоразовая запись в файл, без Event структуры
Оказывается, не подерутся.
Проверять параллельную запись лень :)
С одной тсороны странно, с другой вполне логично - два разных референса на файл не должны зависеть друг от друга.Проверять параллельную запись лень :)
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Единоразовая запись в файл, без Event структуры
Нет, конечно, разве ни разу не открывали в нескольких блокнотах один и тот же текстовик? :) Да и вообще, множество системных (и не только) файлов открыты одновременно множеством процессов системы. Параллельная запись также будет работать, не выдаст никакой ошибки, пока refnum/хэндл корректен. ОС использует внутренний механизм блокировок и сериализацию при синхронной записи. Проблема может быть только в Race Conditions в самой программе. Но я думаю автор в курсе, что это такое. А если нет, то рано или поздно с этим столкнётся.Artem.spb писал(а):Оказывается, не подерутся.С одной тсороны странно, с другой вполне логично - два разных референса на файл не должны зависеть друг от друга.
Проверять параллельную запись лень :)
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Единоразовая запись в файл, без Event структуры
Спасибо за помощь я понял, что нужно выполнить было последовательно, хотел уточнить у Вас как сделать правильно!Artem.spb писал(а):осуществить запись, а потом и чтение этого файла.yakuba26 писал(а): Можете дать совет как правильно выполнить второй пункт?
Правильно осуществить запись а потом и чтение этого файла.
Это очевидно же.
Основная суть - использовать только один референс на файл и выполнять операции последовательно.
Если операции очень надо разнести в разные циклы, то можно и два раза открыть, но надо использовать что-то типа семафоров, чтобы не лезть в файлы одновременно.
Хотя может система и сама справится, если два потока будут лезть в файл. Надо проверять
-
- junior
- Сообщения: 66
- Зарегистрирован: 13 дек 2018, 13:55
- Версия LabVIEW: 2018
- Откуда: Саратов
Re: Единоразовая запись в файл, без Event структуры
Еще не столкнулся, но думаю это не за горамиdadreamer писал(а):Нет, конечно, разве ни разу не открывали в нескольких блокнотах один и тот же текстовик? :) Да и вообще, множество системных (и не только) файлов открыты одновременно множеством процессов системы. Параллельная запись также будет работать, не выдаст никакой ошибки, пока refnum/хэндл корректен. ОС использует внутренний механизм блокировок и сериализацию при синхронной записи. Проблема может быть только в Race Conditions в самой программе. Но я думаю автор в курсе, что это такое. А если нет, то рано или поздно с этим столкнётся.Artem.spb писал(а):Оказывается, не подерутся.С одной тсороны странно, с другой вполне логично - два разных референса на файл не должны зависеть друг от друга.
Проверять параллельную запись лень :)
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Единоразовая запись в файл, без Event структуры
Когда освоитесь с языком, советую эту статью (и следующую) разобрать: http://labviewportal.org/viewtopic.php?p=50067#p50067 Но это стоит делать только после прочтения базовой литературы а ля Трэвис "LabVIEW для всех".yakuba26 писал(а):Еще не столкнулся, но думаю это не за горами
-
- professor
- Сообщения: 3403
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Единоразовая запись в файл, без Event структуры
Открыть файл и писать в него - разные вещи. Не зря офисные проги блокируют доступ к открытым документамdadreamer писал(а): Нет, конечно, разве ни разу не открывали в нескольких блокнотах один и тот же текстовик?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 12 Ответы
- 593 Просмотры
-
Последнее сообщение Sergey Puzanov
-
- 6 Ответы
- 229 Просмотры
-
Последнее сообщение Artem.spb
-
- 4 Ответы
- 956 Просмотры
-
Последнее сообщение jane_wild