![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как работать с TDataTime [D2005, XP]
Олег1963 © (2010-01-27 13:33:00)Здрвствуйте уважаемые Мастера!
Требуется такая процедурка:
На форме имеется два Edit'a. В одном должно быть показано реальное время, а в другой в несколько раз большее (точнее быстроидущее).
Как выводить реальное время понятно, а как быть со вторым?
Делаю так. Сохраняю заданное время в переменной BuffTime типа TDataTime. ВыполняюEdit1.Text:=TimeToStr(BuffTime);
Как в этом буфере добавлять минуты, чтобы добавлялись по мере необходимости часы и сутки?
Нужно для производственной задачи (имитация течения времени для медленнотекущих процессов ).
Sergey13 (2010-01-28 13:53:00) [1]> [20] oleg1963lora (28.01.10 13:35)
> Вообще цель этой программы, насколько я понимаю, состоит
> в том, чтобы с этими данными можно было обращаться в суд
> на недопоставку тепла местной ТЭЦ.
Смешно не правда ли смешно-смешно И вам смешно и даже мне. (с) В.С. Высоцкий
oleg1963lora (2010-01-28 13:35:00) [2]Удалено модератором
Плохиш (2010-01-28 12:26:00) [3]
> oleg1963lora (28.01.10 11:51) [15]
> Мне начальник вообще сказал "Да нарисуй от руки в Excel
> несколько табличек и работай с ними. В смысле выравнивай".
> Как ты себе это иредставляешь?
Неплохо. И с начальником подескутировал, пары спустил, и задница цела.
Jeer (2010-01-28 12:08:00) [4]Неправильной дорогой идешь, товарищ.
Ну нельзя вот так с потолка взять и приравнивать температуры от 17 датчиков, измеренные в разное время к одному времени.
Хотя бы методически это неверно.
К примеру, имеем 17 датчиков, измерение температуры проводится последовательно раз в минуту. В таком случае период между измерениями одного датчика равен 17 мин.
После опроса последнего датчика ( зевершения одного цикла измерений) делается интерполяция температур для всех остальных датчиков, приведенная ко времени последнего измерения.
Моделирование всего это процесса производится путем задания нач. значений и тенденций на каждом датчике.
Моделирование производится в относительном времени ( как раз те самые такты измерений, о которых я выше говорил ).
Для симуляции в ускоренном масштабе требуется таймер, в котором устанавливается время срабатывания:
- для реала 1 мин
- для ускорения, 1 сек, например.
И все.
Ну еще динамические свойства имитаторов датчиков необходимо корректировать.
"Это наша дорога" (С)
Anatoly Podgoretsky (2010-01-28 12:01:00) [5]> oleg1963lora (28.01.2010 11:51:15) [15]
Вот начальство и подумало, что с ними делать, выравнивай.
Sergey13 (2010-01-28 12:00:00) [6]> [15] oleg1963lora (28.01.10 11:51)
> Как ты себе это иредставляешь?
Я пока ничего не представляю. Мне просто жалко твои огурцы. Ты же в них как партизан. 15 постов уже есть, но пока неизвестна ни используемая СУБД ни структура твоих "виртуальных таблиц" и вообще пока ничего неизвестно. Что является текущей поблемой? Ты не моежшь записать данные в таблицу? Ты не можешь отсортировать ее по времени? Что конкретно? Исключая машину времени из первого поста. 8-)
oleg1963lora (2010-01-28 11:51:00) [7]
> Все равно не понятно с чем ты борешься. Что является первостепенной
> задачей? Нарисовать интерфейс пользователя? Синхронизировать
> приборы?
Именно так. Приборы к черту пока
> Если прибров пока в природе нет (как я понял), то что мешает
> просто нагенерить тестовых данных вагон и маленькую тележку
> для разработки интерфейса и прочей расчетной лабуды.
Именно это я и сделал. Мне начальник вообще сказал "Да нарисуй от руки в Excel несколько табличек и работай с ними. В смысле выравнивай". Как ты себе это иредставляешь? Не может температура в теплице колебаться от 27 до 45 градусов в течении суток! Равно как и влажность. Если же может, то урожаю... Поэтому я сделал несколько генераторов, у каждого из которых я задаю опорный уровень и уровень разбороса (напр. 28 С +-5 С)
Sergey13 (2010-01-28 11:04:00) [8]> [13] oleg1963lora (28.01.10 10:22)
Все равно не понятно с чем ты борешься. Что является первостепенной задачей? Нарисовать интерфейс пользователя? Синхронизировать приборы?
Если прибров пока в природе нет (как я понял), то что мешает просто нагенерить тестовых данных вагон и маленькую тележку для разработки интерфейса и прочей расчетной лабуды. Зачем заниматься адаптацией каких то "имитатров", которых потом выкинешь?
> Моя задача слить данные в таблицы
> Получу виртуальные таблицы
Прям какие то мифические таблицы в мифической СУБД? Формат приборных архивов известен, структура таблиц в твоей полной власти - в чем проблема то?
Можно например сделать справочник времени - таблица на 1440 записей с двумя полями, минута - диапазон.
> и по желанию руководства строить пользовательский интерфейс.
> суну их руководству - пусть сами репу чешут как это усреднять!
Немного пугает твоя вера в непогрешимость руководства. 8-)
oleg1963lora (2010-01-28 10:22:00) [9]
> Может я чего не понял, но почему при отладке нельзя делать
> "измерения" каждые 1.5 минуты?
Прибор аппаратно регистрирует температуру через 1 мин.
12:07 19 С
12:08 19 С
12:09 20 С
Реально измерения производятся скачиванием внутреннего архива прибора через 12 минут. Это обусловлено технологией производства. Задача состоит в том, их производит оператор нажатием кнопочки на приборе. Естесственно он не в состоянии опросить 17 датчиков одновременно. Возникает разброс по времени +-.
Моя задача слить данные в таблицы, потом как-то их выровнять по вертикали, т.е. если время в таблицах находится в определенном диапазоне (скажем от 12:06 до 12:09) принять их за одно измерение и вывести одной строкой в таблице Время:Датчики. Хотя как это время усреднять вопрос еще тот.
Получу виртуальные таблицы, суну их руководству - пусть сами репу чешут как это усреднять!
Sergey13 (2010-01-27 16:28:00) [10]> [6] oleg1963lora (27.01.10 14:51)
> Реально измерения производятся примерно каждые 15 минут.
Может я чего не понял, но почему при отладке нельзя делать "измерения" каждые 1.5 минуты? Или через любой другой промежуток времени? Или непременно должны часики рисоваться?
oleg1963lora (2010-01-27 15:36:00) [11]Вот что у меня получилось.
var DateStart,CurrDate : TDateTime;
CurrentDate,CurrentTime,Speed{ускоритель} : TEdit;
procedure TForm1.Button1Click(Sender: TObject);
{Запуск процесса генерации, создания таблиц, установки первоначального времени}
begin
DateStart:=InDate.Date;
DateStart:=InTime.Time;
DateCurr:=DateStart;
CurrentDate.Text:=DateToStr(DateCurr);
CurrentTime.Text:=TimeToStr(DateCurr);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Interval:=1000 div StrToInt(Speed.Text);
DateCurr:=IncMinute(DateCurr,1);
CurrentDate.Text:=DateToStr(DateCurr);
CurrentTime.Text:=TimeToStr(DateCurr);
end;
oleg1963lora (2010-01-27 15:30:00) [12]Господа ВСЕ ОТЛИЧНО! Прога отлично работает. За 5 минут пролетело больше 3-х суток. Спасибо!
> Уйди от времени и перейди к тактам.
Это к каким? Которые в БИОС указаны?!
Все. Пора уходить на Эльбрус! :)))
Anatoly Podgoretsky (2010-01-27 15:16:00) [13]DateTime := DateTime + Interval * 10
Anatoly Podgoretsky (2010-01-27 15:15:00) [14]> oleg1963lora (27.01.2010 14:51:06) [6]
DateTime := Interval * 10
Jeer (2010-01-27 14:57:00) [15]Мда.. полная задница с мыслями, извини дорогой.
Уйди от времени и перейди к тактам.
oleg1963lora (2010-01-27 14:51:00) [16]
> Anatoly Podgoretsky ©
Программу предполагается использовать для контроля и регистрации изменений температуры и влажности в теплицах. К реальному подключению программа не готова, поэтому я сделал 8 имитатров, подвязанных к таймеру.
Они имитируют колебания температуры в заданном пределе.
Реально измерения производятся примерно каждые 15 минут. Мне нужны "часы" идущие раз в десять быстрее, чтобы получать данные этих виртуальных датчиков, сохранять в таблицах и по желанию руководства строить пользовательский интерфейс.
Когда программа вчерне будет готова, я заменю имена переменных датчиков на реальные порты. Примерно так.
Anatoly Podgoretsky (2010-01-27 14:14:00) [17]
> Как выводить реальное время понятно, а как быть со вторым?
Одинаково, только в один нормальное подавать, а во второй быстроидущее/бегущее.
oleg1963lora (2010-01-27 14:06:00) [18]
> Ega23 © (27.01.10 13:54) [2]
> IncHour, IncMinute, IncSecond, IncMillisecond + F1
И за это большое спасибо!
oleg1963lora (2010-01-27 14:04:00) [19]Спасибо Nucer. Кажется получается. Попробую поиграть.
Ega23 (2010-01-27 13:54:00) [20]IncHour, IncMinute, IncSecond, IncMillisecond + F1