Показать сообщение отдельно
  #1  
Старый 10.12.2017, 18:13
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию Эмуляция задержки по времени

Добрый день, коллеги.
Прошу навести на мысль.
Пишу эмулятор некоторых приборов, которые висят на одной шине RS-485. Работа идет через COM-порт.
Суть: от главного контроллера приходит запрос. На запрос нужно послать ответ с задержкой (у разных "приборов" разная).
Моя реализация выглядит так:
1. Виртуальная шина данных, к которой аттачатся виртуальные "приборы".
2. Шина открывает COM-порт и получая с него данные бродкастит на все приаттаченные виртуальные устройства (вызов функции обработки сообщения всех "приборов" в цикле).
3. "Прибор" получив запрос формирует ответ и отправляет в шину.
4. Шина перенаправляет ответ в COM-порт.
Как я уже сказал, ответ должен улетать с задержкой. И эта задержка не должна влиять на "работу" других виртуальных приборов.

Ломаю голову, как сделать эту временную задержку (для каждого прибора свою) на одной шине. Использовать по окну и таймеру для каждого виртуального устройства как-то расточительно.
Есть идеи?
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием