Вы здесь

Программная часть

Инструменты разработки

В качестве инструмента разработки был выбран free pascal и его добрый друг Lazarus. Из Lazarus используются некоторые классы, потому на чистом Free Pascal исходники не откомпиллируешь. В дальнейшем планирую отказаться от классов Lazarus и реализовать всё необходимое самостоятельно. Но когда это будет не знаю.

Такой выбор инструмента был обусловлен двумя причинами:

  1. Pascal – это мой любимый язык программирования. Сколько я себя помню, всегда программировал на паскале. А если учесть то, что написано в предисловии, то эту причину можно назвать основной.

  2. Программу пишу в расчёте на кросс-платформенность. А Free Pascal и Lazarus работают и позволяют создавать приложения для многих операционных системах. Надо сказать, что кросс-платформенность не только подразумевается, но и реализовывается. То есть я компилирую приложение на 2-х операционных системах (Windows и Ubuntu Linux) и добиваюсь работоспособности на обеих.

 

Концепция

Было решено, что для реализации алгоритма системы «Умный дом» необходимо разбить общий алгоритм на некоторое количество программных частей. После проведения проектирования алгоритм был разбит на следующие части:

  1. Система подключения устройств
    Эта часть программы отвечает за работу с физическими и виртуальными устройствами
    • Подсистема работы с физическими портами (готово)
      Данная подсистема работает с физическими устройствами.
    • Подсистема псевдодрайверов устройств (готово)
      Данная подсистема работает с виртуальными устройствами, а так же является связующим звеном между подсистемой работы с физическими портами и остальной частью программы.
    • Подсистема «Пул устройств» (готово)
      Данная подсистема поддерживает в актуальном состоянии список устройств.
  2. Система алгоритмов
    Эта система хранит в себе все алгоритмы «Умного дома». Она же умеет обновлять алгоритмы и переводить их в бинарный вид. Если необходимо использовать какой-то алгоритм данная система предоставляет его системе выполнения для использования.
    • Подсистема определения событий. (готово)
      Данная подсистема содержит в себе алгоритмы определения событий.
    • Подсистема реагирования на события. (готово)
      Данная подсистема содержит в себе функции выполнения. Они вызываются при возникновении определенных событий.
    • Подсистема компиляции алгоритмов
      Данная подсистема производит перевод алгоритмов в бинарный вид, а так же их отключение и подключение в процессе работы
    • Подсистема «Очередь событий» (готово)
      Данная подсистема содержит в себе очередь возникших событий. Подсистема определения событий помещает события в эту очередь, а подсистема реагирования вытаскивает их из очереди и выполняет действия.
  3. Система поддержания единого пула данных (готово)
    Данная система поддерживает в актуальном состоянии все данные необходимые для работы алгоритмов, то есть производит чтение и запись данных внутрь пула и передает или считывает данные с драйверов устройств.
  4. Система выполнения (готово)
    Эта система постоянно находится в работе, она обрабатывает события от устройств и запускает алгоритмы. Она же производит инициализацию всей системы.
  5. Система «Интерфейс»
    Данная система предназначена для визуального введения данных. Эта подсистема является внешней для системы «Умный дом» и может вообще отсутствовать в системе.
  6. Система поддержания работоспособности системы.
    Данная система занимается поддержанием работоспособности системы «Умный дом» путём задействования резервных серверов.  

 

Предисловие Цель проекта Аппаратная часть Программная часть Послесловие