LabVIEWForum.de - UDP sporadischer Fehlercode 55

LabVIEWForum.de

Normale Version: UDP sporadischer Fehlercode 55
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo LV-Gemeinde,

ich habe das Problem das ich bei einer UDP-Verbindung immer wieder den Fehlercode 55 bei UDP write bekomme.
In meiner Hauptapplikation habe ich versucht den Fehler zu lokalisieren.
Das merkwürdige ist, wenn ich die Probe Sonde auf den Fehler Ausgang von UDP Write setze tritt der Fehler nicht mehr auf.

Dieses kann ich auch beobachten in dem angehängten Beispiel. Mache ich die Sonde weg kommt der Fehler wieder.
Daher habe ich nach dem Fehlerausgang ein Delay Vi angehängt. Mit dem Delay Wert 0.
Macht zwar für mich keinen Sinn aber der sporadische Fehler tritt viel seltener auf.

Als Basis verwende ich in dem unten angehängten Projekt das Beispiel von LV UDP Multicast.
Vielleicht weiß jemand von euch was ich falsch mache bzw. wie ich das Problem lösen kann?

Betrachtungs Zeitraum eine Stunde:
Ohne delay und Sonde sehr häufig
Mit delay ohne Sonde selten
Mit Sonde trat der Fehler nicht auf.

Ungeachtet dessen wenn währen einer Übertragung ein Fehler auftritt werden die Messdaten in Ihrer Gesamtheit unbrauchbar.
Wie würdet Ihr den UDP-Empfänger automatisch wieder neu aufsetzen?
Ich habe mir gedacht, dass ich für jedes einzelne Frame eine Header Info mit Sende.
Zum Beispiel eine Frame Nummer.
Sollte im Empfänger die Frame Nummer nicht mit der erwarteten Nummer ankommen
würde ich die alten Datensätze löschen und die Verbindung eventuell neu aufsetzen bzw. auf das erste Frame warten?

Gruß Hubert
Hallo Hubert,

bei einer Simulation per localhost kann ich deinen Fehlercode 55 nicht nachvollziehen.

Deine Idee mit einem Header, der eine Paketnummer enthält, sollest du auf jeden Fall umsetzen. Nur so bekommst du eine Synchronisation zwischen Sender und Empfänger hin. Meine Vorschlag hierzu: Schleifenzähler (U32) zu String flatten (sind dann 4 Byte) und dem Paket voranstellen. Das letzte Paket bekommt als besonderer Marker den Wert 0xFFFF, dann muss der Empfänger auch nicht die Anzahl und Größe der Daten kennen.

Und hier noch eine Vereinfachung deines Paketzerteilens:
[attachment=62486]

Gruß,
Jens
Hallo Hubert,

Zitat:ich habe das Problem das ich bei einer UDP-Verbindung immer wieder den Fehlercode 55 bei UDP write bekomme.
= "Network operation in progress"…

Kann es sein, dass du da eine Queue vollschreibst, die nicht schnell genug abgearbeitet wird? Dein Sender ballert ja auch einige UDP-Messages (quasi ungebremst) raus!?
Kannst du in einem solchen Fall nicht einfach etwas länger arbeiten und dann das Paket nochmals versenden?

Du könntest aber noch an der Effizienz deiner Routinen arbeiten, z.B.:
[attachment=62487]
Da benötigt man kein Shiftregister!

Ebenso in der Sendeschleife: das ständige String-Verkleinern ist doch unnötig/aufwändig - einfach mittels dem "i" den Offset im String bestimmen und 512 Zeichen aus dem String holen und senden:
[attachment=62488]
@Jens und Gerd

Erst mal danke für euer Feedback.
Ich werden morgen die guten Vorschläge von euch einarbeiten und den Frame Count hinzufügen.

@Gerd

In deinem ersten Bild verwendest du zwischen der For Schleife und den String to Variant eine Funktion die ich nicht kenne.

Mit welcher Funktion wandelst das String Array in einen String bzw. wo finde ich die?

Schon mal Danke im voraus.

Gruß Hubert
Hallo Hubert,

nimm ConcatString...
Referenz-URLs