dynamische Byte-Anzahl einer Nachricht - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA) +---- Thema: dynamische Byte-Anzahl einer Nachricht (/Thread-dynamische-Byte-Anzahl-einer-Nachricht) |
dynamische Byte-Anzahl einer Nachricht - Gottimp - 22.03.2021 14:18 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 RE: dynamische Byte-Anzahl einer Nachricht - GerdW - 22.03.2021 14:31 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… RE: dynamische Byte-Anzahl einer Nachricht - jg - 22.03.2021 18:15 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 RE: dynamische Byte-Anzahl einer Nachricht - Gottimp - 23.03.2021 14:14 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? RE: dynamische Byte-Anzahl einer Nachricht - GerdW - 23.03.2021 14:24 Hallo Gotti, Zitat:"getData-Antwort: 0|0|0|0|0|TTT|622|694|151"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!? RE: dynamische Byte-Anzahl einer Nachricht - Gottimp - 23.03.2021 17:48 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 RE: dynamische Byte-Anzahl einer Nachricht - GerdW - 23.03.2021 18:15 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? |