
Добро пожаловать в раздел, в котором подробно описываются шаги по созданию приложения, предназначенного для моделирования (симуляции) работы обычного трёхсекционного дорожного светофора.
Краткое описание проекта
Приложение моделирует работу одиночного светофора, состоящего из трёх секций (зелёной, жёлтой и красной) в ручном и автоматическом режимах. В ручном режиме работы можно включать и выключать любую секцию. В автоматическом режиме светофор работает по стандартной для него программе.
При запуске приложения открывается графическое окно (Рис. 1), в котором программно рисуется светофор с помощью простейших графических примитивов. Приложение написано на языке Си с использованием Win32API. Может успешно скомпилироваться с помощью компилятора Mingw-w64 – GCC и запуститься под операционной системой Windows (7 и выше).
Код проекта доступен на Github: https://github.com/juvus/Traffic_light_simulator.git
Рис. 1. Внешний вид светофора со всеми выключенными (слева) и включенными (справа) секциями.
Документация
При запущенном приложении работой светофора можно управлять с помощью клавиатуры. Управление происходит при нажатии следующих клавиш и их сочетаний:
Ctrl + M
Ручной режим работы светофораCtrl + А
Автоматический режим работы светофора
При переходе в автоматический режим работы, светофор начинает работу с состояния «горит зелёный». Диаграмма состояний светофора при работе в автоматическом режиме представлена в виде следующей таблицы (Табл. 1). Длительность состояний может быть изменена путём модификации констант в файле simulation.c
.
Состояние | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Длительность, [с] | 7.0 | 0.5 | 0.5 | 0.5 | 0.5 | 0.5 | 0.5 | 3.0 | 10.0 | 3.0 |
Изображение |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Табл. 1. Диаграмма возможных состояний светофора в автоматическом режиме работы.
При переходе в ручной режим работы продолжают гореть те секции, которые горели в момент перехода. В этом режиме включение и выключение секций происходит следующим образом:
F1
Включение/выключение зелёной секцииF2
Включение/выключение жёлтой секцииF3
Включение/выключение красной секции
Вне зависимости от режима работы при нажатии на клавишу Esc
происходит завершение работы приложения.
Установка и запуск
Установка, компиляция и запуск программы происходит при выполнении команд в окне терминала (Способ описан для UNIX-подобного терминала, например, Bash из MSYS2. Также при этом необходимо наличие работающего компилятора Mingw-w64 – GCC и настроенных путей):
- Копирование репозитория в локальную папку:
$ git clone https://github.com/juvus/Traffic_light_simulator.git
$ cd Traffic_light_simulator/ - Компиляция приложения:
$ mingw32-make
- Запуск приложения:
$ cd build/
$ ./Program
Организация проекта
include/
Публичные заголовочные файлыresources/
ресурсы приложения (Accelerator table)src/
Файлы с кодом приложенияimg/
Картинки, необходимые для документации
Лицензия
Код приложения Traffic light simulator распространяется под лицензией GPLv3. Прочитать об этой лицензии можно здесь: LICENSE