Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как работать с TDataTime [D2005, XP]


Страницы:   1 2

Олег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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо