public override List<BaseResponse> Decode(BasePackage bp, OriginalBytes obytes) { Cabinet cabinet = SpringHelper.GetObject<Cabinet>("cabinet"); if (bp.AppData.Length == 48)//应用数据(48) { List<BaseResponse> list = new List<BaseResponse>(); for (byte rackNo = 2; rackNo <= 5; rackNo++)//除系统机笼 { for (byte slotNo = 3; slotNo <= 14; slotNo++) { BoardStatusResponse boardStatusResponse = new BoardStatusResponse(); boardStatusResponse.CommunicatinBoard = cabinet.GetCommunicationBoard(bp.RemoteIpEndPoint); boardStatusResponse.DtTime = DateTime.Now; boardStatusResponse.OriginalBytes = obytes; byte[] eqid = new byte[] { 0x05, rackNo, slotNo, 0xFF, 0xFF }; Board b = cabinet.FindEq(eqid) as Board; if (b != null) { boardStatusResponse.Board = b; boardStatusResponse.ErrorCode = bp.AppData[(rackNo - 2) * 12 + (slotNo - 3)]; list.Add(boardStatusResponse); } } } return list; } return null; }
/// <summary> /// 过滤板卡状态消息 /// </summary> /// <param name="cr"></param> public void ProcessFilter(BoardStatusResponse br) { if (br.ErrorCode != 0x01 && br.ErrorCode != 0x02) { FiltedBoardStatusResponse fr = FiltedBoardStatusResponse.CreateNew(br); rxMsgQueue.Push(fr); } }
public static FiltedBoardStatusResponse CreateNew(BoardStatusResponse br) { FiltedBoardStatusResponse fr = new FiltedBoardStatusResponse(); fr.Board = br.Board; fr.CommunicatinBoard = br.CommunicatinBoard; fr.DtTime = br.DtTime; fr.ErrorCode = br.ErrorCode; fr.OriginalBytes = br.OriginalBytes; return fr; }