public UglyParameter this[DriverParameter parameter, int index, int unit = 0] { get { foreach (var pair in this) { if (pair.Key.Tariff != index) { continue; } if (pair.Key.Unit != unit) { continue; } if (pair.Key.DriverParameters.Contains(parameter)) { return(pair.Value); } } return(UglyParameter.Unknown); } }
private void ParseExtendedParameter2(double value, byte[] rowData) { if (Drh.Vib.Vife == null || !Drh.Vib.Vife.Any()) { return; } switch (Drh.Vib.Vife.FirstOrDefault().Data) { case 0x21: { DriverParameter = DriverParameter.VolumeExFeet; Value = 0.1 * value; return; } case 0x22: { DriverParameter = DriverParameter.VolumeExAgDel; Value = 0.1 * value; return; } case 0x23: { DriverParameter = DriverParameter.VolumeExAg; Value = value; return; } case 0x24: { DriverParameter = DriverParameter.VolumeFlowExAgMinDel; Value = 0.001 * value; return; } case 0x25: { DriverParameter = DriverParameter.VolumeFlowExAgMin; Value = value; return; } case 0x26: { DriverParameter = DriverParameter.VolumeFlowExAgH; Value = value; return; } } var mask = (Drh.Vib.Vife.FirstOrDefault().Data >> 2) & 0x1f; var multiplier = Drh.Vib.Vife.FirstOrDefault().Data & 0x03; switch (mask) { case 0x00: { DriverParameter = DriverParameter.EnergyExMwh; Value = Math.Pow(10, multiplier - 1) * value; return; } case 0x04: { DriverParameter = DriverParameter.EnergyExGJ; Value = Math.Pow(10, multiplier - 1) * value; return; } case 0x08: { DriverParameter = DriverParameter.VolumeExm3; Value = Math.Pow(10, multiplier + 2) * value; return; } case 0x0c: { DriverParameter = DriverParameter.MassEx; Value = Math.Pow(10, multiplier + 2) * value; return; } case 0x14: { DriverParameter = DriverParameter.PowerExMW; Value = Math.Pow(10, multiplier - 1) * value; return; } case 0x18: { DriverParameter = DriverParameter.PowerExGJ; Value = Math.Pow(10, multiplier - 1) * value; return; } } var doubleMask = (Drh.Vib.Vife.FirstOrDefault().Data >> 2) & 0x1f; var doubleMultiplier = Drh.Vib.Vife.FirstOrDefault().Data & 0x03; switch (doubleMask) { case 0x16: { DriverParameter = DriverParameter.FlowTemperatureEx; Value = Math.Pow(10, doubleMultiplier - 3) * value; return; } case 0x17: { DriverParameter = DriverParameter.ReturnTemperatureEx; Value = Math.Pow(10, doubleMultiplier - 3) * value; return; } case 0x18: { DriverParameter = DriverParameter.TemperatureDifferenceEx; Value = Math.Pow(10, doubleMultiplier - 3) * value; return; } case 0x19: { DriverParameter = DriverParameter.ExternalTemperatureEx; Value = Math.Pow(10, doubleMultiplier - 3) * value; return; } case 0x1c: { DriverParameter = DriverParameter.TemperatureLimitF; Value = Math.Pow(10, doubleMultiplier - 3) * value; return; } case 0x1d: { DriverParameter = DriverParameter.TemperatureLimitC; Value = Math.Pow(10, doubleMultiplier - 3) * value; return; } } var thirdMask = (Drh.Vib.Vife.FirstOrDefault().Data >> 3) & 0xf; var thirdMultiplier = Drh.Vib.Vife.FirstOrDefault().Data & 0x07; if (thirdMask == 0x0f) { DriverParameter = DriverParameter.CumulMaxPower; Value = Math.Pow(10, thirdMultiplier - 3) * value; return; } }
private void ParseExtendedParameter1(double value, byte[] rowData) { if (Drh.Vib.Vife == null || !Drh.Vib.Vife.Any()) { return; } switch (Drh.Vib.Vife.FirstOrDefault().Data) { case 0x08: { DriverParameter = DriverParameter.AccessNumber; Value = value; return; } case 0x09: { DriverParameter = DriverParameter.Medium; Value = 0.1 * value; return; } case 0x0a: { DriverParameter = DriverParameter.Manufacturer; Value = value; return; } case 0x0b: { DriverParameter = DriverParameter.ParameterSetIdentification; Value = 0.001 * value; return; } case 0x0c: { DriverParameter = DriverParameter.Model; Value = value; return; } case 0x0d: { DriverParameter = DriverParameter.HardwareVersion; Value = value; return; } case 0x0e: { DriverParameter = DriverParameter.FirmwareVersion; Value = value; return; } case 0x0f: { DriverParameter = DriverParameter.SoftWareVersion; Value = value; return; } case 0x10: { DriverParameter = DriverParameter.CustomerLocation; Value = value; return; } case 0x11: { DriverParameter = DriverParameter.Customer; Value = value; return; } case 0x12: { DriverParameter = DriverParameter.AccessCodeUser; Value = value; return; } case 0x13: { DriverParameter = DriverParameter.AccessCodeOperator; Value = value; return; } case 0x14: { DriverParameter = DriverParameter.AccessCodeSystemOperator; Value = value; return; } case 0x15: { DriverParameter = DriverParameter.AccessCodeDeveloper; Value = value; return; } case 0x16: { DriverParameter = DriverParameter.Password; Value = value; return; } case 0x17: { DriverParameter = DriverParameter.ErrorFlags; Value = value; return; } case 0x18: { DriverParameter = DriverParameter.ErrorMask; Value = value; return; } case 0x1a: { DriverParameter = DriverParameter.DigitalOutput; Value = value; return; } case 0x1b: { DriverParameter = DriverParameter.DigitalInput; Value = value; return; } case 0x1c: { DriverParameter = DriverParameter.Baudrate; Value = value; return; } case 0x1d: { DriverParameter = DriverParameter.ResponseDelayTime; Value = value; return; } case 0x1e: { DriverParameter = DriverParameter.Retry; Value = value; return; } case 0x61: { DriverParameter = DriverParameter.CumulationCounter; Value = value; return; } } }
private void ParseStandardParameter(double value, byte[] rowData) { var mask = (Drh.Vib.Vif.UnitAndMultiplier >> 3) & 0xf; var multiplier = Drh.Vib.Vif.UnitAndMultiplier & 0x07; switch (mask) { case 0: { DriverParameter = DriverParameter.EnergyWh; Value = Math.Pow(10, multiplier - 3) * value; } break; case 1: { DriverParameter = DriverParameter.EnergyJ; Value = Math.Pow(10, multiplier) * value; } break; case 2: { DriverParameter = DriverParameter.Volume; Value = Math.Pow(10, multiplier - 6) * value; } break; case 3: { DriverParameter = DriverParameter.Mass; Value = Math.Pow(10, multiplier - 3) * value; } break; case 4: { var localMultiplier = multiplier & 0x03; var type = multiplier >> 2; if (type == 0) { if (localMultiplier == 0) { DriverParameter = DriverParameter.OnTimeSeconds; } else if (localMultiplier == 1) { DriverParameter = DriverParameter.OnTimeMinutes; } else if (localMultiplier == 2) { DriverParameter = DriverParameter.OnTimeHours; } else if (localMultiplier == 3) { DriverParameter = DriverParameter.OnTimeDays; } } else if (type == 1) { if (localMultiplier == 0) { DriverParameter = DriverParameter.OperatingTimeSeconds; } else if (localMultiplier == 1) { DriverParameter = DriverParameter.OperatingTimeMinutes; } else if (localMultiplier == 2) { DriverParameter = DriverParameter.OperatingTimeHours; } else if (localMultiplier == 3) { DriverParameter = DriverParameter.OperatingTimeDays; } } Value = value; } break; case 5: { DriverParameter = DriverParameter.PowerW; Value = Math.Pow(10, multiplier - 3) * value; } break; case 6: { DriverParameter = DriverParameter.PowerJh; Value = Math.Pow(10, multiplier) * value; } break; case 7: { DriverParameter = DriverParameter.VolumeFlowm3h; Value = Math.Pow(10, multiplier - 6) * value; } break; case 8: { DriverParameter = DriverParameter.VolumeFlowExtm3min; Value = Math.Pow(10, multiplier - 7) * value; } break; case 9: { DriverParameter = DriverParameter.VolumeFlowExtm3s; Value = Math.Pow(10, multiplier - 9) * value; } break; case 10: { DriverParameter = DriverParameter.MassFlow; Value = Math.Pow(10, multiplier - 3) * value; } break; case 11: { var localMultiplier = multiplier & 0x03; var type = multiplier >> 2; if (type == 0) { DriverParameter = DriverParameter.FlowTemperature; Value = Math.Pow(10, localMultiplier - 3) * value; } else if (type == 1) { DriverParameter = DriverParameter.ReturnTemperature; Value = Math.Pow(10, localMultiplier - 3) * value; } } break; case 12: { var localMultiplier = multiplier & 0x03; var type = multiplier >> 2; if (type == 0) { DriverParameter = DriverParameter.TemperatureDifferenceK; Value = Math.Pow(10, localMultiplier - 3) * value; } else if (type == 1) { DriverParameter = DriverParameter.ExternalTemperature; Value = Math.Pow(10, localMultiplier - 3) * value; } } break; case 13: { var localMultiplier = multiplier & 0x03; var type = multiplier >> 2; if (type == 0) { DriverParameter = DriverParameter.Pressure; Value = Math.Pow(10, localMultiplier - 3) * value; } else if (type == 1) { DriverParameter = DriverParameter.TimePoint; if ((localMultiplier & 0x01) == 0) { Value = ParseDate(rowData); } else { Value = ParseDateTime(rowData); } } } break; //case 7: // { // } // break; } }