diff --git a/S7.Net/Conversion.cs b/S7.Net/Conversion.cs index a8f3265..3f58d1e 100644 --- a/S7.Net/Conversion.cs +++ b/S7.Net/Conversion.cs @@ -1,4 +1,5 @@ using System; +using System.Globalization; namespace S7.Net { @@ -141,5 +142,77 @@ namespace S7.Net return (result != 0); } + + /// + /// Converts from ushort value to short value; it's used to retrieve negative values from words + /// + /// + /// + public static short ConvertToShort(this ushort input) + { + short output; + output = short.Parse(input.ToString("X"), NumberStyles.HexNumber); + return output; + } + + /// + /// Converts from short value to ushort value; it's used to pass negative values to DWs + /// + /// + /// + public static ushort ConvertToUshort(this short input) + { + ushort output; + output = ushort.Parse(input.ToString("X"), NumberStyles.HexNumber); + return output; + } + + /// + /// Converts from UInt32 value to Int32 value; it's used to retrieve negative values from DBDs + /// + /// + /// + public static Int32 ConvertToInt(this uint input) + { + int output; + output = int.Parse(input.ToString("X"), NumberStyles.HexNumber); + return output; + } + + /// + /// Converts from Int32 value to UInt32 value; it's used to pass negative values to DBDs + /// + /// + /// + public static UInt32 ConvertToUInt(this int input) + { + uint output; + output = uint.Parse(input.ToString("X"), NumberStyles.HexNumber); + return output; + } + + /// + /// Converts from double to DWord (DBD) + /// + /// + /// + public static UInt32 ConvertToUInt(this double input) + { + uint output; + output = S7.Net.Types.DWord.FromByteArray(S7.Net.Types.Double.ToByteArray(input)); + return output; + } + + /// + /// Converts from DWord (DBD) to double + /// + /// + /// + public static double ConvertToDouble(this uint input) + { + double output; + output = S7.Net.Types.Double.FromByteArray(S7.Net.Types.DWord.ToByteArray(input)); + return output; + } } }