private void ReadStruct(AbTagItem tagItem, string tagName)
        {
            if (!tagItem.IsStruct)
            {
                return;
            }

            OperateResult <byte[]> read = allenBradleyNet.Read(tagName, 1);

            if (!read.IsSuccess)
            {
                return;
            }

            if (tagItem.Members == null)
            {
                return;
            }

            foreach (var item in tagItem.Members)
            {
                if (!item.IsStruct)
                {
                    if (item.ArrayDimension == 0)
                    {
                        if (item.SymbolType == AllenBradleyHelper.CIP_Type_Byte)
                        {
                            item.Tag = ((sbyte)read.Content[item.ByteOffset]).ToString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_Word)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransInt16(read.Content, item.ByteOffset).ToString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_DWord)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransInt32(read.Content, item.ByteOffset).ToString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_LInt)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransInt64(read.Content, item.ByteOffset).ToString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_USInt)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransByte(read.Content, item.ByteOffset).ToString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_UInt)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransUInt16(read.Content, item.ByteOffset).ToString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_UDint)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransUInt32(read.Content, item.ByteOffset).ToString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_ULint)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransUInt64(read.Content, item.ByteOffset).ToString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_Bool)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransBool(read.Content, item.ByteOffset * 8 + item.ArrayLength[0]).ToString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_Real)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransSingle(read.Content, item.ByteOffset).ToString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_Double)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransDouble(read.Content, item.ByteOffset).ToString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_D3)
                        {
                            item.Tag = SoftBasic.BoolArrayToString(allenBradleyNet.ByteTransform.TransByte(read.Content, item.ByteOffset, 4).ToBoolArray( ));
                        }
                    }
                    else if (item.ArrayDimension == 1)
                    {
                        if (item.SymbolType == AllenBradleyHelper.CIP_Type_Byte)
                        {
                            item.Tag = Encoding.UTF8.GetString(read.Content, item.ByteOffset, item.ArrayLength[0]);
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_Word)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransInt16(read.Content, item.ByteOffset, item.ArrayLength[0]).ToArrayString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_DWord)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransInt32(read.Content, item.ByteOffset, item.ArrayLength[0]).ToArrayString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_LInt)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransInt64(read.Content, item.ByteOffset, item.ArrayLength[0]).ToArrayString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_USInt)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransByte(read.Content, item.ByteOffset, item.ArrayLength[0]).ToArrayString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_UInt)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransUInt16(read.Content, item.ByteOffset, item.ArrayLength[0]).ToArrayString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_UDint)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransUInt32(read.Content, item.ByteOffset, item.ArrayLength[0]).ToArrayString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_ULint)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransUInt64(read.Content, item.ByteOffset, item.ArrayLength[0]).ToArrayString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_Real)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransSingle(read.Content, item.ByteOffset, item.ArrayLength[0]).ToArrayString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_Double)
                        {
                            item.Tag = allenBradleyNet.ByteTransform.TransDouble(read.Content, item.ByteOffset, item.ArrayLength[0]).ToArrayString( );
                        }
                        else if (item.SymbolType == AllenBradleyHelper.CIP_Type_D3)
                        {
                            item.Tag = SoftBasic.BoolArrayToString(allenBradleyNet.ByteTransform.TransByte(read.Content, item.ByteOffset, item.ArrayLength[0] * 4).ToBoolArray( ));
                        }
                    }
                }
            }
        }
 private void ShowDataRoots( )
 {
     if (rootTags != null)
     {
         foreach (var item in rootTags)
         {
             // 不是结构体及数组的情况则给予显示
             if (!item.IsStruct)
             {
                 if (item.ArrayDimension == 0)
                 {
                     if (item.SymbolType == AllenBradleyHelper.CIP_Type_Byte)
                     {
                         OperateResult <byte> read = allenBradleyNet.ReadByte(item.Name);
                         if (read.IsSuccess)
                         {
                             item.Tag = (sbyte)read.Content;
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_Word)
                     {
                         OperateResult <short> read = allenBradleyNet.ReadInt16(item.Name);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content;
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_DWord)
                     {
                         OperateResult <int> read = allenBradleyNet.ReadInt32(item.Name);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content;
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_LInt)
                     {
                         OperateResult <long> read = allenBradleyNet.ReadInt64(item.Name);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content;
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_USInt)
                     {
                         OperateResult <byte> read = allenBradleyNet.ReadByte(item.Name);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content;
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_UInt)
                     {
                         OperateResult <ushort> read = allenBradleyNet.ReadUInt16(item.Name);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content;
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_UDint)
                     {
                         OperateResult <uint> read = allenBradleyNet.ReadUInt32(item.Name);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content;
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_ULint)
                     {
                         OperateResult <ulong> read = allenBradleyNet.ReadUInt64(item.Name);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content;
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_Bool)
                     {
                         OperateResult <bool> read = allenBradleyNet.ReadBool(item.Name);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content;
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_Real)
                     {
                         OperateResult <float> read = allenBradleyNet.ReadFloat(item.Name);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content;
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_Double)
                     {
                         OperateResult <double> read = allenBradleyNet.ReadDouble(item.Name);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content;
                         }
                     }
                 }
                 else if (item.ArrayDimension == 1)
                 {
                     if (item.SymbolType == AllenBradleyHelper.CIP_Type_Byte)
                     {
                         OperateResult <byte[]> read = allenBradleyNet.Read(item.Name, (ushort)item.ArrayLength[0]);
                         if (read.IsSuccess)
                         {
                             sbyte[] data = new sbyte[read.Content.Length];
                             for (int i = 0; i < data.Length; i++)
                             {
                                 data[i] = (sbyte)read.Content[i];
                             }
                             item.Tag = data.ToArrayString( );
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_Word)
                     {
                         OperateResult <short[]> read = allenBradleyNet.ReadInt16(item.Name, (ushort)item.ArrayLength[0]);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content.ToArrayString( );
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_DWord)
                     {
                         OperateResult <int[]> read = allenBradleyNet.ReadInt32(item.Name, (ushort)item.ArrayLength[0]);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content.ToArrayString( );
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_LInt)
                     {
                         OperateResult <long[]> read = allenBradleyNet.ReadInt64(item.Name, (ushort)item.ArrayLength[0]);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content.ToArrayString( );
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_USInt)
                     {
                         OperateResult <byte[]> read = allenBradleyNet.Read(item.Name, (ushort)item.ArrayLength[0]);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content.ToArrayString( );
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_UInt)
                     {
                         OperateResult <ushort[]> read = allenBradleyNet.ReadUInt16(item.Name, (ushort)item.ArrayLength[0]);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content.ToArrayString( );
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_UDint)
                     {
                         OperateResult <uint[]> read = allenBradleyNet.ReadUInt32(item.Name, (ushort)item.ArrayLength[0]);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content.ToArrayString( );
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_ULint)
                     {
                         OperateResult <ulong[]> read = allenBradleyNet.ReadUInt64(item.Name, (ushort)item.ArrayLength[0]);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content.ToArrayString( );
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_Real)
                     {
                         OperateResult <float[]> read = allenBradleyNet.ReadFloat(item.Name, (ushort)item.ArrayLength[0]);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content.ToArrayString( );
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_Double)
                     {
                         OperateResult <double[]> read = allenBradleyNet.ReadDouble(item.Name, (ushort)item.ArrayLength[0]);
                         if (read.IsSuccess)
                         {
                             item.Tag = read.Content.ToArrayString( );
                         }
                     }
                     else if (item.SymbolType == AllenBradleyHelper.CIP_Type_D3)
                     {
                         OperateResult <int[]> read = allenBradleyNet.ReadInt32(item.Name, (ushort)item.ArrayLength[0]);
                         if (read.IsSuccess)
                         {
                             item.Tag = SoftBasic.BoolArrayToString(allenBradleyNet.ByteTransform.TransByte(read.Content).ToBoolArray( ));
                         }
                     }
                 }
             }
         }
     }
 }