Пример #1
0
        /// <summary>
        /// Получить текущие (усредненные за 2 сек.) значения электроэнергии (сегмент #36)
        /// </summary>
        /// <param name="Values">Структура текущих значений</param>
        public void GetCurrentValues(out CurrentValues Values)
        {
            Values = new CurrentValues();
            const byte   segment = 36;
            const UInt16 offset  = 0;
            const byte   len     = 33;

            try
            {
                SegmentRead(segment, offset, len, out byte[] QueryResult);
                Values = ToCurrentValues(QueryResult);
                ChangeCmdStatus(StringsTable.GetCVOK);
            }
            catch (OblikSegException)
            {
                string mes = StringsTable.GetCurrentValuesErr;
                ChangeCmdStatus(mes);
                throw new OblikCmdException(mes);
            }
        }
Пример #2
0
        /// <summary>
        /// Преобразование массива байт в структуру текущих значений
        /// </summary>
        /// <param name="array"></param>
        /// <returns></returns>
        private CurrentValues ToCurrentValues(byte[] array)
        {
            CurrentValues res = new CurrentValues();

            int index = 0;

            res.Curr1 = ToUminiflo(ArrayPart(array, index, 2));
            index    += 2;

            res.Curr2 = ToUminiflo(ArrayPart(array, index, 2));
            index    += 2;

            res.Curr3 = ToUminiflo(ArrayPart(array, index, 2));
            index    += 2;

            res.Volt1 = ToUminiflo(ArrayPart(array, index, 2));
            index    += 2;

            res.Volt2 = ToUminiflo(ArrayPart(array, index, 2));
            index    += 2;

            res.Volt3 = ToUminiflo(ArrayPart(array, index, 2));
            index    += 2;

            res.Act_pw = ToSminiflo(ArrayPart(array, index, 2));
            index     += 2;

            res.Rea_pw = ToSminiflo(ArrayPart(array, index, 2));
            index     += 2;

            //Reserved1
            index += 2;

            res.Freq = ToUint16(ArrayPart(array, index, 2));

            return(res);
        }