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 |