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

Работа с файлами и базами данных
Аватара пользователя
dadreamer

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

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

Сообщение dadreamer »

Artem.spb писал(а):
dadreamer писал(а): Нет, конечно, разве ни разу не открывали в нескольких блокнотах один и тот же текстовик?
Открыть файл и писать в него - разные вещи. Не зря офисные проги блокируют доступ к открытым документам
Можно заблокировать доступ к файлу, если очень хочется:
2019-01-20_22-40-26.jpg
Тогда и блокнот будет ругаться при попытке открыть такой файл, и :labview: выдаст ошибку №5 (File already open) при вызове Open/Create/Replace File. Однако это на усмотрение программиста. Office блокирует, да. Но многие другие утилиты нет, например AkelPad или WinHex. В MSVS, если память не изменяет, файл по дефолту тоже не блокируется. Принцип блокировки довольно простой - повторный вызов CreateFile с определенным флагом dwShareMode: запретить чтение и запись - 0, запретить только запись - FILE_SHARE_READ, ничего не запрещать - FILE_SHARE_READ | FILE_SHARE_WRITE. А вообще, как по мне, параллельная работа с файлом из нескольких потоков/процессов - плохая практика, хоть и допустима на уровне файловой системы. Конечно, можно юзать Deny Access или семафоры, но это не от хорошей жизни (например, изначально неудачно выбранная архитектура).
Artem.spb

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

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

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

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

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

Сообщение yakuba26 »

[/quote][/quote]Artem.spb,

Хотел бы задать еще вопрос. Почему когда на управлении светодиода стоит кнопка, эвент выполняется один раз ( кейс эвента привязан к состоянию светодиода ) а когда ставлю константу запись идет без остановки, получается что эвент выполняется с постоянно.
Константу поставил для примера, вместо константы будут приходить биты которыми будет осуществляться управление записью.

Файл в 2013 версии
Вложения
запись в файл.vi
(15.97 КБ) 160 скачиваний
Artem.spb

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

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

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

yakuba26 писал(а):Почему когда на управлении светодиода стоит кнопка, эвент выполняется один раз ( кейс эвента привязан к состоянию светодиода ) а когда ставлю константу запись идет без остановки, получается что эвент выполняется с постоянно.
NO.png
я не знаю, как оно может НЕ работать от контрола.
У вас тут две ОЧЕНЬ большие ошибки.
1) события индикаторов генерируются непрерывно, а не по изменении кнопки, так что они постоянно шпарят независимо, кнопка это или константа. Единственная разница может в значении события. Если кнопка с отскоком, то событие «Т» будет разовым, дальше будут «F»
2) в цикле нет задержки, так что события генерируются НЕПРЕРЫВНО. Примерно с бесконечной скоростью. Конечно, скорость ограничена мощностью процессора, но такие циклы пожирают все доступные ресурсы и их надо избегать. Собственно, посмотрите на значение индикатора "2" и убедитесь сами
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

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

Сообщение yakuba26 »

Artem.spb,
Это все тесты, я пробую. Сейчас зашел в тупик и не знаю как быть :shok: Подскажите пожайлуста, как сделать однократную запись по изменению события или вообще как можно сделать однократную запись ( какие есть варианты ) :help:
я перерыл весь форум и ничего подобного не встретил :suicide:
Artem.spb

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

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

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

yakuba26 писал(а):я перерыл весь форум и ничего подобного не встретил :suicide:
не на форуме готовые решения надо искать, а думалку включать
Два варианта
event.png
.
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

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

Сообщение yakuba26 »

Artem.spb,
Благодарю за помощь :super: :thank:

Вот что получилось, все таки решил отойти от эвента.
Вложения
Регистрация события( с флажком ).vi
(22.77 КБ) 130 скачиваний
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

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

Сообщение yakuba26 »

потенциал программы настолько огромен, что теряешься в ее возможностях и не замечаешь элементарных вещей.
Поэтому и ищу помощи.
Artem.spb

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

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

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

Получилось что-то вроде FGV, но обычно для них используют while loop
yakuba26
junior
junior
Сообщения: 66
Зарегистрирован: 13 дек 2018, 13:55
Версия LabVIEW: 2018
Откуда: Саратов

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

Сообщение yakuba26 »

Artem.spb,
я его буду использовать как подприбор, а он и так будет стоять в while loop
Аватара пользователя
Vasiliy Baev

Activity Gold Bronze
leader
leader
Сообщения: 545
Зарегистрирован: 31 окт 2011, 09:02
Награды: 4
Версия LabVIEW: 2019
Откуда: Санкт-Петербург
Благодарил (а): 8 раз
Поблагодарили: 10 раз
Контактная информация:

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

Сообщение Vasiliy Baev »

Edge Detect, Front Detect, Set Reser (Rset Set), Value change и тп были как раз придуманы для таких вещей.
Вложения
UTIL_Edge_Detect.vi
(10.3 КБ) 120 скачиваний
UTIL_Front_Detect.vi
(9.97 КБ) 125 скачиваний
UTIL_Reset_Set.vi
(14.04 КБ) 130 скачиваний
UTIL_Set_Reset.vi
(13.93 КБ) 136 скачиваний
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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