/// /// Copyright (c) 2021-2022 Sensus Slovensko a.s. /// using System; using System.IO.Ports; namespace Common { public class Utils { public static string GetTestName(string name, int repeats, int repetitionNr) { if (name == null) return null; if (repeats == 1) return name; return string.Format("{0} ({1}/{2})", name, repetitionNr, repeats); } public static string ToNiceString(double value, int sigDigits) { string format = SignificantDigitsToFmt(value, sigDigits); return (format == "F0") ? value.ToString("F0") : value.ToString(format).TrimEnd(new char[] { '0' }); } public static FlowNames ProfileType2FlowNames(ProfileType pt) { switch (pt) { case ProfileType.Q3R: return FlowNames.Q3Q2Q1; case ProfileType.QnClassColdWater: return FlowNames.QnQtQmin; case ProfileType.QnClassHotWater: return FlowNames.QnQtQmin; case ProfileType.QpQi: return FlowNames.QpQi; default: return FlowNames.Q3Q2Q1; } } public static string SignificantDigitsToFmt(double value, int sigDigits) { if (sigDigits == 6) { if (value >= 99999.5 || value < -99999.5) return "F0"; else if (value >= 9999.95 || value < -9999.95) return "F1"; else if (value >= 999.995 || value < -999.995) return "F2"; else if (value >= 99.9995 || value < -99.9995) return "F3"; else if (value >= 9.99995 || value < -9.99995) return "F4"; else if (value >= 0.999995 || value < -0.999995) return "F5"; else if (value >= 0.0999995 || value < -0.0999995) return "F6"; else if (value >= 0.00999995 || value < -0.00999995) return "F7"; else if (value >= 0.000999995 || value < -0.000999995) return "F8"; else if (value >= 0.0000999995 || value < -0.0000999995) return "F9"; else return "F10"; } else if (sigDigits == 5) { if (value >= 9999.5 || value < -9999.5) return "F0"; else if (value >= 999.95 || value < -999.95) return "F1"; else if (value >= 99.995 || value < -99.995) return "F2"; else if (value >= 9.9995 || value < -9.9995) return "F3"; else if (value >= 0.99995 || value < -0.99995) return "F4"; else if (value >= 0.099995 || value < -0.099995) return "F5"; else if (value >= 0.0099995 || value < -0.0099995) return "F6"; else if (value >= 0.00099995 || value < -0.00099995) return "F7"; else if (value >= 0.000099995 || value < -0.000099995) return "F8"; else return "F9"; } else if (sigDigits == 4) { if (value >= 999.5 || value < -999.5) return "F0"; else if (value >= 99.95 || value < -99.95) return "F1"; else if (value >= 9.995 || value < -9.995) return "F2"; else if (value >= 0.9995 || value < -0.9995) return "F3"; else if (value >= 0.09995 || value < -0.09995) return "F4"; else if (value >= 0.009995 || value < -0.009995) return "F5"; else if (value >= 0.0009995 || value < -0.0009995) return "F6"; else if (value >= 0.00009995 || value < -0.00009995) return "F7"; else return "F8"; } else if (sigDigits == 3) { if (value >= 99.5 || value < -99.5) return "F0"; else if (value >= 9.95 || value < -9.95) return "F1"; else if (value >= 0.995 || value < -0.995) return "F2"; else if (value >= 0.0995 || value < -0.0995) return "F3"; else if (value >= 0.00995 || value < -0.00995) return "F4"; else if (value >= 0.000995 || value < -0.000995) return "F5"; else if (value >= 0.0000995 || value < -0.0000995) return "F6"; else return "F7"; } else if (sigDigits == 2) { if (value >= 9.5 || value < -9.5) return "F0"; else if (value >= 0.95 || value < -0.95) return "F1"; else if (value >= 0.095 || value < -0.095) return "F2"; else if (value >= 0.0095 || value < -0.0095) return "F3"; else if (value >= 0.00095 || value < -0.00095) return "F4"; else if (value >= 0.000095 || value < -0.000095) return "F5"; else return "F6"; } else /// if (sigDigits == 1) { if (value >= 0.95 || value < -0.95) return "F0"; else if (value >= 0.095 || value < -0.095) return "F1"; else if (value >= 0.0095 || value < -0.0095) return "F2"; else if (value >= 0.00095 || value < -0.00095) return "F3"; else if (value >= 0.000095 || value < -0.000095) return "F4"; else return "F5"; } } public static Parity GetParity(string str, Parity defaultParity = Parity.None) { if (str.Equals(Parity.None.ToString())) return Parity.None; if (str.Equals(Parity.Even.ToString())) return Parity.Even; if (str.Equals(Parity.Odd.ToString())) return Parity.Odd; if (str.Equals(Parity.Mark.ToString())) return Parity.Mark; if (str.Equals(Parity.Space.ToString())) return Parity.Space; return defaultParity; } public static StopBits GetStopBits(string str, StopBits defaultStopBits = StopBits.One) { if (str.Equals(StopBits.None.ToString())) return StopBits.None; if (str.Equals(StopBits.One.ToString())) return StopBits.One; if (str.Equals(StopBits.OnePointFive.ToString())) return StopBits.OnePointFive; if (str.Equals(StopBits.Two.ToString())) return StopBits.Two; return defaultStopBits; } public static Handshake GetHandshake(string str, Handshake defaultHandshake = Handshake.None) { if (str.Equals(Handshake.None.ToString())) return Handshake.None; if (str.Equals(Handshake.RequestToSend.ToString())) return Handshake.RequestToSend; if (str.Equals(Handshake.XOnXOff.ToString())) return Handshake.XOnXOff; if (str.Equals(Handshake.RequestToSendXOnXOff.ToString())) return Handshake.RequestToSendXOnXOff; return defaultHandshake; } } }