Zum Inhalt

McduCommandParser.ParseAndRender

Eigenschaft Wert
Modul Mcdu
Klasse McduCommandParser
Typ Sub
Sichtbarkeit Public
Datei Mcdu/McduCommandParser.vb

Beschreibung

Parst eine Liste von VB6-MCDU-Kommandostrings und schreibt das Ergebnis in den uebergebenen Bildschirmpuffer. Unterstuetzte Kommandos sind LISTCLEAR (Puffer leeren, Zustand zuruecksetzen), LISTCOMPLETE (No-Op Endmarkierung) und Inhaltsstrings im Format "LLBODY" (LL = 2-stellige 1-basierte Zeilennummer). Im Body werden Steuertoken fuer Spaltenposition (|CC), Schriftgroesse (@s/@l) und Farbe (~w/~b/~g/~y/~r/~a/~m) erkannt. Die Kommandoliste wird zusaetzlich in buffer.LastCommands gespeichert fuer den INET-Register-5339-Textpfad.

Signatur

Public Sub ParseAndRender(commands As IEnumerable(Of String), buffer As Inet.Arinc429ScreenBuffer)

Parameter

Name Typ Beschreibung Standard
commands IEnumerable(Of String) Sequenz von VB6-Kommandostrings (LISTCLEAR, LISTCOMPLETE oder Inhaltsstrings) --
buffer Inet.Arinc429ScreenBuffer Ziel-Bildschirmpuffer; LISTCLEAR ruft buffer.Clear() auf --

Ablaufdiagramm

flowchart TD
    A[Start] --> B["Kommandos in Array zwischenspeichern + LISTCOMPLETE anfuegen"]
    B --> C["buffer.LastCommands = cmdArray"]
    C --> D["Farbe=White, Font=Large"]
    D --> E{"Naechster Eintrag?"}
    E -- Nein --> M[Ende]
    E -- Ja --> F{"LISTCLEAR?"}
    F -- Ja --> G["buffer.Clear(), Reset Farbe/Font"]
    G --> E
    F -- Nein --> H{"LISTCOMPLETE oder leer?"}
    H -- Ja --> E
    H -- Nein --> I["Zeilennummer aus ersten 2 Zeichen parsen"]
    I --> J{"Zeile 0-12 gueltig?"}
    J -- Nein --> E
    J -- Ja --> K["Body-Zeichen durchlaufen: Pipe/At/Tilde/Zeichen"]
    K --> L["WriteChar fuer jedes regulaere Zeichen"]
    L --> E

Aufgerufen von

Modul Sub/Function Kontext
Mcdu/Pages Alle IPage.Render-Implementierungen Jede MCDU-Seite (InitAPage, FplnPage, PerfPages, etc.) ruft ParseAndRender mit ihren Kommandos auf

Ruft auf

Modul Sub/Function Kontext
Inet Arinc429ScreenBuffer.Clear Bei LISTCLEAR-Kommando
Inet Arinc429ScreenBuffer.WriteChar Fuer jedes regulaere Zeichen im Body
Inet Arinc429SpecialChars.MapSpecialChar Zeichenumwandlung in ARINC 429 Byte

Beispiel

Dim buffer As New Arinc429ScreenBuffer()

' Typische Kommandoliste fuer eine MCDU-Seite
Dim cmds As New List(Of String) From {
    "LISTCLEAR",
    "01|09~w@lINIT",
    "02@s~bCO RTE",
    "03@l~gEDDM/EDDF",
    "LISTCOMPLETE"
}

McduCommandParser.ParseAndRender(cmds, buffer)
' Puffer enthaelt jetzt die gerenderte INIT-Seite

Aenderungshistorie

Version Datum Aenderung
1.0 2026-04-16 Erstdokumentation