/// <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); } }
/// <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); }