Версии железа стараюсь долбить схематехников чтобы определялись в коде.
Конфиг json(пишу)/bson(транслирую и в коде с ним работаю). На нем гуи, система хранения уставок/журнал (ПО просмотра журнала в результате не изменяем, все только в устройстве), модбас (мастер/слейв, сервер/клиент).
Код платформо-, ОС-независимый, работа с модулями через интерфейсы. Конфигурю через define. Выглядит как то так
MOD_DEF( mem_space, MEM_SPACE) - имя модуля, его "класс"
MOD_ADD_INT_CONSTANT( mem_space, wr_at, mod_fm25) - вспомагательный/зависимый модуль (тут где реальное хранение происходит), должна быть реализация wr_at интерфейса
MOD_ADD_INT_CONSTANT( mem_space, title_sz, 512) - констата, размер заголовка
MOD_ADD_INTERFACE(MEM_SPACE, fs) - интерфейс fs, реализация MEM_SPACE (может быть много интерфейсов)
MOD_ADD_PATTERN(mem_space, singleton) - модуль в одном экземпляре, создается при запуске системы
MOD_DEF_END
MOD_DEF(msel4_guard, ARO_GUARD)
MOD_ADD_INT_VARIABLE(msel4_guard, mode, 1) // Тип работы (0 - выкл, 2 - блок)
MOD_ADD_INT_CONSTANT(msel4_guard, max, 0) // режим срабатывания, тут >0, вообще "eq":1 лучше
MOD_ADD_INT_ARRAY_CONSTANT(msel4_guard, check, variable_msel4_crash, variable_msel4_2_crash ) - триггера
MOD_ADD_INTERFACE(ARO_INT_GUARD, execute) - логика работы
MOD_ADD_INTERFACE(ARO_GUARD, switch) - интерфейс включения/выключения
MOD_DEF_END
Автоматом генерю проект-эмулятора на vs. Тестирую, пишу там, даю на сторону АСУшникам и т.д.
По flash дорого выходит, жирно. Но проекты клепаются быстро, зачастую больше отличай в конфигах(json, define'овском) чем в новом коде.
-
- Спасибо - VLLV(31.01.2022 20:12)