コード例 #1
0
ファイル: LogixTag.cs プロジェクト: wxfzy/LogixTool
        /// <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);
        }
コード例 #2
0
ファイル: LogixTag.cs プロジェクト: wxfzy/LogixTool
        /* ================================================================================================== */
        #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);
        }