Esempio n. 1
0
        public IDisplayGroup Build()
        {
            var ksmGroup = new GroupParamViewModel("КСМ");
            //const string reply03GroupName = "МУК 8, заслонка зима лето";
            // setting group of settable params

            var setParamsGroup = new GroupParamViewModel("Параметры КСМ");

            #region param39

            var recvParam39 = new RecvParam <int, IList <BytesPair> >("39: Обеззараживатель, почасовой счетчик работы (CounterCleaner)", _cmdListenerKsmParams, data => data[39].LowFirstUnsignedValue);
            var setParam39  = new SettParamViewModel <int>(recvParam39.ReceiveName, _uiNotifier, val =>
            {
                if (val < 0 || val > 65535)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(39, (ushort)val, callback));

            var dispsetParameter39 = new DispParamSettableViewModel <int, int, int>(recvParam39.ReceiveName, recvParam39, _uiNotifier, i => i, 0, 0, val =>
            {
                if (val < 0 || val > 65535)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(39, (ushort)val, callback));

            var aggSetParam39 = new ChartParamViewModel <int, int>(recvParam39, dispsetParameter39, i => i, ParameterLogType.Analogue, _parameterLogger, setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(aggSetParam39);

            #endregion

            ksmGroup.AddParameterOrGroup(setParamsGroup);
            return(ksmGroup);
        }
        public IDisplayGroup Build()
        {
            var timeCountersGroup = new GroupParamViewModel("Моточасы: ");
            //const string reply03GroupName = "МУК 8, заслонка зима лето";



            // setting group of settable params
            //var setParamsGroup = new GroupParamViewModel("Параметры КСМ");

            var recvParam39 = new RecvParam <int, IList <BytesPair> >("39: Обеззараживатель, почасовой счетчик работы №1", _cmdListenerKsmParams, data => data[39].HighFirstUnsignedValue);
            var setParam39  = new SettParamViewModel <int>(recvParam39.ReceiveName, _uiNotifier, val =>
            {
                if (val < 0 || val > 65535)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(39, (ushort)val, callback));

            var dispsetParameter39 = new DispParamSettableViewModel <int, int, int>(recvParam39.ReceiveName, recvParam39, _uiNotifier, i => i, 0, 0, val =>
            {
                if (val < 0 || val > 65535)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(39, (ushort)val, callback));


            var recvParam50 = new RecvParam <int, IList <BytesPair> >("50: Обеззараживатель, почасовой счетчик работы №2", _cmdListenerKsmParams, data => data[50].HighFirstUnsignedValue);
            var setParam50  = new SettParamViewModel <int>(recvParam50.ReceiveName, _uiNotifier, val =>
            {
                if (val < 0 || val > 65535)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(50, (ushort)val, callback));

            var dispsetParameter50 = new DispParamSettableViewModel <int, int, int>(recvParam50.ReceiveName, recvParam50, _uiNotifier, i => i, 0, 0, val =>
            {
                if (val < 0 || val > 65535)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(50, (ushort)val, callback));

            var recvParam51 = new RecvParam <int, IList <BytesPair> >("51: Обеззараживатель, почасовой счетчик работы №3", _cmdListenerKsmParams, data => data[51].HighFirstUnsignedValue);
            var setParam51  = new SettParamViewModel <int>(recvParam51.ReceiveName, _uiNotifier, val =>
            {
                if (val < 0 || val > 65535)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(51, (ushort)val, callback));

            var dispsetParameter51 = new DispParamSettableViewModel <int, int, int>(recvParam51.ReceiveName, recvParam51, _uiNotifier, i => i, 0, 0, val =>
            {
                if (val < 0 || val > 65535)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(51, (ushort)val, callback));

            var recvParam52 = new RecvParam <int, IList <BytesPair> >("52: Обеззараживатель, почасовой счетчик работы №4", _cmdListenerKsmParams, data => data[52].HighFirstUnsignedValue);
            var setParam52  = new SettParamViewModel <int>(recvParam52.ReceiveName, _uiNotifier, val =>
            {
                if (val < 0 || val > 65535)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(52, (ushort)val, callback));

            var dispsetParameter52 = new DispParamSettableViewModel <int, int, int>(recvParam52.ReceiveName, recvParam52, _uiNotifier, i => i, 0, 0, val =>
            {
                if (val < 0 || val > 65535)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(52, (ushort)val, callback));


            // defining version of app, if full then using checkboxVm, else without checkbox:
            IDisplayParameter setParam39Vm = _version == AppVersion.Full ? (IDisplayParameter) new ChartParamViewModel <int, int>(recvParam39, dispsetParameter39, i => i, ParameterLogType.Analogue, _parameterLogger, timeCountersGroup.DisplayName) : new AggregateParamViewModel <int>(dispsetParameter39, timeCountersGroup.DisplayName);
            IDisplayParameter setParam50Vm = _version == AppVersion.Full ? (IDisplayParameter) new ChartParamViewModel <int, int>(recvParam50, dispsetParameter50, i => i, ParameterLogType.Analogue, _parameterLogger, timeCountersGroup.DisplayName) : new AggregateParamViewModel <int>(dispsetParameter50, timeCountersGroup.DisplayName);
            IDisplayParameter setParam51Vm = _version == AppVersion.Full ? (IDisplayParameter) new ChartParamViewModel <int, int>(recvParam51, dispsetParameter51, i => i, ParameterLogType.Analogue, _parameterLogger, timeCountersGroup.DisplayName) : new AggregateParamViewModel <int>(dispsetParameter51, timeCountersGroup.DisplayName);
            IDisplayParameter setParam52Vm = _version == AppVersion.Full ? (IDisplayParameter) new ChartParamViewModel <int, int>(recvParam52, dispsetParameter52, i => i, ParameterLogType.Analogue, _parameterLogger, timeCountersGroup.DisplayName) : new AggregateParamViewModel <int>(dispsetParameter52, timeCountersGroup.DisplayName);


            timeCountersGroup.AddParameterOrGroup(setParam39Vm);
            timeCountersGroup.AddParameterOrGroup(setParam50Vm);
            timeCountersGroup.AddParameterOrGroup(setParam51Vm);
            timeCountersGroup.AddParameterOrGroup(setParam52Vm);

            //timeCountersGroup.AddParameterOrGroup(timeCountersGroup);
            return(timeCountersGroup);
        }
        public IDisplayGroup Build()
        {
            var ksmGroup = new GroupParamViewModel("КСМ");


            // setting group of settable params
            var setParamsGroup = new GroupParamViewModel("Параметры КСМ");


            #region Param00

            var recvParam00 = new RecvParam <int, IList <BytesPair> >("00: Датчик в кабине машиниста",
                                                                      _cmdListenerKsmParams, data => data[00].HighFirstUnsignedValue);

            var dispParam00 =
                new DispParamViewModel <string, int>(recvParam00.ReceiveName, recvParam00,
                                                     _uiNotifier, data => (data * 0.01).ToString("f2"), "ER", "?");
            var chartParam00 = new ChartParamViewModel <int, string>(recvParam00,
                                                                     dispParam00, data => data * 0.01, ParameterLogType.Analogue, _parameterLogger,
                                                                     setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam00);

            #endregion

            #region Param01

            var recvParam01 = new RecvParam <int, IList <BytesPair> >("01: Датчик на трубке выхода испарителя",
                                                                      _cmdListenerKsmParams, data => data[01].HighFirstUnsignedValue);

            var dispParam01 =
                new DispParamViewModel <string, int>(recvParam01.ReceiveName, recvParam01,
                                                     _uiNotifier, data => (data * 0.01).ToString("f2"), "ER", "?");
            var chartParam01 = new ChartParamViewModel <int, string>(recvParam01,
                                                                     dispParam01, data => data * 0.01, ParameterLogType.Analogue, _parameterLogger,
                                                                     setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam01);

            #endregion

            #region Param02

            var recvParam02 = new RecvParam <int, IList <BytesPair> >("02: Датчик на трубке выхода конденсатора",
                                                                      _cmdListenerKsmParams, data => data[02].HighFirstUnsignedValue);

            var dispParam02 =
                new DispParamViewModel <string, int>(recvParam02.ReceiveName, recvParam02,
                                                     _uiNotifier, data => (data * 0.01).ToString("f2"), "ER", "?");
            var chartParam02 = new ChartParamViewModel <int, string>(recvParam02,
                                                                     dispParam02, data => data * 0.01, ParameterLogType.Analogue, _parameterLogger,
                                                                     setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam02);

            #endregion

            #region Param03

            var recvParam03 = new RecvParam <int, IList <BytesPair> >("03: Уставка температуры в кабине",
                                                                      _cmdListenerKsmParams, data => data[03].HighFirstUnsignedValue);

            var dispParam03 =
                new DispParamViewModel <string, int>(recvParam03.ReceiveName, recvParam03,
                                                     _uiNotifier, data => (data * 0.01).ToString("f2"), "ER", "?");
            var chartParam03 = new ChartParamViewModel <int, string>(recvParam03,
                                                                     dispParam03, data => data * 0.01, ParameterLogType.Analogue, _parameterLogger,
                                                                     setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam03);

            #endregion

            #region Param04

            var recvParam04 = new RecvParam <int, IList <BytesPair> >("04: Уставка объема подачи воздуха в кабину",
                                                                      _cmdListenerKsmParams, data => data[04].HighFirstUnsignedValue);

            var dispParam04 =
                new DispParamViewModel <string, int>(recvParam04.ReceiveName, recvParam04,
                                                     _uiNotifier, data => data.ToString(), "ER", "?");
            var chartParam04 = new ChartParamViewModel <int, string>(recvParam04,
                                                                     dispParam04, data => data, ParameterLogType.Analogue, _parameterLogger,
                                                                     setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam04);

            #endregion

            #region Param05

            var recvParam05 = new RecvParam <int, IList <BytesPair> >("05: PIC порт A",
                                                                      _cmdListenerKsmParams, data => data[05].HighFirstUnsignedValue);

            var groupParam05 = new GroupParamViewModel(recvParam05.ReceiveName);
            setParamsGroup.AddParameterOrGroup(groupParam05);


            var dispParam0504 = new DispParamViewModel <bool, int>(
                "PA.4=0 – включение 3ст.", recvParam05,
                _uiNotifier, incomingByte => !incomingByte.GetBit(4),
                false, false);
            var chartParam0504 = new ChartParamViewModel <int, bool>(
                recvParam05, dispParam0504,
                data => !data.GetBit(4) ? 1.0 : 0.0, ParameterLogType.Discrete, _parameterLogger,
                setParamsGroup.DisplayName, groupParam05.DisplayName);
            groupParam05.AddParameterOrGroup(chartParam0504);


            var dispParam0505 = new DispParamViewModel <bool, int>(
                "PA.5=0 – включение 4ст.", recvParam05,
                _uiNotifier, incomingByte => !incomingByte.GetBit(5),
                false, false);
            var chartParam0505 = new ChartParamViewModel <int, bool>(
                recvParam05, dispParam0505,
                data => !data.GetBit(5) ? 1.0 : 0.0, ParameterLogType.Discrete, _parameterLogger,
                setParamsGroup.DisplayName, groupParam05.DisplayName);
            groupParam05.AddParameterOrGroup(chartParam0505);

            #endregion


            #region Param06

            var recvParam06 = new RecvParam <int, IList <BytesPair> >("06: PIC порт C",
                                                                      _cmdListenerKsmParams, data => data[06].HighFirstUnsignedValue);

            var groupParam06 = new GroupParamViewModel(recvParam06.ReceiveName);
            setParamsGroup.AddParameterOrGroup(groupParam06);


            var dispParam0600 = new DispParamViewModel <bool, int>(
                "PС.0=0 – включение 1ст.", recvParam06,
                _uiNotifier, incomingByte => !incomingByte.GetBit(0),
                false, false);
            var chartParam0600 = new ChartParamViewModel <int, bool>(
                recvParam06, dispParam0600,
                data => !data.GetBit(0) ? 1.0 : 0.0, ParameterLogType.Discrete, _parameterLogger,
                setParamsGroup.DisplayName, groupParam06.DisplayName);
            groupParam06.AddParameterOrGroup(chartParam0600);


            var dispParam0601 = new DispParamViewModel <bool, int>(
                "PС.1=0 – включение клапана ЭРВ", recvParam06,
                _uiNotifier, incomingByte => !incomingByte.GetBit(1),
                false, false);
            var chartParam0601 = new ChartParamViewModel <int, bool>(
                recvParam06, dispParam0601,
                data => !data.GetBit(1) ? 1.0 : 0.0, ParameterLogType.Discrete, _parameterLogger,
                setParamsGroup.DisplayName, groupParam06.DisplayName);
            groupParam06.AddParameterOrGroup(chartParam0601);

            var dispParam0606 = new DispParamViewModel <bool, int>(
                "PС.6=1 – выключение реле разрешения запуска контактора компрессора", recvParam06,
                _uiNotifier, incomingByte => incomingByte.GetBit(6),
                false, false);
            var chartParam0606 = new ChartParamViewModel <int, bool>(
                recvParam06, dispParam0606,
                data => data.GetBit(6) ? 1.0 : 0.0, ParameterLogType.Discrete, _parameterLogger,
                setParamsGroup.DisplayName, groupParam06.DisplayName);
            groupParam06.AddParameterOrGroup(chartParam0606);


            var dispParam0607 = new DispParamViewModel <bool, int>(
                "PС.7=0 – включение 2ст.", recvParam06,
                _uiNotifier, incomingByte => !incomingByte.GetBit(7),
                false, false);
            var chartParam0607 = new ChartParamViewModel <int, bool>(
                recvParam06, dispParam0607,
                data => !data.GetBit(7) ? 1.0 : 0.0, ParameterLogType.Discrete, _parameterLogger,
                setParamsGroup.DisplayName, groupParam06.DisplayName);
            groupParam06.AddParameterOrGroup(chartParam0607);

            #endregion


            #region Param10

            var recvParam10 = new RecvParam <int, IList <BytesPair> >("10: PIC порт B",
                                                                      _cmdListenerKsmParams, data => data[10].HighFirstUnsignedValue);

            var groupParam10 = new GroupParamViewModel(recvParam10.ReceiveName);
            setParamsGroup.AddParameterOrGroup(groupParam10);


            var dispParam1000 = new DispParamViewModel <bool, int>(
                "PB.0=1 – авария компрессора по максимальному давлению", recvParam10,
                _uiNotifier, incomingByte => incomingByte.GetBit(0),
                false, false);
            var chartParam1000 = new ChartParamViewModel <int, bool>(
                recvParam10, dispParam1000,
                data => data.GetBit(0) ? 1.0 : 0.0, ParameterLogType.Discrete, _parameterLogger,
                setParamsGroup.DisplayName, groupParam10.DisplayName);
            groupParam10.AddParameterOrGroup(chartParam1000);


            var dispParam1001 = new DispParamViewModel <bool, int>(
                "PB.1=1 – авария компрессора по максимальному давлению", recvParam10,
                _uiNotifier, incomingByte => incomingByte.GetBit(1),
                false, false);
            var chartParam1001 = new ChartParamViewModel <int, bool>(
                recvParam10, dispParam1001,
                data => data.GetBit(1) ? 1.0 : 0.0, ParameterLogType.Discrete, _parameterLogger,
                setParamsGroup.DisplayName, groupParam10.DisplayName);
            groupParam10.AddParameterOrGroup(chartParam1001);


            var dispParam1002 = new DispParamViewModel <bool, int>(
                "PB.2=1 – авария двигателя компрессора", recvParam10,
                _uiNotifier, incomingByte => incomingByte.GetBit(2),
                false, false);
            var chartParam1002 = new ChartParamViewModel <int, bool>(
                recvParam10, dispParam1002,
                data => data.GetBit(2) ? 1.0 : 0.0, ParameterLogType.Discrete, _parameterLogger,
                setParamsGroup.DisplayName, groupParam10.DisplayName);
            groupParam10.AddParameterOrGroup(chartParam1002);

            var dispParam1003 = new DispParamViewModel <bool, int>(
                "PB.3=0 – команда на включение кондиционера", recvParam10,
                _uiNotifier, incomingByte => !incomingByte.GetBit(3),
                false, false);
            var chartParam1003 = new ChartParamViewModel <int, bool>(
                recvParam10, dispParam1003,
                data => !data.GetBit(3) ? 1.0 : 0.0, ParameterLogType.Discrete, _parameterLogger,
                setParamsGroup.DisplayName, groupParam10.DisplayName);
            groupParam10.AddParameterOrGroup(chartParam1003);

            var dispParam1004 = new DispParamViewModel <bool, int>(
                "PB.4=0 – команда на включение кондиционера в режиме обогрев/охлаждение", recvParam10,
                _uiNotifier, incomingByte => !incomingByte.GetBit(4),
                false, false);
            var chartParam1004 = new ChartParamViewModel <int, bool>(
                recvParam10, dispParam1004,
                data => !data.GetBit(4) ? 1.0 : 0.0, ParameterLogType.Discrete, _parameterLogger,
                setParamsGroup.DisplayName, groupParam10.DisplayName);
            groupParam10.AddParameterOrGroup(chartParam1004);

            var dispParam1005 = new DispParamViewModel <bool, int>(
                "PB.5=0 – компрессор включен", recvParam10,
                _uiNotifier, incomingByte => !incomingByte.GetBit(5),
                false, false);
            var chartParam1005 = new ChartParamViewModel <int, bool>(
                recvParam10, dispParam1005,
                data => !data.GetBit(5) ? 1.0 : 0.0, ParameterLogType.Discrete, _parameterLogger,
                setParamsGroup.DisplayName, groupParam10.DisplayName);
            groupParam10.AddParameterOrGroup(chartParam1005);

            #endregion

            #region Param11

            var recvParam11 = new RecvParam <int, IList <BytesPair> >("11: Давление в контуре низкого давления, бар",
                                                                      _cmdListenerKsmParams, data => data[11].HighFirstSignedValue);

            var dispParam11 =
                new DispParamViewModel <string, int>(recvParam11.ReceiveName, recvParam11,
                                                     _uiNotifier, data => (data * 0.1).ToString("f1"), "ER", "?");
            var chartParam11 = new ChartParamViewModel <int, string>(recvParam11,
                                                                     dispParam11, data => data * 0.1, ParameterLogType.Analogue, _parameterLogger,
                                                                     setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam11);

            #endregion

            #region Param12

            var recvParam12 = new RecvParam <int, IList <BytesPair> >("12: Давление в контуре высокого давления, бар",
                                                                      _cmdListenerKsmParams, data => data[12].HighFirstSignedValue);

            var dispParam12 =
                new DispParamViewModel <string, int>(recvParam12.ReceiveName, recvParam12,
                                                     _uiNotifier, data => (data * 0.1).ToString("f1"), "ER", "?");
            var chartParam12 = new ChartParamViewModel <int, string>(recvParam12,
                                                                     dispParam12, data => data * 0.1, ParameterLogType.Analogue, _parameterLogger,
                                                                     setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam12);

            #endregion

            #region Param13

            var recvParam13 = new RecvParam <int, IList <BytesPair> >("13: Температура в контуре низкого давления, град",
                                                                      _cmdListenerKsmParams, data => (sbyte)data[13].Second);

            var dispParam13 =
                new DispParamViewModel <string, int>(recvParam13.ReceiveName, recvParam13,
                                                     _uiNotifier, data => (data * 0.1).ToString("f1"), "ER", "?");
            var chartParam13 = new ChartParamViewModel <int, string>(recvParam13,
                                                                     dispParam13, data => data * 0.1, ParameterLogType.Analogue, _parameterLogger,
                                                                     setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam13);

            #endregion

            #region Param14

            var recvParam14 = new RecvParam <int, IList <BytesPair> >("14: Перегрев хладагента, град",
                                                                      _cmdListenerKsmParams, data => (sbyte)data[14].Second);

            var dispParam14 =
                new DispParamViewModel <string, int>(recvParam14.ReceiveName, recvParam14,
                                                     _uiNotifier, data => data.ToString(), "ER", "?");
            var chartParam14 = new ChartParamViewModel <int, string>(recvParam14,
                                                                     dispParam14, data => data, ParameterLogType.Analogue, _parameterLogger,
                                                                     setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam14);

            #endregion

            #region Param16_0

            var recvParam16_0 = new RecvParam <bool, IList <BytesPair> >("16: Состояние обмена 1: b.0- вычитка текущих данных из МУК3",
                                                                         _cmdListenerKsmParams, data => data[16].Second.GetBit(0));

            var dispParam16_0 =
                new DispParamViewModel <bool, bool>(recvParam16_0.ReceiveName, recvParam16_0,
                                                    _uiNotifier, data => data, false, false);

            var chartParam16_0 = new ChartParamViewModel <bool, bool>(recvParam16_0,
                                                                      dispParam16_0, data => data ? 1 : 0, ParameterLogType.Discrete, _parameterLogger,
                                                                      setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam16_0);

            #endregion

            #region Param16_1

            var recvParam16_1 = new RecvParam <bool, IList <BytesPair> >("16: Состояние обмена 1: b.1- запись команд в МУК3",
                                                                         _cmdListenerKsmParams, data => data[16].Second.GetBit(1));

            var dispParam16_1 =
                new DispParamViewModel <bool, bool>(recvParam16_1.ReceiveName, recvParam16_1,
                                                    _uiNotifier, data => data, false, false);

            var chartParam16_1 = new ChartParamViewModel <bool, bool>(recvParam16_1,
                                                                      dispParam16_1, data => data ? 1 : 0, ParameterLogType.Discrete, _parameterLogger,
                                                                      setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam16_1);

            #endregion

            #region Param16_2

            var recvParam16_2 = new RecvParam <bool, IList <BytesPair> >("16: Состояние обмена 1: b.2- обмен с ПЧ",
                                                                         _cmdListenerKsmParams, data => data[16].Second.GetBit(2));

            var dispParam16_2 =
                new DispParamViewModel <bool, bool>(recvParam16_2.ReceiveName, recvParam16_2,
                                                    _uiNotifier, data => data, false, false);

            var chartParam16_2 = new ChartParamViewModel <bool, bool>(recvParam16_2,
                                                                      dispParam16_2, data => data ? 1 : 0, ParameterLogType.Discrete, _parameterLogger,
                                                                      setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam16_2);

            #endregion

            #region Param16_3

            var recvParam16_3 = new RecvParam <bool, IList <BytesPair> >("16: Состояние обмена 1: b.3- запись данных в РПД",
                                                                         _cmdListenerKsmParams, data => data[16].Second.GetBit(3));

            var dispParam16_3 =
                new DispParamViewModel <bool, bool>(recvParam16_3.ReceiveName, recvParam16_3,
                                                    _uiNotifier, data => data, false, false);

            var chartParam16_3 = new ChartParamViewModel <bool, bool>(recvParam16_3,
                                                                      dispParam16_3, data => data ? 1 : 0, ParameterLogType.Discrete, _parameterLogger,
                                                                      setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam16_3);

            #endregion

            #region Param16_4

            var recvParam16_4 = new RecvParam <bool, IList <BytesPair> >("16: Состояние обмена 1: b.4- вычитка корректируемого параметра из программы технического абонента",
                                                                         _cmdListenerKsmParams, data => data[16].Second.GetBit(4));

            var dispParam16_4 =
                new DispParamViewModel <bool, bool>(recvParam16_4.ReceiveName, recvParam16_4,
                                                    _uiNotifier, data => data, false, false);

            var chartParam16_4 = new ChartParamViewModel <bool, bool>(recvParam16_4,
                                                                      dispParam16_4, data => data ? 1 : 0, ParameterLogType.Discrete, _parameterLogger,
                                                                      setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam16_4);

            #endregion


            #region Param16_5

            var recvParam16_5 = new RecvParam <bool, IList <BytesPair> >("16: Состояние обмена 1: b.5- отсылка текущих данных техническому абоненту",
                                                                         _cmdListenerKsmParams, data => data[16].Second.GetBit(5));

            var dispParam16_5 =
                new DispParamViewModel <bool, bool>(recvParam16_5.ReceiveName, recvParam16_5,
                                                    _uiNotifier, data => data, false, false);

            var chartParam16_5 = new ChartParamViewModel <bool, bool>(recvParam16_5,
                                                                      dispParam16_5, data => data ? 1 : 0, ParameterLogType.Discrete, _parameterLogger,
                                                                      setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam16_5);

            #endregion


            #region Param18

            var recvParam18 = new RecvParam <int, IList <BytesPair> >("18: Уставка ПЧ",
                                                                      _cmdListenerKsmParams, data => data[18].HighFirstSignedValue);

            var dispParam18 =
                new DispParamViewModel <string, int>(recvParam18.ReceiveName, recvParam18,
                                                     _uiNotifier, data => data.ToString(), "ER", "?");
            var chartParam18 = new ChartParamViewModel <int, string>(recvParam18,
                                                                     dispParam18, data => data, ParameterLogType.Analogue, _parameterLogger,
                                                                     setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam18);

            #endregion

            #region Param19

            var recvParam19 = new RecvParam <int, IList <BytesPair> >("19: ШИМ клапана перегрева",
                                                                      _cmdListenerKsmParams, data => data[19].Second);

            var dispParam19 =
                new DispParamViewModel <string, int>(recvParam19.ReceiveName, recvParam19,
                                                     _uiNotifier, data => data.ToString(), "ER", "?");
            var chartParam19 = new ChartParamViewModel <int, string>(recvParam19,
                                                                     dispParam19, data => data, ParameterLogType.Analogue, _parameterLogger,
                                                                     setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(chartParam19);

            #endregion


            #region Param28

            var recvParam28 = new RecvParam <int, IList <BytesPair> >(
                "28: Максимальный ШИМ (PWMmax_cool)", _cmdListenerKsmParams,
                data => data[28].HighFirstUnsignedValue);
            var dispsetParam28 = new DispParamSettableViewModel <int, int, int>(recvParam28.ReceiveName, recvParam28,
                                                                                _uiNotifier, i => i, 0, 0, val =>
            {
                if (val < 0 || val > 255)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(28, (ushort)val, callback));
            var aggSetParam28 = new ChartParamViewModel <int, int>(recvParam28, dispsetParam28, i => i,
                                                                   ParameterLogType.Analogue, _parameterLogger, setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(aggSetParam28);

            #endregion

            #region Param29

            var recvParam29 = new RecvParam <int, IList <BytesPair> >(
                "29: Минимальный ШИМ (PWMmin_cool)", _cmdListenerKsmParams,
                data => data[29].HighFirstUnsignedValue);
            var dispsetParam29 = new DispParamSettableViewModel <int, int, int>(recvParam29.ReceiveName, recvParam29,
                                                                                _uiNotifier, i => i, 0, 0, val =>
            {
                if (val < 0 || val > 255)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(29, (ushort)val, callback));
            var aggSetParam29 = new ChartParamViewModel <int, int>(recvParam29, dispsetParam29, i => i,
                                                                   ParameterLogType.Analogue, _parameterLogger, setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(aggSetParam29);

            #endregion

            #region Param30

            var recvParam30 = new RecvParam <int, IList <BytesPair> >(
                "30: Дельта +  (plus_cool)", _cmdListenerKsmParams,
                data => data[30].HighFirstUnsignedValue);
            var dispsetParam30 = new DispParamSettableViewModel <int, int, int>(recvParam30.ReceiveName, recvParam30,
                                                                                _uiNotifier, i => i, 0, 0, val =>
            {
                if (val < 0 || val > 65535)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(30, (ushort)val, callback));
            var aggSetParam30 = new ChartParamViewModel <int, int>(recvParam30, dispsetParam30, i => i,
                                                                   ParameterLogType.Analogue, _parameterLogger, setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(aggSetParam30);

            #endregion

            #region Param31

            var recvParam31 = new RecvParam <int, IList <BytesPair> >(
                "31: Дельта - (minus_cool)", _cmdListenerKsmParams,
                data => data[31].HighFirstUnsignedValue);
            var dispsetParam31 = new DispParamSettableViewModel <int, int, int>(recvParam31.ReceiveName, recvParam31,
                                                                                _uiNotifier, i => i, 0, 0, val =>
            {
                if (val < 0 || val > 65535)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(31, (ushort)val, callback));
            var aggSetParam31 = new ChartParamViewModel <int, int>(recvParam31, dispsetParam31, i => i,
                                                                   ParameterLogType.Analogue, _parameterLogger, setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(aggSetParam31);

            #endregion


            #region Param36

            var recvParam36 = new RecvParam <int, IList <BytesPair> >(
                "36: Дельта уставки температуры, отладка", _cmdListenerKsmParams,
                data => data[36].HighFirstUnsignedValue);
            var dispsetParam36 = new DispParamSettableViewModel <string, int, double>(recvParam36.ReceiveName, recvParam36,
                                                                                      _uiNotifier, i => (i * 0.1 - 2.5).ToString("f1"), "ER", "?", val =>
            {
                if (val < -2.5 || val > 2.5)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(36, (ushort)((val + 2.5) * 10), callback));
            var aggSetParam36 = new ChartParamViewModel <int, string>(recvParam36, dispsetParam36, i => i,
                                                                      ParameterLogType.Analogue, _parameterLogger, setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(aggSetParam36);

            #endregion


            #region Param37

            var recvParam37 = new RecvParam <int, IList <BytesPair> >(
                "37: Принудительный режим обогрев/охлаждение", _cmdListenerKsmParams,
                data => data[37].HighFirstUnsignedValue);
            var dispsetParam37 = new DispParamSettableViewModel <string, int, int>(recvParam37.ReceiveName, recvParam37,
                                                                                   _uiNotifier, i => new WarmOrCoolForcedModeToStringConverter().Build((WarmOrCoolForcedMode)i), "ER",
                                                                                   "?", val =>
            {
                if (val < 0 || val > 10)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }, 0, 0, (val, callback) => _parameterSetter.SetParameterAsync(37, (ushort)val, callback));
            var aggSetParam37 = new ChartParamViewModel <int, string>(recvParam37, dispsetParam37, i => i,
                                                                      ParameterLogType.Analogue, _parameterLogger, setParamsGroup.DisplayName);
            setParamsGroup.AddParameterOrGroup(aggSetParam37);

            #endregion


            ksmGroup.AddParameterOrGroup(setParamsGroup);
            return(ksmGroup);
        }