public void CheckAu1Packet(byte[] au1Bytes) { var au1Frame = MaslFrame.Parse(au1Bytes, 0, au1Bytes.Length - 1) as MaslAu1Frame; if (au1Frame == null) { throw new Exception("无法将指定的字节流序列化为Au1Frame。"); } if (!ArrayHelper.Equals(au1Frame.RandomB, _macCalc.RandomB)) { throw new Exception(string.Format("Au1消息中的RandomB检验失败,期望值={0},实际值={1}", HelperTools.ConvertToString(_macCalc.RandomB), HelperTools.ConvertToString(au1Frame.RandomB))); } }
void IAleConnectionObserver.OnAleUserDataArrival(byte[] aleUserData) { try { var maslFrame = MaslFrame.Parse(aleUserData, 0, aleUserData.Length - 1); if (maslFrame.FrameType == MaslFrameType.AU1) { LogUtility.Info(string.Format("{0}: Masl层当前状态{1},处理AU1。", _rsspEndPoint.ID, _currentState.GetType().Name)); _currentState.HandleAu1Frame(maslFrame as MaslAu1Frame); } else if (maslFrame.FrameType == MaslFrameType.AU2) { LogUtility.Info(string.Format("{0}: Masl层当前状态{1},处理AU2。", _rsspEndPoint.ID, _currentState.GetType().Name)); _currentState.HandleAu2Frame(maslFrame as MaslAu2Frame); } else if (maslFrame.FrameType == MaslFrameType.AU3) { LogUtility.Info(string.Format("{0}: Masl层当前状态{1},处理AU3。", _rsspEndPoint.ID, _currentState.GetType().Name)); _currentState.HandleAu3Frame(maslFrame as MaslAu3Frame); } else if (maslFrame.FrameType == MaslFrameType.AR) { LogUtility.Info(string.Format("{0}: Masl层当前状态{1},处理AR。", _rsspEndPoint.ID, _currentState.GetType().Name)); _currentState.HandleArFrame(maslFrame as MaslArFrame); } else if (maslFrame.FrameType == MaslFrameType.DT) { if (!(_currentState is MaslConnectedState)) { LogUtility.Error(string.Format("{0}: Masl层当前状态{1},处理DT。", _rsspEndPoint.ID, _currentState.GetType().Name)); } _currentState.HandleDtFrame(maslFrame as MaslDtFrame); } else if (maslFrame.FrameType == MaslFrameType.DI) { LogUtility.Info(string.Format("{0}: Masl层当前状态{1},处理DI。", _rsspEndPoint.ID, _currentState.GetType().Name)); _currentState = this.GetInitialState(); this.Connected = false; //_currentState.HandleDiFrame(maslFrame as MaslDiFrame); } } catch (MaslException ex) { this.Disconnect(ex.MajorReason, ex.MinorReason); LogUtility.Error(ex.ToString()); } catch (Exception ex) { this.Disconnect(MaslErrorCode.NotDefined, 0); LogUtility.Error(ex.ToString()); } }