Exemplo n.º 1
0
        private void DealWith_Temp_MPDUS(byte[] Deal_TwoMPDU)
        {
            UpdateDataGrid UpdateDG = new UpdateDataGrid(UpdataDataGrid1);
            int            len      = Deal_TwoMPDU.Length;

            while (len > 6)
            {
                //       Trace.WriteLine("Deal_TwoMPUD中的数据长度是:" + len.ToString());

                EPDU_Struct myEPDU = new EPDU_Struct();

                Array.Copy(Deal_TwoMPDU, 0, myEPDU.EPDU_Head, 0, 6);
                Array.Copy(Deal_TwoMPDU, 6, Deal_TwoMPDU, 0, len - 6);
                len -= 6;
                myEPDU.DealEPDUHead();
                if (myEPDU.Count > 249)
                {
                    //           Trace.WriteLine(myEPDU.APID);
                    if (myEPDU.APID == "11111111111")
                    {
                        //               Trace.WriteLine("收到超过249的空闲EPDU包!");
                    }
                    else
                    {
                        WrongEPDU += 1;
                        //                Trace.WriteLine("EPDU包长大于249,出错跳出");
                        break;
                    }
                }

                if (len >= myEPDU.Count + 1)
                {
                    Array.Copy(Deal_TwoMPDU, 0, myEPDU.EPDU_Body, 0, myEPDU.Count + 1);
                    Array.Copy(Deal_TwoMPDU, myEPDU.Count + 1, Deal_TwoMPDU, 0, len - myEPDU.Count - 1);
                    len -= (myEPDU.Count + 1);

                    //将一个EPDU显示出来
                    switch (channel)
                    {
                    case 1:
                        dataGridView1.Invoke(UpdateDG, myEPDU, Data.APIDList, Data.Apid_EPDU_Dictionary, Data.myDictionary1);
                        break;

                    case 2:
                        dataGridView1.Invoke(UpdateDG, myEPDU, Data.APIDList2, Data.Apid_EPDU_Dictionary2, Data.myDictionary2);
                        break;

                    case 0:
                        dataGridView1.Invoke(UpdateDG, myEPDU, Data.APIDList3, Data.Apid_EPDU_Dictionary3, Data.myDictionary3);
                        break;

                    default:
                        dataGridView1.Invoke(UpdateDG, myEPDU, Data.APIDList, Data.Apid_EPDU_Dictionary, Data.myDictionary1);
                        break;
                    }
                }
                else
                {
                    //         Trace.WriteLine("有帧头,但长度不足myEpdu.Count+1");
                }
            }
            //   Trace.WriteLine("剩余长度不足6Byte");
        }
Exemplo n.º 2
0
        private void DealWithLastMPDU()
        {
            UpdateDataGrid UpdateDG = new UpdateDataGrid(UpdataDataGrid1);

            if (TempMPDU.MPDU1_Used)
            {
                TempMPDU.MPDU1_Used = false;
                int    len           = 1002 - TempMPDU.Pointer1Value;
                byte[] Deal_LastMPDU = new byte[len];
                Array.Copy(TempMPDU.MPDU_Body1, TempMPDU.Pointer1Value, Deal_LastMPDU, 0, len);

                while (len > 6)
                {
                    EPDU_Struct myEPDU = new EPDU_Struct();

                    Array.Copy(Deal_LastMPDU, 0, myEPDU.EPDU_Head, 0, 6);
                    Array.Copy(Deal_LastMPDU, 6, Deal_LastMPDU, 0, len - 6);
                    len -= 6;
                    myEPDU.DealEPDUHead();
                    if (myEPDU.Count > 249)
                    {
                        WrongEPDU += 1;
                        Trace.WriteLine(myEPDU.EPDU_Head[0]);
                        Trace.WriteLine(myEPDU.EPDU_Head[1]);
                        Trace.WriteLine(myEPDU.EPDU_Head[2]);
                        Trace.WriteLine(myEPDU.EPDU_Head[3]);
                        Trace.WriteLine(myEPDU.EPDU_Head[4]);
                        Trace.WriteLine(myEPDU.EPDU_Head[5]);
                        Trace.WriteLine("EPDU包长大于249,出错跳出");
                        break;
                    }

                    if (len > myEPDU.Count + 1)
                    {
                        Array.Copy(Deal_LastMPDU, 0, myEPDU.EPDU_Body, 0, myEPDU.Count + 1);
                        Array.Copy(Deal_LastMPDU, myEPDU.Count + 1, Deal_LastMPDU, 0, len - myEPDU.Count - 1);
                        len -= (myEPDU.Count + 1);

                        //将一个EPDU显示出来
                        //   dataGridView1.Invoke(UpdateDG, myEPDU);
                        switch (channel)
                        {
                        case 1:
                            dataGridView1.Invoke(UpdateDG, myEPDU, Data.APIDList, Data.Apid_EPDU_Dictionary, Data.myDictionary1);
                            break;

                        case 2:
                            dataGridView1.Invoke(UpdateDG, myEPDU, Data.APIDList2, Data.Apid_EPDU_Dictionary2, Data.myDictionary2);
                            break;

                        case 0:
                            dataGridView1.Invoke(UpdateDG, myEPDU, Data.APIDList3, Data.Apid_EPDU_Dictionary3, Data.myDictionary3);
                            break;

                        default:
                            dataGridView1.Invoke(UpdateDG, myEPDU, Data.APIDList, Data.Apid_EPDU_Dictionary, Data.myDictionary1);
                            break;
                        }
                    }
                    else
                    {
                        Trace.WriteLine("有帧头,但长度不足myEpdu.Count+1");
                    }
                }
            }
        }