======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}}