![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Логика работы программы [D7, XP]
Unknowing © (2006-11-29 09:36:00)Доброго времени суток! Нужен совет профессионала!!! Делаю так (условно):
{global var}
Var RecivedPack : Tpack;
//======================
procedure Parse(Buff);
begin
//разбор буфера и заполнение глобальной переменной RecivedPack
RecivedPack.Param1:=parseParam1;
...
end;
procedure OnRXChar();
begin
Parse(Buffer);
end;
procedure OnTimerView;//3 Гц
begin
label.Caption:=parseParam1;
end;
procedure OnTimerRec;//10 Гц
begin
Writeln(F,parseParam1);
end;
Unknowing (2006-11-29 16:12:00) [1]
> Anatoly Podgoretsky ©
> Сергей М. ©
> alex_*** ©
Спасибо за помощь!
Anatoly Podgoretsky (2006-11-29 15:58:00) [2]> Unknowing (29.11.2006 15:27:17) [17]
Ну например TStringList туда добавляешь для отражения и оттуда убираешь, как только отобразилось.
Unknowing (2006-11-29 15:27:00) [3]
> Anatoly Podgoretsky © (29.11.06 15:09) [16]
Дело в том, что в конкретном случае актуальны все переданные устройством данные :( Если не затруднит, про коллекцию/список уточните
Anatoly Podgoretsky (2006-11-29 15:09:00) [4]> Unknowing (29.11.2006 14:41:15) [15]
1. актуальны только последние данные
2. заводить коллекцию/список, выводить скопом
Unknowing (2006-11-29 14:41:00) [5]
> Anatoly Podgoretsky © (29.11.06 14:36) [14]
Понял уже! :)
И последнее: как защищаться от такой проблемы: пришли, а отобразить и записать еще не успел? (конечно, при 10 Гц это невероятно, но в общем случае?)
Anatoly Podgoretsky (2006-11-29 14:36:00) [6]> Unknowing (29.11.2006 14:30:12) [12]
Сказали же флажок.
Правда и глобальную переменную не надо, лучше всего контролируемое свойство. При записи взводит флажок, при чтении сбрасывает.
Unknowing (2006-11-29 14:35:00) [7]
> Сергей М. © (29.11.06 14:28) [11]
Вариант!!
Unknowing (2006-11-29 14:30:00) [8]
> alex_*** © (29.11.06 14:26) [10]
Т.к. я не знаю , к своему стыду, что такое колбэки, то выбрал вариант по таймеру. Волнует вопрос: 1. заполнил структуру, обратился к ней по таймеру, отобразил записал. 2. Данные еще не пришли, а я снова к ней обратился и снова записал то, что уже записано...
Сергей М. (2006-11-29 14:28:00) [9]
> понять что данные обновились
В "разборщике" взведи какой-нть глоб.флажок.
В "отображальщике" и "записальщике" анализируй этот флажок - если он взведен, то значит есть повод "отображалить" и "записалить"
alex_*** (2006-11-29 14:26:00) [10]кому понять? тут 2 варианта: либо callback'и использовать, либо по таймеру опрашивать. Другого вроде не придумали
Unknowing (2006-11-29 14:21:00) [11]
> Сергей М. © (29.11.06 14:14) [8]
Я полагал есть более профессиональные методы... :) И неплохо было бы еще понять что данные обновились.
Сергей М. (2006-11-29 14:14:00) [12]
> Разборщик заполняет глобальную переменную Var RecivedPack
> : Tpack.
Ну и ?
Какого же ляда ты не обращаешься к этой переменной ни в "отображальщике" (OnTimerView) ни в "записальщике" (OnTimerRec) ? Мне не понятно .... Поясни ?
Unknowing (2006-11-29 14:10:00) [13]
> Anatoly Podgoretsky © (29.11.06 10:09) [6]
:)
> Сергей М. © (29.11.06 09:47) [5]
Разборщик заполняет глобальную переменную Var RecivedPack : Tpack.
Требуется данные из этого пакета отобразить с низкой частотой и записать в файл с высокой.
Anatoly Podgoretsky (2006-11-29 10:09:00) [14]> Unknowing (29.11.2006 09:39:01) [1]
Какое раздать, тут бы живым остаться.
Сергей М. (2006-11-29 09:47:00) [15]
> как дальше грамотно отображать информацию
Какую ?
И что является результатом работы разборщика ? Из приведенного кода это неочевидно ..
Unknowing (2006-11-29 09:43:00) [16]
> Сергей М. © (29.11.06 09:41) [3]
Принимаю данные с сом-порта, затем принятый буфер отдаю в разборщик... А как дальше грамотно отображать информацию и одновременно записывать в файл не знаю :(
Сергей М. (2006-11-29 09:41:00) [17]Кто такие "получатели" ?
Что вообще делает этот код ? Комментируй каждую строчку ...
Сергей М. (2006-11-29 09:40:00) [18]Приведенный код - это замечательно.
А в чем собственно вопрос ?
Unknowing (2006-11-29 09:39:00) [19]Забыл вопрос:) А как правильно после разбора буфера раздать данные всем получателям?