Решение выполнено в Visual Studio 2022 на языке C#. Для работы с портами использована библиотека System.IO.Ports.
Решение состоит из двух проектов:
- Библиотека классов WeatherSensorsLib, содержащая логику приложения, такую как сервис для работы с портами, сервис для сохранения данных в файл, общеиспользуемые модели;
- Консольное приложение WeatherSensorConsoleApp, содержащее пользовательский интерфейс для работы с реализованным функционалом;
Диаграмма классов системы
Общий алгоритм программы
Алгоритм получения данных с порта
Алгоритм перехода парсера в новое состояние
Алгоритм сохранения данных в файл
Файл с результатами работы программы представляет из себя сериализованный в .json список объектов класса WeatherSensorMessage. Файл доступен по ссылке.
В ходе выполнения работы была разработана система для взаимодействия с внешним датчиком и сохранения результатов измерений. Были решены следующие задачи:
- Проектирование системы с расчётом на дальнейшее расширение функционала (добавление новых видов сообщений и датчиков, возможность написания тестов для модуля чтения, возможность подключения графического интерфейса);
- Парсинг входных данных в соответствии с протоколом посредством реализации машины состояний, обработка состояний несоответствия протоколу;
- Потоковая обработка файлов для оптимального использования памяти;




