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"); }
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"); } } } }