Инструменты пользователя

Инструменты сайта


ntparams:notes

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/notes.txt · Последнее изменение: 2023/05/15 13:21 — vasco