Как преобразовать время

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

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: Как преобразовать время

Сообщение FireFly »

Denmal писал(а): хотя тот факт, что на выход необходимо выделять нужную строчку, не совсем удобен, по запарке можно забыть выделить строку или не ту выделить...
А вот тут вопрос к вам. Какой алгоритм определения уходящего с работы? Всегда ли это последняя строчка? Или могут быть несколько "незакрытых" строчек? Т.е. несколько человек пришли на работу, это отметилось, и вот они начинают уходить, как понять, какая строчка кому принадлежит? Т.е. иными словами, сколько человек могут отдновременно находится на работе?
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Denmal

Activity
advanced
advanced
Сообщения: 163
Зарегистрирован: 02 окт 2009, 07:36
Награды: 1
Версия LabVIEW: 8.6
Откуда: Израиль
Контактная информация:

Re: Как преобразовать время

Сообщение Denmal »

я очень попрошу не обращаться ко мне на "ВЫ" , ещё как то рановато, по моему :D .
Дорогой мой друг, должен внести ясность в данный вопрос : программа только для одного пользователя (то есть меня-любимого :wink: ) то есть если я зашёл на работу, то ну ни как не могу, что б из неё не выйти... этот момент наверное тебя и смутил. как сказал eg (Женька по-нашему), что программу можно написать гораздо проще, но вот проблемма, что я начал отталкиваться от уже имевшегося шаблона (который, кстати, был написан не без вашей помощи)
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: Как преобразовать время

Сообщение FireFly »

Тогда, во-первых, вместо двух кнопок IN и OUT нужно создать одну - которая в ненажатом состоянии называется IN, а в нажатом называется OUT
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Denmal

Activity
advanced
advanced
Сообщения: 163
Зарегистрирован: 02 окт 2009, 07:36
Награды: 1
Версия LabVIEW: 8.6
Откуда: Израиль
Контактная информация:

Re: Как преобразовать время

Сообщение Denmal »

вот это я и хотел сделать, точнее переделать, но , если чесно, побоялся, особенно после стольких домоганий к вам. но думаю попробовать стоит... рискнуть :wink:
Аватара пользователя
Viktor

Activity Professionalism Tutorials Black
expert
expert
Сообщения: 1408
Зарегистрирован: 23 мар 2008, 10:56
Награды: 4
Версия LabVIEW: 2020
Откуда: Санкт-Петербург
Благодарил (а): 17 раз
Поблагодарили: 3 раза
Контактная информация:

Re: Как преобразовать время

Сообщение Viktor »

Попробовал упростить ...
hour.zip
(11.31 КБ) 141 скачивание
Доделаешь дальше :bye:
Denmal

Activity
advanced
advanced
Сообщения: 163
Зарегистрирован: 02 окт 2009, 07:36
Награды: 1
Версия LabVIEW: 8.6
Откуда: Израиль
Контактная информация:

Re: Как преобразовать время

Сообщение Denmal »

спасибо, действительно упращено, действительно, до максимума :super:
только есть маленький нюанс - если я нажимаю вход, а затем закрываю програму, то выход я уже не могу ввести. может с помощью переключателя невозможно решить эту проблему, а только предъидущий вариант (с кнопками)?
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: Как преобразовать время

Сообщение FireFly »

Нужно просто добавить во время считывания файла проверку на "закрытость" последней строчки, и в зависимости от этого задавать состояние кнопки.
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Denmal

Activity
advanced
advanced
Сообщения: 163
Зарегистрирован: 02 окт 2009, 07:36
Награды: 1
Версия LabVIEW: 8.6
Откуда: Израиль
Контактная информация:

Re: Как преобразовать время

Сообщение Denmal »

я понимаю, что для вас всё просто, если бы скрин диаграммы посмотреть, то было бы проще( сам :vi: я не очень люблю, мне становится понятнее, когда я по примеру сам создаю прибор)
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: Как преобразовать время

Сообщение FireFly »

Поработал над вариантом от Viktor с целью определения при считывании файла в каком состоянии находится сейчас работник.

