А вот тут вопрос к вам. Какой алгоритм определения уходящего с работы? Всегда ли это последняя строчка? Или могут быть несколько "незакрытых" строчек? Т.е. несколько человек пришли на работу, это отметилось, и вот они начинают уходить, как понять, какая строчка кому принадлежит? Т.е. иными словами, сколько человек могут отдновременно находится на работе?Denmal писал(а): хотя тот факт, что на выход необходимо выделять нужную строчку, не совсем удобен, по запарке можно забыть выделить строку или не ту выделить...
Как преобразовать время
-
FireFly
- expert
- Сообщения: 1321
- Зарегистрирован: 25 апр 2009, 08:58
- Награды: 2
- Версия LabVIEW: 2014
- Откуда: Санкт-Петербург
- Поблагодарили: 1 раз
Re: Как преобразовать время
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
-
- advanced
- Сообщения: 163
- Зарегистрирован: 02 окт 2009, 07:36
- Награды: 1
- Версия LabVIEW: 8.6
- Откуда: Израиль
- Контактная информация:
Re: Как преобразовать время
я очень попрошу не обращаться ко мне на "ВЫ" , ещё как то рановато, по моему .
Дорогой мой друг, должен внести ясность в данный вопрос : программа только для одного пользователя (то есть меня-любимого ) то есть если я зашёл на работу, то ну ни как не могу, что б из неё не выйти... этот момент наверное тебя и смутил. как сказал eg (Женька по-нашему), что программу можно написать гораздо проще, но вот проблемма, что я начал отталкиваться от уже имевшегося шаблона (который, кстати, был написан не без вашей помощи)
Дорогой мой друг, должен внести ясность в данный вопрос : программа только для одного пользователя (то есть меня-любимого ) то есть если я зашёл на работу, то ну ни как не могу, что б из неё не выйти... этот момент наверное тебя и смутил. как сказал eg (Женька по-нашему), что программу можно написать гораздо проще, но вот проблемма, что я начал отталкиваться от уже имевшегося шаблона (который, кстати, был написан не без вашей помощи)
-
FireFly
- expert
- Сообщения: 1321
- Зарегистрирован: 25 апр 2009, 08:58
- Награды: 2
- Версия LabVIEW: 2014
- Откуда: Санкт-Петербург
- Поблагодарили: 1 раз
Re: Как преобразовать время
Тогда, во-первых, вместо двух кнопок IN и OUT нужно создать одну - которая в ненажатом состоянии называется IN, а в нажатом называется OUT
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
-
- advanced
- Сообщения: 163
- Зарегистрирован: 02 окт 2009, 07:36
- Награды: 1
- Версия LabVIEW: 8.6
- Откуда: Израиль
- Контактная информация:
Re: Как преобразовать время
вот это я и хотел сделать, точнее переделать, но , если чесно, побоялся, особенно после стольких домоганий к вам. но думаю попробовать стоит... рискнуть
-
- advanced
- Сообщения: 163
- Зарегистрирован: 02 окт 2009, 07:36
- Награды: 1
- Версия LabVIEW: 8.6
- Откуда: Израиль
- Контактная информация:
Re: Как преобразовать время
спасибо, действительно упращено, действительно, до максимума
только есть маленький нюанс - если я нажимаю вход, а затем закрываю програму, то выход я уже не могу ввести. может с помощью переключателя невозможно решить эту проблему, а только предъидущий вариант (с кнопками)?
только есть маленький нюанс - если я нажимаю вход, а затем закрываю програму, то выход я уже не могу ввести. может с помощью переключателя невозможно решить эту проблему, а только предъидущий вариант (с кнопками)?
-
FireFly
- expert
- Сообщения: 1321
- Зарегистрирован: 25 апр 2009, 08:58
- Награды: 2
- Версия LabVIEW: 2014
- Откуда: Санкт-Петербург
- Поблагодарили: 1 раз
Re: Как преобразовать время
Нужно просто добавить во время считывания файла проверку на "закрытость" последней строчки, и в зависимости от этого задавать состояние кнопки.
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
-
- advanced
- Сообщения: 163
- Зарегистрирован: 02 окт 2009, 07:36
- Награды: 1
- Версия LabVIEW: 8.6
- Откуда: Израиль
- Контактная информация:
Re: Как преобразовать время
я понимаю, что для вас всё просто, если бы скрин диаграммы посмотреть, то было бы проще( сам я не очень люблю, мне становится понятнее, когда я по примеру сам создаю прибор)
-
FireFly
- expert
- Сообщения: 1321
- Зарегистрирован: 25 апр 2009, 08:58
- Награды: 2
- Версия LabVIEW: 2014
- Откуда: Санкт-Петербург
- Поблагодарили: 1 раз
Re: Как преобразовать время
Поработал над вариантом от Viktor с целью определения при считывании файла в каком состоянии находится сейчас работник.
На первом изображении проводится проверка последней строчки таблицы на "закрытость" перед запуском цикла. Этому соответствует условие {кнопка в состоянии OUT (TRUE) если значение во втором столбике последней строчки не пустое, а в третьем столбике последней строчки пустое, иначе кнопка в состоянии IN (FALSE)"
На втором изображении я показываю что теперь в таблицу заношу и секунды. Это необходимо для правильного считывания из файла времени прихода на работу
На третьем изображении основные изменения - теперь время прихода на работу я считываю из второго столбика последней строчки, а не из ШифтРегистра с Time Stamp, это актуально в случае когда была считанна "незакрытая" строчка, ведь в варианте от Viktor ШифтРегистр с Time Stamp заполняется лишь при нажатии кнопки IN. Кстати по той же причине в ШифтРегистре с таблицей я храню ВСЮ таблицу (а не только новые изменения которые были внесены за время работы программы как у Viktor) поэтому при закрытии программы в функции Write To Spreadsheet File VI значение append to file? я присвоил FALSE
Полную картину можно посмотреть в VI.
На первом изображении проводится проверка последней строчки таблицы на "закрытость" перед запуском цикла. Этому соответствует условие {кнопка в состоянии 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 (4.1 КБ) 5066 просмотров
-
- S2.PNG (3.26 КБ) 5066 просмотров
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
-
FireFly
- expert
- Сообщения: 1321
- Зарегистрирован: 25 апр 2009, 08:58
- Награды: 2
- Версия LabVIEW: 2014
- Откуда: Санкт-Петербург
- Поблагодарили: 1 раз
Re: Как преобразовать время
Одно НО! Сейчас в программе немного не учтена возможность уйти с работы на следующий день после прихода (т.е. засидеться на работе, и уйти после полуночи. У меня иногда такое бывает :)). Т.е. посчитана разница во времени будет вроде правильно, но выведенно в таблицу будет не очень правильно... Дата у нас только в первой колонке и относится к приходу на работу, и как результат уход с работы не имеет даты в таблице/файле...
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
-
- advanced
- Сообщения: 163
- Зарегистрирован: 02 окт 2009, 07:36
- Награды: 1
- Версия LabVIEW: 8.6
- Откуда: Израиль
- Контактная информация:
Re: Как преобразовать время
да нет, вот это именно то, что надо. а работа у меня не на столько интересная, что бы зависать до полуночи. а вообще задумка такая, что бы прога работала самостоятельно, тоесть каждый новый месяц создавала новый файл с названием месяца, это возможно и также подсчитывала общее количество часов за месяц, это ведь возможно?(я про самостоятельное создание файла и его именем месяца)
-
- advanced
- Сообщения: 163
- Зарегистрирован: 02 окт 2009, 07:36
- Награды: 1
- Версия LabVIEW: 8.6
- Откуда: Израиль
- Контактная информация:
Re: Как преобразовать время
а можно описать роль этой функции? спасибо
- Вложения
-
- 30.10.png (806 байт) 5038 просмотров
-
FireFly
- expert
- Сообщения: 1321
- Зарегистрирован: 25 апр 2009, 08:58
- Награды: 2
- Версия LabVIEW: 2014
- Откуда: Санкт-Петербург
- Поблагодарили: 1 раз
Re: Как преобразовать время
Это Property Node таблицы. Выбранны Property (Свойства) Value и ColHdrs[]. Value это двумерный массив со значениями таблицы, ColHdrs[] это одномерный массив с заголовками колонок.
Считав файл мы:
1) первую строчку файла (в ней хранятся названия колонок) подаём в свойство ColHdrs[], тем самым давая колонкам таблицы названия,
2) Всё остальное считанное из файла мы подаём на свойство Value, тем самым заполняя таблицу значениями из файла.
P.S. На самом деле это можно убрать, просто так было в варианте Viktor и я не стал заморачиваться. Ввод таблицы в Value убрать можно хоть щас, т.к. в самом начале цикла тот же массив который был только что занесён в Value подаётся на индикатор таблицы, т.е. два раза делается одно и то же... Названия колонок тоже можно записать в таблицу жёстко в программе и не хранить их в файле.
Считав файл мы:
1) первую строчку файла (в ней хранятся названия колонок) подаём в свойство ColHdrs[], тем самым давая колонкам таблицы названия,
2) Всё остальное считанное из файла мы подаём на свойство Value, тем самым заполняя таблицу значениями из файла.
P.S. На самом деле это можно убрать, просто так было в варианте Viktor и я не стал заморачиваться. Ввод таблицы в Value убрать можно хоть щас, т.к. в самом начале цикла тот же массив который был только что занесён в Value подаётся на индикатор таблицы, т.е. два раза делается одно и то же... Названия колонок тоже можно записать в таблицу жёстко в программе и не хранить их в файле.
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
-
FireFly
- expert
- Сообщения: 1321
- Зарегистрирован: 25 апр 2009, 08:58
- Награды: 2
- Версия LabVIEW: 2014
- Откуда: Санкт-Петербург
- Поблагодарили: 1 раз
Re: Как преобразовать время
Это конечно же возможно. Я бы выбрал такой алгоритм - программа смотрит текущий месяц и наличие в одной папке с собой (например) файла с названием этого месяца (+год, наверное). Если такой файл есть - открываем его и работаем как обычно. Если файла нет - создаём его с названием текущего месяца и года.Denmal писал(а):да нет, вот это именно то, что надо. а работа у меня не на столько интересная, что бы зависать до полуночи. а вообще задумка такая, что бы прога работала самостоятельно, тоесть каждый новый месяц создавала новый файл с названием месяца, это возможно и также подсчитывала общее количество часов за месяц, это ведь возможно?(я про самостоятельное создание файла и его именем месяца)
Так же неплохо бы предусмотреть в программе, что если во время её работы изменился месяц - закрыть текущий файл и создать новый, но если ты и программа по ночам работать не будете, то можно не усложнять.
Попробуй сделать сам, поройся на форуме, вроде где-то такое было уже... Вот тут похожая тема. (простите за ссылку на сторонний ресурс :) )
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.