/// <summary> /// /// </summary> /// <param name="s"></param> /// <returns></returns> private byte[] SetValueText(string s) { // Проверяем что входная строка имеет значение. if (s == null || s.Trim() == "") { return(null); } // Проверяем что текущий тип данных существует и его код не равен 0. if (this.Type == null || this.Type.Code == 0) { return(null); } byte[] bytes = null; // Проверяем является ли данный тип данных структурой. if (this.Type.Family != TagDataTypeFamily.Structure) { switch (this.Radix) { case TagValueRadix.Decimal: { if (this.Type.Family == TagDataTypeFamily.AtomicBool) { byte?boolValue = LogixRadixConvertor.FromBoolString(s); if (boolValue != null) { bytes = new byte[] { (byte)boolValue }; } } else if (this.Type.Family == TagDataTypeFamily.AtomicFloat) { bytes = LogixRadixConvertor.FromFloatString(s); } else { bytes = LogixRadixConvertor.FromNumericString(s, this.Type.ElementSize); } } break; case TagValueRadix.Hex: bytes = LogixRadixConvertor.FromHexString(s, this.Type.ElementSize); break; case TagValueRadix.Binary: bytes = LogixRadixConvertor.FromBinaryString(s, this.Type.ElementSize); break; case TagValueRadix.ASCII: bytes = LogixRadixConvertor.FromASCIIString(s, this.Type.ElementSize); break; } } return(bytes); }
/* ================================================================================================== */ #endregion #region [ PRIVATE METHODS ] /* ================================================================================================== */ /// <summary> /// Преобразовывает последовательность байт для текущего тэга с его определенным типом данных /// а также определенной системой исчисления в строковое представление. /// </summary> /// <param name="bytes">Последовательность байт для преобразования.</param> /// <returns></returns> private string GetValueText(byte[] bytes) { string result = null; // Проверяем что текущая последовательность байт не равна Null. if (bytes == null || bytes.Length == 0) { return(null); } // Проверяем что текущий тип данных существует и его код не равен 0. if (this.Type == null || this.Type.Code == 0) { return(null); } // Проверяем является ли данный тип данных структурой. switch (this.Type.Family) { case TagDataTypeFamily.AtomicBool: switch (this.Radix) { case TagValueRadix.Decimal: result = LogixRadixConvertor.GetNumericString(bytes); break; case TagValueRadix.Hex: result = LogixRadixConvertor.GetHexString(bytes); break; case TagValueRadix.Binary: result = LogixRadixConvertor.GetBinaryString(bytes); break; case TagValueRadix.ASCII: result = LogixRadixConvertor.GetASCIIString(bytes); break; } break; case TagDataTypeFamily.AtomicInteger: switch (this.Radix) { case TagValueRadix.Decimal: result = LogixRadixConvertor.GetNumericString(bytes); break; case TagValueRadix.Hex: result = LogixRadixConvertor.GetHexString(bytes); break; case TagValueRadix.Binary: result = LogixRadixConvertor.GetBinaryString(bytes); break; case TagValueRadix.ASCII: result = LogixRadixConvertor.GetASCIIString(bytes); break; } break; case TagDataTypeFamily.AtomicBoolArray: switch (this.Radix) { case TagValueRadix.Decimal: result = LogixRadixConvertor.GetNumericString(bytes); break; case TagValueRadix.Hex: result = LogixRadixConvertor.GetHexString(bytes); break; case TagValueRadix.Binary: result = LogixRadixConvertor.GetBinaryString(bytes); break; case TagValueRadix.ASCII: result = LogixRadixConvertor.GetASCIIString(bytes); break; } break; case TagDataTypeFamily.AtomicFloat: switch (this.Radix) { case TagValueRadix.Decimal: result = LogixRadixConvertor.GetFloatString(bytes); break; case TagValueRadix.Hex: result = LogixRadixConvertor.GetHexString(bytes); break; case TagValueRadix.Binary: result = LogixRadixConvertor.GetBinaryString(bytes); break; case TagValueRadix.ASCII: result = LogixRadixConvertor.GetASCIIString(bytes); break; } break; case TagDataTypeFamily.Structure: switch (this.Radix) { case TagValueRadix.Decimal: result = LogixRadixConvertor.GetDecimalString(bytes); break; case TagValueRadix.Hex: result = LogixRadixConvertor.GetHexString(bytes); break; case TagValueRadix.Binary: result = LogixRadixConvertor.GetBinaryString(bytes); break; case TagValueRadix.ASCII: result = LogixRadixConvertor.GetASCIIString(bytes); break; } break; default: break; } return(result); }