А можно узнать по подробнее про следующий подход: железо - логика - функция - задачаКак это реализуется в коде?ers_i, 07 Окт. 15, 21:26
На неудачном простом примере:
Задача: "температурный датчик наружной температуры"
Функции: 1) запрос температуры ДатчикТ
2) вывод значения температуры для оператора Принт
Логика: 1) запрос температуры с обозначенного датчика ДатчикТ1
2)вывод температуры в определенное устройство ПринтUART
Железо: 1) запрос температуры с железного устройства. snDSки1
2) вывод температуры на железное устройство. UART1
Все сделано структурами.
В менюшке задается предварительная настройки и соответствие всех уровней.
То есть сканируются все термометры, выдается запрос на соответствие их логическим устройствам.
И так далее по восходящей.
1. Экранчик LCD1602 - LCD Display - Print.
2. Порт UART1 - UART - Print
3. Порт UART2 - UART - Print
4. USB port - CDC - Print
Функция: my_print("Hello World!",1) выводит на экранчик
my_print("Hello World!",3) выводит на терминал подсоединенный ко второму порту.
Как уже писал, все это делалось для теплицы. Там куча датчиков и исполнительных устройств. Причем одно и тоже устройство (клапан) может исполнять противоположные функции (налив и слив). Кроме того есть разные схемы установок: может насос накачивать, а клапан сливать; а может быть и наоборот.
Получается в итоге так:
Задача: смена воды в ящике "1" смена воды в ящике "2"
Функция1: слить воду: логика Насос1 слить воду: логика Клапан1
Функция2: налить воду: логика Клапан2 налить воду: логика Насос2
захожу в менюшку и меняю конфигурацию системы на ходу.
Получается структура в EEPROM: Тип задачи, номер задачи, время начала, время останова, тип функции1, номер логики1, тип функции2, номер логики2.
Фууф. Как-то так.