Показать сообщение отдельно
  #2  
Старый 21.05.2015, 08:28
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Все ниженаписанное предполагает что с дозатора получаем текущее значение массы продукта (песок/щебень/т.д.)
Раздели задачи:
1. Получение сырых данных с датчика.
2. Обработка полученных данных.
3. Запись полученных данных в БД.

Вот получили 3 потока на каждый датчик.
1. Тут основная задача успеть получить все данные и поставить их в очередь на обработку. 100 мс - не так уж и мало, думаю тут проблемы не будет.
2. Обрабатываем очередь. Самый простой алгоритм (если я правильно понял): при изменении вектора направления изменяется процесс. Точка изменения вектора становится узловой. Т.е. если каждое последующее число в очереди меньше предыдущего - дозатор опустошается, если каждое последующее число больше предыдущего - дозатор наполняется. Числа уменьшались, а затем стали увеличиваться - изменился вектор (дозатор перестал опустошаться и стал наполнятся), появилась узловая точка - нужно взять предыдущую узловую точку и в соответствии с вектором рассчитать расход продукта. Рассчитанный расход поставить в очередь на запись в БД.
3. Ну тут самое простое - записываем в БД данные из очереди.

Как-то так.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием