======NTParams Lib Notes ======
Сообщения между клиентом и сервером для отображения параметров в GUI.
// Server to Client
SRV_ParamEventNotifier::doSend_RangeInt - > Client::UI_ParamEventNotifier::onRxMess_RangeInt
SRV_ParamEventNotifier::doSend_RangeDbl -> Client::UI_ParamEventNotifier::onRxMess_RangeDbl
SRV_ParamEventNotifier::doSend_RangeStr -> Client::UI_ParamEventNotifier::onRxMess_RangeStr
SRV_ParamEventNotifier::doSend_Names -> Client::UI_ParamEventNotifier::doRxMess_Names
SRV_ParamEventNotifier::doSend_Enables -> Client::UI_ParamEventNotifier::doRxMess_Enables
SRV_ParamEventNotifier::doSend_ValueInt -> Client::UI_ParamEventNotifier::doRxMess_ValueInt
SRV_ParamEventNotifier::doSend_ValueDbl -> Client::UI_ParamEventNotifier::doRxMess_ValueDbl
// Client To Server
SRV_ParamEventNotifier::onRx_AddParams <- Client::UI_ParamEventNotifier::doSrv_AddParams
SRV_ParamEventNotifier::onRx_DelParams <- Client::UI_ParamEventNotifier::doSrv_DelParams
SRV_ParamEventNotifier::onRx_SetParamsInt <- Client::UI_ParamEventNotifier::doSrv_SetParamsInt
SRV_ParamEventNotifier::onRx_SetParamsDbl <- Client::UI_ParamEventNotifier::doSrv_SetParamsDbl
* Клиенты на удаленных РС регистрируют отображаемые в GUI параметры на сервере через
* doSrv_AddParams - зарегистрировать параметр с ID для получения сообщений об изменении
* doSrv_DelParams - отменить регистрацию
* При изменении значения параметра через GUI (ComboBox, Checkbox, SpinEdit, ...) на сервер отсылаются сообщения
* doSrv_SetParamsInt - изменить значение параметра Int: //SpinEdit, ComboBox, CheckBox, ...//
* doSrv_SetParamsDbl - изменить значение параметра Double: //DoubleSpinBox, ...//
* Сервер для каждого зарегистрированного параметра рассылает сообщения клиентам (при регистрации и изменении значений):
* onRxMess_RangeInt - диапазон значений параметра Int (minValue, maxValue, step): для //SpinEdit,...//
* onRxMess_RangeDbl - диапазон значений параметра Double (minValue, maxValue, step, precision): для //DoubleSpinEdit,...//
* onRxMess_RangeStr - список строк: для //ComboBox,...//
* doRxMess_Names - строки имя параметра и единицы измерения.
* doRxMess_Enables - Enable и Visibility параметра
* doRxMess_ValueInt - значение Int: для //SpinEdint, ComboBox, CheckBox ...//
* doRxMess_ValueDbl - значение Double: для //DoubleSpinEdit,...//
===== Особенности сервера =====
* Сервер рассылает сообщения об изменении значений параметра или его диапазона с заданным периодом таймера (частота обновления GUI).
* Сервер рассылает сообщения только для тех параметров, чьи ID были зарегистрированы.
* Сервер рассылает сообщения только если значение или диапазон параметра изменились. Т.е. требуется обновление отображения.
* Сервер получается сообщения от функционального ядра об изменении всех внутренних параметров. Если параметр зарегистрирован, то для него выставляется флаг о необходимости сообщения в следующем таймерном интервале.
Например, есть набор параметров, описывающих функционал некоторой платы TestAFM1 //(Амплитуда/Фаза/Частота генераторов, уровень ЦАП, координаты/параметры моторов и т.д.)// При работе некоторых алгоритмов, например ФАПЧ или движения моторов, значения параметров меняются и должны быть отображены в клиентах на удаленных РС. Изменение параметра генерирует сообщение, которое получает серверный нотификатор SRV_ParamEventNotifier и рассылает его по клиентам если этот параметр отображается.
Params_TestAFM1::changedRange(ID) -> SRV_ParamEventNotifier::onChangedRange(ID) -> doSend_RangeInt -> Clients
-> doSend_RangeDbl -> Clients
-> doSend_RangeStr -> Clients
Params_TestAFM1::changedNames(ID) -> SRV_ParamEventNotifier::OnChangedNames(ID) -> doSend_Names -> Clients
Params_TestAFM1::changedEnables(ID) -> SRV_ParamEventNotifier::OnChangedEnables(ID) -> doSend_Enables -> Clients
Params_TestAFM1::changedValue(ID) -> SRV_ParamEventNotifier::OnChangedValue(ID) -> doSend_ValueInt -> Clients
-> doSend_ValueDbl -> Clients
Также, параметр может быть изменен в GUI на удаленном РС и должен синхронно отобразиться на остальных подключенных удаленных РС. Вызов //setValue(newValue)// параметра приведет к вызову //Params_TestAFM1::changedValue(ID)// для извещения клиентов об изменении:
regParams(ID).setValue(newValue) <- SRV_ParamEventNotifier::onRx_SetParamsInt <- Client::doSrv_SetParamsInt
regParams(ID).setValue(newValue) <- SRV_ParamEventNotifier::onRx_SetParamsDbl <- Client::doSrv_SetParamsDbl
{{ntparams:ntparam.png}}