void port_DataReceived(object sender, SerialDataReceivedEventArgs e) { byte[] data = new byte[port.BytesToRead]; port.Read(data, 0, data.Length); for (int i = 0; i < data.Length; i++) { inputBuffer.Write(data[i]); } if (inputBuffer.CommandReady()) { byte[] command = inputBuffer.ReadCommand(); if (command != null) { switch (command[1]) { case 0x4A: if (command.Length > 10) { PositionReceived(command); } if (command.Length == 4) { CheckAcknowledge(command); } break; case 0x54: LocalisationResponse(command); break; case 0x49: if (command.Length > 10) { ServoStateReceived(command); } if (command.Length == 4) { CheckAcknowledge(command); } break; case 0x47: if (command.Length == 4) { CheckAcknowledge(command); } break; default: Console.WriteLine("INVALID RESPONSE " + command[1]); // Throw exception? no. break; } } } }