# Серверная часть

## pmanager > views.py

DEV_VERSION_FILES - Пути к заголовочным файлам для версий прошивок

DEV_ITER_REGISTERS - У некоторых полей в заголовочных файлах определено только первое поле в качестве образца, строит по нему остальные

DEV_CONFIG_FIELDS - Определяет вид полей для ввода значений и какие регистры изменяет. Развёрнутое описание в коде.

def conf_reg_serv(version,subversion='0') - names содержит список регистров только для записи (используется только в утилите)

OFFICER_CONFIG_FIELDS - разбивка полей на разделы

class ConfigListView() - возвращает список регистров для полученной из входных параметров версии прошивки

# Веб-клиент

## pmanager > vues > pmanager > m_config.js

vuex - модуль отвечающий за хранение конфига и обработку modbus - комманд.
Если присутствует window.com_ports - работает с com-портом, иначе - через ws сервер.

## pmanager > vues > pmanager > m_config_display.js

Рекурсивный vue-компонент преобразующий полученный конфиг в интерфейс.

## pmanager > vues > pmanager > com_dev_select.js

vue-компонент отвечающий за выбор com-порта.

## apps > vues > apps 

Интерфейсные компоненты общего назначения перенесённые в webpack как vue-модули


### Веб-версия утилиты доступна по адресу <адрес СУРа>/manager/, во вкладке "Управление" при выборе прибора "Офицер"

Нажатие на раздел выберет его. Некоторые значения можно записать без предварительного считывания, но рекомендуется 
сначала считать значения. Считывание осуществляется нажатием кнопки "Считать", по завершении считывания будет выведено сообщение
и поля будут заполнены значениями.

Запись становится доступна при изменении какого-либо значения при условии корректности данных.

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

Все изменённые но ещё не сохранённые значения можно сбросить нажатием кнопки "Отменить".

Со вкладки с несохранёнными изменениями или ошибками нельзя переключиться. Исправьте ошибки, отмените изменения или сохраните их.

Некоторые поля могут быть разделены на страницы. Вверху будет находится поле текущей страницы, при поддержке постраничного считвания "Считать" будет считывать только текущую страницы. Для загрузки других страниц перейдите на них и нажмите "Загрузить страницу". Изменения на неотображаемых страницах при сохранении будут также сохранены.

Некоторые поля имеют иконку со стрелкой. справа от них. При нажатии  они считают значени из указанного в настройках регистра и поместят в поле рядом с которым находятся.

Некоторые поля могут иметь сверху от себя группу кнопок. В таких полях одни и те же регистры имеют несколько форматов отображения. Выберите
необходимый нажав на соответствующую кнопку сверху поля.

# Утилита

## electron > package.json

    npm run-script d_util - запуск утилиты

    npm run-script rebuild - перестроить библиотеку serialport под версию node используемую electron, при проблемах с запуском.

    npm run-script build - собирает exe-файл утилиты в папке device_util-win32-x64

    npm run-script pull_static - копирует js-файл компонента из статики в папку data/html/pmanager/vjs для локальной работы утилиты

## electron > p_util.js

Скрипт запуска electron, переменная sur_url определяет адрес СУРа для получения компонента (при использовании loadurl),
Если нужно что бы страница грузилась локально - раскомментировать win.loadfile
Если с сервера - раскомментировать win.loadurl
При локальной загрузке файлы статики нужно обновлять вручную в папке data/html

## electron > p_utils_preload.js

Перед загрузкой страницы добавляет в window страницы:

    'modbus',{
        'connect_device':подключить устройство,
        'disconnect_device':отключить устройство,
        'read_register':считать несколько регистров,
        'write_register':запись в регистры,
        'load_config':считывание данных настройки из локального файла
    },
    'com_ports': Список com-портов устройства, Используется веб-компонентом как маркер того что надо использовать com-порты

## electron > converters.js

Конвертеры переменных в шестнадцатеричный код и боратно. Перенесены на js из apps.modbus_util.tools.converters

## data > versions

txt-файлы с ответами сервера для разных версий прибора

## data > html

файлы для локального запуска страницы

## manage.py > util_reg_compile

В manage.py добавлена команда util_reg_compile, у команды есть один опциональный параметр

    --dir - дирректория куда будут записаны файлы

Команда создаст и перезапишет txt-файлы с ответами сервера для всех имеющихся версий прошивки для локального использования в утилите