Zum Inhalt

Arinc429UdpSender.SendMessage

Eigenschaft Wert
Modul Inet
Klasse Arinc429UdpSender
Typ Sub
Sichtbarkeit Public
Datei Inet/Arinc429UdpSender.vb

Beschreibung

Wendet die XOR-Verschluesselung (passend zu VB6 mod_ARINC429.bas SendMessage) auf die Rohnachricht an und sendet die verschluesselte Nachricht per UDP-Broadcast an 255.255.255.255:65520. Die Nachricht wird auf mindestens 24 Bytes aufgefuellt. Drei zufaellige Schluessel-Bytes (k0, k1, k2) werden generiert; k3 = k0 XOR k1 XOR k2 dient als XOR-Schluessel fuer die restlichen Datenbytes. Bestimmte Indizes (0, 1, 6-13) erhalten feste Werte oder Schluesselbytes.

Signatur

Public Sub SendMessage(rawMessage As Byte())

Parameter

Name Typ Beschreibung Standard
rawMessage Byte() Roh-Differenznachricht aus Arinc429ScreenBuffer.BuildDifferentialMessage --

Ablaufdiagramm

flowchart TD
    A[Start] --> B{"_disposed?"}
    B -- Ja --> C["Logger.Warn + Return"]
    B -- Nein --> D{"rawMessage.Length < 24?"}
    D -- Ja --> E["Auf 24 Bytes auffuellen"]
    D -- Nein --> F["padded = rawMessage"]
    E --> G["k0, k1, k2 = Random(0-255)"]
    F --> G
    G --> H["k3 = k0 XOR k1 XOR k2"]
    H --> I["Scrambled-Array: feste Bytes + XOR-Verschluesselung"]
    I --> J["_udpClient.Send(scrambled, endpoint)"]
    J --> K["Logger.Trace"]
    K --> L[Ende]
    C --> L

Aufgerufen von

Modul Sub/Function Kontext
Inet INetActor Sendet die Bildschirmdaten bei Empfang einer SendScreenBuffer-Nachricht

Ruft auf

Modul Sub/Function Kontext
System Array.Copy Rohnachricht in aufgefuelltes Array kopieren
System Random.Next Drei zufaellige Schluessel-Bytes erzeugen
System.Net.Sockets UdpClient.Send Verschluesselte Nachricht per UDP-Broadcast senden
NLog Logger.Warn Warnung bei Aufruf nach Dispose
NLog Logger.Trace Protokollierung des Versands

Beispiel

Dim sender As New Arinc429UdpSender()
Dim buffer As New Arinc429ScreenBuffer()

buffer.WriteString(0, 0, "MCDU MENU", McduColor.White, McduFont.Large)
Dim msg As Byte() = buffer.BuildDifferentialMessage(isCaptain:=True)

If msg.Length > 0 Then
    sender.SendMessage(msg) ' XOR-verschluesselt und per UDP gesendet
End If

sender.Dispose()

Aenderungshistorie

Version Datum Aenderung
1.0 2026-04-16 Erstdokumentation