Чтение из файла
-
- developer
- Сообщения: 261
- Зарегистрирован: 22 дек 2008, 14:07
- Награды: 1
- Версия LabVIEW: 8.5
- Контактная информация:
Чтение из файла
Всем - здраствуите! Одна часть программы записывает в файл данные, вторая - считывает требуемые данные из этого файла. Запись происходит по времени, а считать мне надо только тогда, когда данные в файле изменились. Хотела использовать File Info(OpenG), но непонятно как "ловить" модификацию фаила. Понятно, что по времени, если время модификации больше предыдущего времени, то вызывать VI ReadFile. A где (и как хранить предыдущее время модификации фаила.Вот, что натворила, но не работает как надо(вместо ReadFile - просто для проверки поставила месадж Спасибо!
- Вложения
-
- My_file_info.vi
- (45.23 КБ) 204 скачивания
-
FireFly
- expert
- Сообщения: 1321
- Зарегистрирован: 25 апр 2009, 08:58
- Награды: 2
- Версия LabVIEW: 2014
- Откуда: Санкт-Петербург
- Поблагодарили: 1 раз
Re: Чтение из файла
Возможно так заработает
У меня просто нет VI которая у вас смотрит дату последнего изменения.
Кстати ещё можно смотреть размер файла стандартной функцией, и смотреть не изменился ли он (но это будет работать только в случае если файл не перезаписывается, а только дописывается).
И ещё совет - в каждом цикле делайте задержку, иначе он будет слишком сильно грузить систему. Я однажды не сделал задержку в цикле, создал exe, проверил что всё работает и поставил прогу работать в монтажном участке, но при запуске комп завис, а я был отруган :( проверив у себя на компе выяснил что загруженно 50% проца (одно ядро из двух), поэтому я и не замечал косяка. Теперь никогда не забываю про задержки :)
У меня просто нет VI которая у вас смотрит дату последнего изменения.
Кстати ещё можно смотреть размер файла стандартной функцией, и смотреть не изменился ли он (но это будет работать только в случае если файл не перезаписывается, а только дописывается).
И ещё совет - в каждом цикле делайте задержку, иначе он будет слишком сильно грузить систему. Я однажды не сделал задержку в цикле, создал exe, проверил что всё работает и поставил прогу работать в монтажном участке, но при запуске комп завис, а я был отруган :( проверив у себя на компе выяснил что загруженно 50% проца (одно ядро из двух), поэтому я и не замечал косяка. Теперь никогда не забываю про задержки :)
- Вложения
-
- S1.PNG (10.58 КБ) 5144 просмотра
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Чтение из файла
Проверку тоже надо в цикле делать параллельном или в том же. Иначе она выполнится единожды до или после выполнения цикла.
-
- developer
- Сообщения: 261
- Зарегистрирован: 22 дек 2008, 14:07
- Награды: 1
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Чтение из файла
Спасибо большое! Работает! Никак не привыкну к шифт регистру! И про время как всегда забыла, спасибо!
Вот, ловите FileInfo! Авось когда пригодится! Там еще куча всего полезного(см. на линк)
Вот, ловите FileInfo! Авось когда пригодится! Там еще куча всего полезного(см. на линк)
- Вложения
-
- File Info__ogtk.vi
- (154.57 КБ) 234 скачивания
-
- developer
- Сообщения: 261
- Зарегистрирован: 22 дек 2008, 14:07
- Награды: 1
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Чтение из файла
ДА нет, вроде не единожды выполняется Вот, гляньте Я запустила этот Vi,потом вручную посохраняла фаил , сколько раз сохраняла, столько получала сообщение
- Вложения
-
- My_file_info_work.vi
- (40.15 КБ) 182 скачивания
-
- developer
- Сообщения: 261
- Зарегистрирован: 22 дек 2008, 14:07
- Награды: 1
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Чтение из файла
А вот как бы задержку какую сделать, чтобы не немедленно срабатывал Case, а через доли сек,чтобы не возникло конфликта, если фаил еше перезаписывается, например?
-
FireFly
- expert
- Сообщения: 1321
- Зарегистрирован: 25 апр 2009, 08:58
- Награды: 2
- Версия LabVIEW: 2014
- Откуда: Санкт-Петербург
- Поблагодарили: 1 раз
Re: Чтение из файла
Flat Sequence Structure вам в помощь. В первом "кадре" делайте запись, во втором проверку... Хотя смотря как у вас программа устроена. Синхронизовать процессы можно по разному...
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: Чтение из файла
1) Что за случай когда приходится использовать файл для передачи данных? Почему нельзя передавать данные традиционным способом? Или нужно хранить очень много разных данных? Или это вообще 2 разные экзешки?irena_abr писал(а): Одна часть программы записывает в файл данные, вторая - считывает требуемые данные из этого файла. Запись происходит по времени, а считать мне надо только тогда, когда данные в файле изменились.
2) Если это все таки одна программа и в ней один поток тогда сразу после функции "Запись" вызывать функцию "Чтение" без всяких заморочек и проверок.
Если потоков несколько, то надо воспользоваться палитрой синхронизации (семафор, события..), тогда не будет возникать ситуации одновременного доступа к файлу из разных потоков.
3) Если это 2 разные программы работающие на одном или разных компах с доступом к одному сетевому ресурсу, то в любом случае лучше не полагаться на таймер, а предусмотреть какую-нибудь синхронизацию между ними (TCP/IP например).
-
- developer
- Сообщения: 261
- Зарегистрирован: 22 дек 2008, 14:07
- Награды: 1
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Чтение из файла
Спасибо, что ответили. Программа одна. Взвешивает овощи, которые падают с конвеиера на весы.
Т.к. взвешивание , так сказать, в движении, требуется определенная корректировка.
Вес записывается в фаил через определенныи момент времени. Структура фаила - дата, время, вес в данныи момент. Нужно знать, какои вес прошел через конвейер за смену(их 3 пока)Накапливаюшийся вес - среднее значение собственно взвешенное минус вес самои тары, куда падают овощи, приплюсовываю к этому значению интерполяцию из файла за время работы смены - получаю итоговыи вес за смену. Вот такая передо мнои поставлена задача
Т.к. взвешивание , так сказать, в движении, требуется определенная корректировка.
Вес записывается в фаил через определенныи момент времени. Структура фаила - дата, время, вес в данныи момент. Нужно знать, какои вес прошел через конвейер за смену(их 3 пока)Накапливаюшийся вес - среднее значение собственно взвешенное минус вес самои тары, куда падают овощи, приплюсовываю к этому значению интерполяцию из файла за время работы смены - получаю итоговыи вес за смену. Вот такая передо мнои поставлена задача
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: Чтение из файла
Не совсем понял про интерполяцию с файлом? Какое промежуточное значение нужно найти и зачем?
Потом я все таки не понял зачем прибегать к постоянному считыванию файла после каждого его изменения? Просто помимо текущего взвешивания помнить суммарный: взвесили, получили данные, записали их в файл и параллельно с этим вычислили текущий суммарный вес и т.п. Ведь для этого все необходимые данные известны?!
Ну а если все таки с файлом, то см. пункт 2 предыдущей мессаги.
Потом я все таки не понял зачем прибегать к постоянному считыванию файла после каждого его изменения? Просто помимо текущего взвешивания помнить суммарный: взвесили, получили данные, записали их в файл и параллельно с этим вычислили текущий суммарный вес и т.п. Ведь для этого все необходимые данные известны?!
Ну а если все таки с файлом, то см. пункт 2 предыдущей мессаги.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение