/practice-2023

Приложение для обработки данных с датчиков ВУЗа "МФ МГТУ им Н.Э. Баумана"

Primary LanguageRustMIT LicenseMIT

Практика МФ МГТУ им. Н.Э. Баумана на 2023 год

Представляет из себя приложения для анализа и отображения данных с датчиков приборов МФ МГТУ им. Н.Э. Баумана. Является консольным приложением.

Использованные библиотеки (крейты)

  • itertools - крейт для удобных функций итераторов
  • chrono - используется для чтения дат в файлах данных
  • encoding_rs - используется для чтения файлов с кодировкой Windows-1251
  • csv - используется для парсинга CSV файлов данных
  • serde и serde_json - используются для парсинга JSON файлов данных
  • rusqlite - используется для взаимодействия с БД SQLite
  • crossterm и tui-rs - используются для TUI интерфейса

Кроссплатформенность

Судя по проведённым мною тестам, приложение должно работать на всех популярных ОС, а именно Windows и Unix-like. Если у вас на микроволновке не запустилось, эта ваша проблема. Однако учитывайте, что создатель (т.е. я) создавал на ОС Linux, потому на других ОС вполне возможны баги.

Инструкция по сборке

Очевидно, необходим компилятор ЯП Rust. Желательно установить последнюю Stable версию. (Слава богу тут я не использовал Nightly фич компилятора).

Далее необходимо собрать бинарник: cargo build --release. И бинарник будет ждать вас по пути: ./target/release/practice.

Инструкция по использованию

Сочетания клавиш

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

  • n - без каких либо модификаторов
  • N или S-n - Shift+n
  • C-n - Ctrl+n
  • C-N или C-S-n - Ctrl+Shift+n

Управление во всех вкладках (обычный режим вкладок):

  • C-q - выход из приложения
  • Tab - переход к следующей вкладке
  • S-Tab - переход к предыдущей вкладке
  • N - открытие новой вкладки "График"

Вкладка "Дерево сенсоров"

Управление в обычном режиме:

  • q - выход из приложения
  • Up, Down, Left, Right (стрелки) - навигация по дереву сенсоров
  • Space или Enter - раскрытие/скрытие пункта дерева
  • i - открытие окна импорта файла/директории (в данной директории)

Управление в окне импорта файла/директории:

  • Esc или q - закрытие окна
  • Up, Down - переключение между файлами вверх/вниз
  • Left - переход в родительскую директорию, если этого возможно
  • Right или Enter - открывает файл/переходит в директорию-потомка
  • I - импортирует все файлы в данной директории (не выделенной, а данной)

Вкладка "График"

Управление в обычном режиме:

  • q - закрывает данную вкладку
  • e - включает режим редактирования полей

Примечание: график отрисовывается только в обычном режиме.

Управление в режиме редактирования полей:

  • q - выход из режима редактирования полей
  • a - добавляет новый график
  • d - удаляет последний график
  • S-Tab или Left - переходит к предыдущему полю
  • Tab или Right - переходит к следующему полю
  • Up, Down - переходит на строчку вверх/вниз
  • Enter - открывает редактирование выбранного поля

Примечание: при выходе из режима редактирования может быть небольшое зависание программы, т.к. обрабатываются данные для отображения на графике.

Примечание 2: если после редактирования появились ошибки в полях "ввода текста", ничего не обновится.

Управление в режиме редактирования поля "Ввод текста":

  • Esc или Enter - сохраняет поле
  • Left, Right - перемещает курсор влево/вправо
  • Home, End - перемещает курсор в начало/конец поля ввода
  • Backspace - стирает символ перед курсором
  • Любой символ подлежит вводу в поле

Управление в режиме редактирования поля "Меню":

  • Esc или q - выходит из меню без сохранения выбора
  • Enter - выходит из меню с сохранением выбора
  • Up, Down - переключается между пунктами меню вверх/вниз

Особенности работы вкладки "График"

Поля отсортированы по 4-ём категориям:

  • Поле данных - параметр, который будет соответствовать оси
  • Серийник - параметр, который будет определять, с какого серийного номера прибора будут браться данные
  • Мин.знач./Датчик:
    • Мин.знач. - используется для установки нижней границы X. Может быть датой формата %Y-%m-%d %H:%M:%S или числом.
    • Датчик - дополнительное поле данных для первого поля у Y, необходимое для полей данных:
      • <Датчик>/Эфф.темп. - датчик температуры
  • Макс.знач./Датчик:
    • Макс.знач. - используется для установки верхней границы X. Может быть датой формата %Y-%m-%d %H:%M:%S или числом.
    • Датчик - дополнительное поле данных для первого поля у Y, необходимое для полей данных:
      • <Датчик>/Эфф.темп. - датчик влажности

Примечание 1: при использовании поля данных X, не являющемуся date, будет строиться три графика сразу, у которых такая связь:

  • Y{}.1 - график минимумов значений
  • Y{}.2 - график средних значений
  • Y{}.3 - график максимальных значений

Примечание 2: не рекомендуется отображать больше 7 графиков, т.к. их цвета тогда будут повторяться.