На первом изображении проводится проверка последней строчки таблицы на "закрытость" перед запуском цикла. Этому соответствует условие {кнопка в состоянии OUT (TRUE) если значение во втором столбике последней строчки не пустое, а в третьем столбике последней строчки пустое, иначе кнопка в состоянии IN (FALSE)"

На втором изображении я показываю что теперь в таблицу заношу и секунды. Это необходимо для правильного считывания из файла времени прихода на работу

На третьем изображении основные изменения - теперь время прихода на работу я считываю из второго столбика последней строчки, а не из ШифтРегистра с Time Stamp, это актуально в случае когда была считанна "незакрытая" строчка, ведь в варианте от Viktor ШифтРегистр с Time Stamp заполняется лишь при нажатии кнопки IN. Кстати по той же причине в ШифтРегистре с таблицей я храню ВСЮ таблицу (а не только новые изменения которые были внесены за время работы программы как у Viktor) поэтому при закрытии программы в функции Write To Spreadsheet File VI значение append to file? я присвоил FALSE

Полную картину можно посмотреть в VI.
Вложения
hour.vi
(15.07 КБ) 133 скачивания
S1.PNG
S1.PNG (4.1 КБ) 5066 просмотров
S2.PNG
S2.PNG (3.26 КБ) 5066 просмотров
S3.PNG
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: Как преобразовать время

Сообщение FireFly »

Одно НО! Сейчас в программе немного не учтена возможность уйти с работы на следующий день после прихода (т.е. засидеться на работе, и уйти после полуночи. У меня иногда такое бывает :)). Т.е. посчитана разница во времени будет вроде правильно, но выведенно в таблицу будет не очень правильно... Дата у нас только в первой колонке и относится к приходу на работу, и как результат уход с работы не имеет даты в таблице/файле...
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Denmal

Activity
advanced
advanced
Сообщения: 163
Зарегистрирован: 02 окт 2009, 07:36
Награды: 1
Версия LabVIEW: 8.6
Откуда: Израиль
Контактная информация:

Re: Как преобразовать время

Сообщение Denmal »

да нет, вот это именно то, что надо. а работа у меня не на столько интересная, что бы зависать до полуночи. а вообще задумка такая, что бы прога работала самостоятельно, тоесть каждый новый месяц создавала новый файл с названием месяца, это возможно и также подсчитывала общее количество часов за месяц, это ведь возможно?(я про самостоятельное создание файла и его именем месяца)
Denmal

Activity
advanced
advanced
Сообщения: 163
Зарегистрирован: 02 окт 2009, 07:36
Награды: 1
Версия LabVIEW: 8.6
Откуда: Израиль
Контактная информация:

Re: Как преобразовать время

Сообщение Denmal »

а можно описать роль этой функции? спасибо
Вложения
30.10.png
30.10.png (806 байт) 5038 просмотров
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: Как преобразовать время

Сообщение FireFly »

Это Property Node таблицы. Выбранны Property (Свойства) Value и ColHdrs[]. Value это двумерный массив со значениями таблицы, ColHdrs[] это одномерный массив с заголовками колонок.
Считав файл мы:
1) первую строчку файла (в ней хранятся названия колонок) подаём в свойство ColHdrs[], тем самым давая колонкам таблицы названия,
2) Всё остальное считанное из файла мы подаём на свойство Value, тем самым заполняя таблицу значениями из файла.

P.S. На самом деле это можно убрать, просто так было в варианте Viktor и я не стал заморачиваться. Ввод таблицы в Value убрать можно хоть щас, т.к. в самом начале цикла тот же массив который был только что занесён в Value подаётся на индикатор таблицы, т.е. два раза делается одно и то же... Названия колонок тоже можно записать в таблицу жёстко в программе и не хранить их в файле.
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: Как преобразовать время

Сообщение FireFly »

Denmal писал(а):да нет, вот это именно то, что надо. а работа у меня не на столько интересная, что бы зависать до полуночи. а вообще задумка такая, что бы прога работала самостоятельно, тоесть каждый новый месяц создавала новый файл с названием месяца, это возможно и также подсчитывала общее количество часов за месяц, это ведь возможно?(я про самостоятельное создание файла и его именем месяца)
Это конечно же возможно. Я бы выбрал такой алгоритм - программа смотрит текущий месяц и наличие в одной папке с собой (например) файла с названием этого месяца (+год, наверное). Если такой файл есть - открываем его и работаем как обычно. Если файла нет - создаём его с названием текущего месяца и года.
Так же неплохо бы предусмотреть в программе, что если во время её работы изменился месяц - закрыть текущий файл и создать новый, но если ты и программа по ночам работать не будете, то можно не усложнять.
Попробуй сделать сам, поройся на форуме, вроде где-то такое было уже... Вот тут похожая тема. (простите за ссылку на сторонний ресурс :) )
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Denmal

Activity
advanced
advanced
Сообщения: 163
Зарегистрирован: 02 окт 2009, 07:36
Награды: 1
Версия LabVIEW: 8.6
Откуда: Израиль
Контактная информация:

Re: Как преобразовать время

Сообщение Denmal »

спасибо. я тоже где то такое видел в самих примерах :labview: . пороюсь, конечно.
Ответить

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