Esempio n. 1
0
        public static DeltaItem CreateAccumDeltaItem(int addressInChannel,
                                                     int lastUpdateTimestamp,
                                                     TmNativeDefs.DeltaItemsFlags deltaFlags,
                                                     int value,
                                                     string additionalInfo,
                                                     TmAddr tmAddr,
                                                     string objectName)
        {
            var enumShift  = deltaFlags.HasFlag(TmNativeDefs.DeltaItemsFlags.ZeroEnum) ? 0 : 1;
            var updateTime = lastUpdateTimestamp == 0
                         ? (DateTime?)null
                         : DateUtil.GetDateTimeFromTimestamp(lastUpdateTimestamp);

            return(new DeltaItem
            {
                AddressInChannelString = deltaFlags.HasFlag(TmNativeDefs.DeltaItemsFlags.Hex)
                                          ? $"0x{addressInChannel:X}"
                                          : $"{addressInChannel + enumShift}",
                Type = DeltaItemTypes.Accum,
                TypeString = "ТИИ",
                UpdateTime = updateTime,
                ValueString = deltaFlags.HasFlag(TmNativeDefs.DeltaItemsFlags.Reliable)
                               ? $"{value} "
                               : $"{value} ?",
                AdditionalInfo = additionalInfo,
                TmAddress = tmAddr,
                ObjectName = objectName
            });
        }
Esempio n. 2
0
        public static DeltaItem CreateStatusDeltaItem(int addressInChannel,
                                                      int lastUpdateTimestamp,
                                                      TmNativeDefs.DeltaItemsFlags deltaFlags,
                                                      int value,
                                                      string additionalInfo,
                                                      TmAddr tmAddr,
                                                      string objectName)
        {
            var deltaItem = new DeltaItem
            {
                Type       = DeltaItemTypes.Status,
                TypeString = "ТС",
                TmAddress  = tmAddr,
                ObjectName = objectName
            };

            if (deltaFlags.HasFlag(TmNativeDefs.DeltaItemsFlags.ZeroEnum))
            {
                deltaItem.AddressInChannelString = deltaFlags.HasFlag(TmNativeDefs.DeltaItemsFlags.Hex)
                                             ? $"0x{addressInChannel:X}"
                                             : $"{addressInChannel}";
            }
            else
            {
                var addressQuotient = Math.DivRem(addressInChannel, 8, out var addressRemainder);
                deltaItem.AddressInChannelString = $"{addressQuotient + 1}-{addressRemainder}";
            }

            deltaItem.ValueString = deltaFlags.HasFlag(TmNativeDefs.DeltaItemsFlags.Reliable)
                                ? $"{value & 0xF}"
                                : $"{value & 0xF} ?";

            if (deltaFlags.HasFlag(TmNativeDefs.DeltaItemsFlags.DestVal))
            {
                deltaItem.ValueString = deltaFlags.HasFlag(TmNativeDefs.DeltaItemsFlags.DestReli)
                                  ? $"{deltaItem.ValueString} ({value >> 4})"
                                  : $"{deltaItem.ValueString} ({value >> 4} ?)";
            }

            deltaItem.UpdateTime = lastUpdateTimestamp == 0
                               ? (DateTime?)null
                               : DateUtil.GetDateTimeFromTimestamp(lastUpdateTimestamp);

            deltaItem.AdditionalInfo = additionalInfo;

            if (deltaFlags.HasFlag(TmNativeDefs.DeltaItemsFlags.S2Break))
            {
                deltaItem.AdditionalInfo = $"{deltaItem.AdditionalInfo} <Обрыв>";
            }

            if (deltaFlags.HasFlag(TmNativeDefs.DeltaItemsFlags.S2Malfn))
            {
                deltaItem.AdditionalInfo = $"{deltaItem.AdditionalInfo} <Неисп>";
            }

            return(deltaItem);
        }