Zum Inhalt

ClimbWindPage (IPage)

Eigenschaft Wert
Modul Mcdu/Pages
Klasse ClimbWindPage
Typ IPage Implementation
Sichtbarkeit Public
Datei Mcdu/Pages/ClimbWindPage.vb

Beschreibung

MCDU-Seite zur Eingabe von Winddaten fuer die Steigflugphase. Zeigt den Titel "CLIMB WIND" und 5 editierbare Windzeilen (L1-L5) im Format Richtung/Geschwindigkeit/Hoehe. Das Scratchpad akzeptiert das Format DDD/SSS/AAAA (Richtung 0-360, Geschwindigkeit 0-250 kts, Hoehe 100-39100 ft). Partial-Edit wird unterstuetzt: /AAAA fuer nur Hoehe, DDD/SSS fuer nur Richtung+Geschwindigkeit bei bestehenden Eintraegen. R1 navigiert zu HistoryWind, R5 zu CruiseWind (NEXT PHASE). Bei Aenderungen erscheinen CANCEL (L6) und INSERT (R6); INSERT committet die Eintraege als SetClimbWind-Command.

Implementierte Methoden

Render

Public Sub Render(ctx As McduContext, buffer As Inet.Arinc429ScreenBuffer) Implements IPage.Render
Name Typ Beschreibung Standard
ctx McduContext MCDU-Zustand mit WindData.ClimbEntries fuer initiale Synchronisierung
buffer Inet.Arinc429ScreenBuffer Zielpuffer fuer die ARINC-429-Bildschirmausgabe

HandleLsk

Public Function HandleLsk(key As McduLskKey, ctx As McduContext) As McduCommand Implements IPage.HandleLsk
Name Typ Beschreibung Standard
key McduLskKey Gedrueckte LSK-Taste (L1-L6, R1-R6)
ctx McduContext MCDU-Zustand mit Scratchpad-Inhalt fuer Windeingabe

Rueckgabewert (HandleLsk)

Typ Beschreibung
McduCommand ClearScratchpad bei L1-L5 (erfolgreiche Windeingabe), ShowScratchpadMessage bei Fehler (FORMAT ERROR, ENTRY OUT OF RANGE), NavigateTo HistoryWind (R1), NavigateTo CruiseWind (R5), SetClimbWind (R6 bei Aenderungen), NavigateTo InitA (L6 CANCEL/RETURN), NoOp sonst

Ablaufdiagramm

flowchart TD
    A[HandleLsk aufgerufen] --> B{key = L1-L5?}
    B -- Ja --> C{Scratchpad leer?}
    C -- Ja --> D[NoOp]
    C -- Nein --> E{Bestehender Eintrag?}
    E -- Ja --> F[ParsePartialWindEntry]
    E -- Nein --> G[ParseFullWindEntry DDD/SSS/AAAA]
    F --> H{Format gueltig?}
    G --> H
    H -- Nein --> I["ShowScratchpadMessage(FORMAT ERROR)"]
    H -- Ja --> J{Werte im Bereich?}
    J -- Nein --> K["ShowScratchpadMessage(ENTRY OUT OF RANGE)"]
    J -- Ja --> L[_tempEntries aktualisieren + ClearScratchpad]
    B -- Nein --> M{key = R1?}
    M -- Ja --> N[NavigateTo HistoryWind]
    M -- Nein --> O{key = R5?}
    O -- Ja --> P[NavigateTo CruiseWind]
    O -- Nein --> Q{key = R6 + changeMade?}
    Q -- Ja --> R["SetClimbWind(entries)"]
    Q -- Nein --> S{key = L6?}
    S -- Ja --> T[Reset + NavigateTo InitA]
    S -- Nein --> U[NoOp]

Aufgerufen von

Modul Sub/Function Kontext
McduActor Seitennavigation Ueber Wind-Menue oder PREV PHASE von CruiseWindPage

Ruft auf

Modul Sub/Function Kontext
McduCommandParser ParseAndRender Render-Befehle in Bildschirmpuffer schreiben
ctx.WindData ClimbEntries Bestehende Steigflug-Winddaten zur Initialisierung
SetClimbWind Konstruktor Winddaten-Commit an McduActor
NavigateTo Konstruktor Seitennavigation (HistoryWind, CruiseWind, InitA)
ParseWindEntry (intern) Scratchpad-Eingabe in WindEntry parsen (voll/partiell)

Beispiel

' ClimbWindPage wird vom McduActor instanziiert:
Dim page As New ClimbWindPage()
page.Render(ctx, buffer)

' Pilot gibt "270/050/35000" im Scratchpad ein und drueckt L1:
ctx.Scratchpad = "270/050/35000"
Dim cmd = page.HandleLsk(McduLskKey.L1, ctx)
' -> ClearScratchpad, _tempEntries(0) = WindEntry(270, 50, "FL350", 35000)

' Pilot drueckt R6 (INSERT):
Dim cmd2 = page.HandleLsk(McduLskKey.R6, ctx)
' -> SetClimbWind mit allen 5 Eintraegen

Aenderungshistorie

Version Datum Aenderung
1.0 2026-04-16 Erstdokumentation