126 lines
6.1 KiB
C#
126 lines
6.1 KiB
C#
///
|
|
/// 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 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;
|
|
}
|
|
}
|
|
}
|