public static List <DS_protocol.p_IdToFrames> DSerializeData(byte[] buffers)
    {
        var ms = new MemoryStream(buffers);
        var br = new BinaryReader(ms);

        List <DS_protocol.p_IdToFrames> idtofreames = new List <DS_protocol.p_IdToFrames>();

        int nAreaCount = br.ReadChar();

        for (int nLoop = 0; nLoop < nAreaCount; nLoop++)
        {
            DS_protocol.p_IdToFrames TIdToFrame = new DS_protocol.p_IdToFrames();


            TIdToFrame.areaid = br.ReadChar();
            int nSyncFrameCount = br.ReadInt16();

            int nStartIndex = 0;
            for (int i = 0; i < nSyncFrameCount; i++)
            {
                DS_protocol.p_SyncFrame TFrame = new DS_protocol.p_SyncFrame();
                //TFrame.frame_count = br.ReadInt16();

                if (i == 0)
                {
                    nStartIndex = br.ReadInt16();
                }
                int nFrameMsgCount = br.ReadChar();
                TFrame.frame_count = nStartIndex++;
                SyncFrame cur = new SyncFrame(TFrame.frame_count, TIdToFrame.areaid);

                for (int msgLoop = 0; msgLoop < nFrameMsgCount; msgLoop++)
                {
                    var tt = DSerializeData(ms, br);
                    if (tt != null)
                    {
                        cur.msg_list.Add(tt);
                    }
                }

                Serialization.Buffer_SyncFrame_msg_list(cur.msg_list, TFrame.msg_list);
                TIdToFrame.frames.Add(TFrame);
            }

            idtofreames.Add(TIdToFrame);
        }

        br.Close();
        ms.Close();

        return(idtofreames);
    }
    public static bool Commpare(List <DS_protocol.p_IdToFrames> T1, List <DS_protocol.p_IdToFrames> T2)
    {
        if (T1.Count != T2.Count)
        {
            return(false);
        }

        for (int nLoop = 0; nLoop < T1.Count; ++nLoop)
        {
            DS_protocol.p_IdToFrames T1area_to_Frames = T1[nLoop];
            DS_protocol.p_IdToFrames T2area_to_Frames = T2[nLoop];

            if (T1area_to_Frames.areaid != T2area_to_Frames.areaid)
            {
                return(false);
            }

            for (int nLoop2 = 0; nLoop2 < T1area_to_Frames.frames.Count; ++nLoop2)
            {
                DS_protocol.p_SyncFrame T1p_syncFrame = T1area_to_Frames.frames[nLoop2];
                DS_protocol.p_SyncFrame T2p_syncFrame = T2area_to_Frames.frames[nLoop2];

                if (T1p_syncFrame.frame_count != T2p_syncFrame.frame_count)
                {
                    return(false);
                }

                if (T1p_syncFrame.msg_list.Count != T2p_syncFrame.msg_list.Count)
                {
                    return(false);
                }

                for (int nLoop3 = 0; nLoop3 < T1p_syncFrame.msg_list.Count; ++nLoop3)
                {
                    DS_protocol.p_CustomSyncMsg T1Msg = T1p_syncFrame.msg_list[nLoop3];
                    DS_protocol.p_CustomSyncMsg T2Msg = T2p_syncFrame.msg_list[nLoop3];

                    if (!Commpare(T1Msg, T2Msg))
                    {
                        return(false);
                    }
                }
            }
        }


        return(true);
    }