public Package Unpack(IPEndPoint iep, byte[] data) { BeginWriting(); mWriter.Write(data); EndWriting(); BinaryReader reader = BeginReading(); char cmd = (char)reader.ReadByte(); if (_GroundTruthCmdList.Contains(cmd)) { StringPackage pkg = new StringPackage(null, iep, data); return(pkg); } else { Int16 frame = (Int16)reader.ReadInt16(); Int16 len = (Int16)reader.ReadInt16(); byte[] rdata = null; if (len > 0) { rdata = reader.ReadBytes(len); } TerminalPackage pkg = new TerminalPackage(null, iep, cmd, frame, len, rdata); return(pkg); } }
void ParseByteFromTerminal(TerminalPackage pkg) { MainEntry._Logger.Debug("Receive ParseByteFromTerminal:" + pkg._Cmd); byte[] data = pkg._PackageData; string ip = pkg._ReceiveFrom.Address.ToString(); char cmd = pkg._Cmd; int datalen = pkg._Len; if (pkg._FullData.Length >= 5) { BinaryReader reader = null; if (datalen > 0) { MemoryStream stream = new MemoryStream(data); reader = new BinaryReader(stream); } QueueNeedRsp.Instance.RemovePackage(cmd); if (cmd == 'T') { ReceiveCheck(datalen, reader, ip); } else if (cmd == 'S') { ReceiveStartStop(datalen, reader, ip); } else if (cmd == 'C') { ReceiveCollection(datalen, reader, ip); } else if (cmd == 'U') { ReceiveMCU(datalen, reader, ip); } else if (cmd == 'D') { ReceiveMCUData(datalen, reader, ip); } else if (cmd == 'a') { ReceiveSensorData(datalen, reader, ip); } else if (cmd == 'm') { ReceiveMessage(datalen, reader, ip); } if (pkg._Cmd == 'g') { ReceiveGroundTruth(datalen, reader, ip); } } else { Console.WriteLine("ReceiveData Empty"); } }
TerminalPackage SendCmdBase(IPEndPoint iep,char cmd, Int16 framecount, byte[] data = null) { short len = 0; if (data != null) { len = (short)data.Length; } TerminalPackage pkg = new TerminalPackage(iep, null, cmd, framecount, len, data); return pkg; }