LabVIEWForum.de - dynamische Byte-Anzahl einer Nachricht

LabVIEWForum.de

Normale Version: dynamische Byte-Anzahl einer Nachricht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi Community,

ich möchte gerne ein Programm welches ich bereits mit eurer Hilfe erstellen konnte erweitern.

In dem bereits vorhandenen Programm wird die Nachricht eines Mikrokontrollers über eine Uart gelesen und dargestellt.

Im zweiten Schritt möchte ich gerne die dynamische länge der Antwort berücksichtigen.

Nach meinen Bisherigen Informationen ist es nicht möglich die größe eines Cluster dynamisch zu gestalten, sondern nur die Möglichkeit Daten nicht anzuzeigen.

Wie kann man einen dynamischen Empfang realisieren?

der Aufbau der Nachricht ist wie folgt:

"getData-Antwort: 0|0|0|0|0|FFF|618|735|152", wobei die einzelnen Nachrichten mit den Strichen abgegrenzt ist jedoch nicht fest in ihrer Byte länge.

Anbei das bereits vorhandene Programm.

Ich freu mich über eure Antworten, bleibt gesund

Gruß Gotti
Hallo Gotti,

wieviele unterschiedliche Nachrichten willst du denn auswerten?
Wie stark unterscheiden sie sich?

Ich würde für jeden Typ Nachricht einen Case in einer Casestruktur vorsehen, der Case selbst wird durch den Nachrichtentyp ausgewählt…
Hallo,

bei einer variablen Anzahl von Elementen in deiner Antwort bietet sich ein Array an, den String könntest du z.B. mit der Funktion "Spreadsheet-String to Array" zerteilen.

Gruß, Jens
Wie immer vielen Dank für eure schnellen Antworten!

Ich denke ich versuche zunächst die Nachricht etwas genauer zu beschreiben:

also sendet man: "getData\00"

bekommt man die Antwort: "getData-Antwort: 0|0|0|0|0|TTT|622|694|151" ,die für mich interessanten Werte sind die nach dem Doppelpunkt und getrennt werden die Nachrichten durch die Trennstriche.

Verändern sich Messwerteso können die Antworten auch wie folgt ausfallen:
- "getData-Antwort: 0|132|237|25000|14000|TTT|640|743|168"
- "getData-Antwort: 0|652|1129|23000|13500|TTF|634|867|165"

Die Messwerte würde ich dann gerne im Frontpanel darstellen bzw wären zum Beispiel Led für die True/False Werte schön.

Muss ich dann beim Visa Read die Byteanzahl auf die maximal Mögliche Byte-anzahl stellen?
Könnt ihr mir eine empfehlung geben, ob es besser mit einer Case Struktur oder dem "Spreadsheet-String to Array" funktioniert?
Hallo Gotti,

Zitat:"getData-Antwort: 0|0|0|0|0|TTT|622|694|151"
"getData-Antwort: 0|132|237|25000|14000|TTT|640|743|168"
"getData-Antwort: 0|652|1129|23000|13500|TTF|634|867|165"
Die Messwerte würde ich dann gerne im Frontpanel darstellen bzw wären zum Beispiel Led für die True/False Werte schön.
Könnt ihr mir eine empfehlung geben, ob es besser mit einer Case Struktur oder dem "Spreadsheet-String to Array" funktioniert?
Wenn du einen String mit den Querstrichen bekommst, dann solltest du SpreadsheetStringToArray benutzen:
[attachment=61730]
(Frage jetzt bitte nicht, wie man in einem String nach dem ":" sucht und den String daran aufteilt…)

Zitat:Muss ich dann beim Visa Read die Byteanzahl auf die maximal Mögliche Byte-anzahl stellen?
Ja. Ich hoffe, die Message wird immer mit dem richtigen TermChar beendet!?
Vielen Dank Gerd.

Nach deiner Vorarbeit war es sehr leicht umzusetzen. Nur scheitere ich zur Zeit leider noch wie von Dir vermutet an dem Doppelpunkt.
Ich konnte zwar den string aufteilen, jedoch wird auch der Doppelpunkt weiter gereicht und so empfange ich die erste Nachricht nicht bzw sie wird als 0 interpretiert.
Dann wollte ich nach dem Leerzeichen suchen :"\s" was jedoch nicht funktioniert.

Würde mich freuen, wenn ich noch eine Hilfestellung bekommen könnte.

Grüße Gotti
Nimm doch einfach eine passendere Funktion:
[attachment=61732]

Und warum schon wieder diese ganzen Rube-Goldberg-Konstrukte?
Warum mehrfach StringToNum, wenn einmal ausreicht?
Warum mehrere IndexArray, wenn eines ausreicht?
Referenz-URLs