Добро пожаловать в раздел, в котором подробно описываются шаги по созданию приложения, предназначенного для моделирования (симуляции) работы обычного трёхсекционного дорожного светофора. 

Краткое описание проекта

Приложение моделирует работу одиночного светофора, состоящего из трёх секций (зелёной, жёлтой и красной) в ручном и автоматическом режимах. В ручном режиме работы можно включать и выключать любую секцию. В автоматическом режиме светофор работает по стандартной для него программе.

При запуске приложения открывается графическое окно (Рис. 1), в котором программно рисуется светофор с помощью простейших графических примитивов. Приложение написано на языке Си с использованием Win32API. Может успешно скомпилироваться с помощью компилятора Mingw-w64 – GCC и запуститься под операционной системой Windows (7 и выше).

Код проекта доступен на Github: https://github.com/juvus/Traffic_light_simulator.git

Image of the traffic light

Рис. 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
Изображение
Green light is on
All lights are off
Green light is on
All lights are off
Green light is on
All lights are off
Green light is on
Yellow light is on
Red light is on
Yellow and red lights are on

Табл. 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

Организация проекта

  • folder include/     Публичные заголовочные файлы
  • folder resources/     ресурсы приложения (Accelerator table)
  • folder src/     Файлы с кодом приложения
  • folder img/     Картинки, необходимые для документации

Лицензия

Код приложения Traffic light simulator распространяется под лицензией GPLv3. Прочитать об этой лицензии можно здесь: LICENSE