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