Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Ich möchte ausgewählte NMEA Daten, die als String eingelesen werden, auf einem Windows Mobile Gerät daratellen. Ich bekomme es aber leider nicht hin, den String auf die bestimmten Werte abzufragen. IN einem VI für einen normalen WIndows Rechner würde ich jetzt den String einfach durchsuchen mit "Muster suchen" nach den entsprechenden NMEA Kürzeln durchsuchen und zergliedern. Leider gibt es diese VI für PDA Anwendungen nicht.
Was mit dafür richtig erscheint ist "In String suchen" aber mit dem VI komme ich auch nicht klar: Ich bekomme nicht die Infornmatinonen aus dem Eingangsstring, die brauche. Kann mir jemand vielleicht helfen, und ein Beispiel für der Format-String geben, mit dem ich die Werte für verschiedene $GPxxx auslesen kann?
Danke schonmal
Kurok
Achso, ich möchte aus dem String nur spezielle Daten auslesen, also bei $GPHDT,12.4,V5 möchte ich nur die 12.4 hinterher raus haben.
Kenne das NMEA nicht, aber anhand deinen 2 Bsp. scheint es immer eine fixe Länge zu haben.
Dann würde ich das VI "String Subset" (de. verm. Teilstring ausgeben) verwenden.
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
Leider hat der empfangene String nicht immer die selbe Länge. Daher wird das nicht gehen. Denn zum einen Variieren die Daten, also in diesem Beispiel die 12.4 (kann auch mal 180.3 oder 0.2 sein), zum Anderen ist nicht davon auszugehen, dass die NMEA Codes immer in der "richtigen" Reihenfolge kommen. Ich muss im grunde nach einem bestimmten Bezeichner suchen, und den anschließenden Wert auslesen, egal, an welcher Stelle dieser Bezeichner im kompletten String steht.
Was also mein Hauptproblem zu sein scheint ist, dass ich die Daten in beliebiger Reihenfolge durchsuchen können muss. Wenn ich das mit "IN Sting suchen mache, dann ist die Reihenfolge aber leider entscheident. Denn so wie in dem Beispiel im jetzigen Anhang geht das zwar, aber nur, wenn die Daten in genau der Reihenfolge geliefert werden.....
Also schön, ich will es nun so machen, wie oben abgebildet, will mir aber auf dem Frontpanel dann zusammenstellen, welche NMEA-Daten nun in welcher Reihenfolge ausgelesen werden sollen (da es anders wohl nicht geht). Jetzt musste ich aber dabei feststellen, dass scheinbar der Format-String von "In String suchen" derart mit dem VI verknüpft ist, dass man diesen nicht variabel zusammenstellen kann, beispielsweise mit "String verknüpfen"
Hat da niemand eine bessere Lösung?
Du kannst/musst zeilenweise einlesen und zeilenweise parsen. Also nicht dreizeilenweise.
So, du bekommst eine NMEA Sequenz, dann nimmst du das VI namens Spreadsheet String To Array (Komma als Trennzeichen) und machst daraus ein String-Array, somit kannst du auf die einzelnen Daten zugreifen.
Das erste ist $Sequenzname, das schliesst du an eine Case-Struktur an und machst so viele Cases wie es Sequenzen gibt, die du parsen willst. In jedem Case machst du aus den einzelnen String-Array Elementen richtige Zahlen und was es sonst noch gibt, zum Beispiel mit Dezmal String To Number VI.
Ich hab das nochmal so gemacht, wie ich angefangen hatte, weil ich mit dem Spreadsheet keine Kommastellen bekommen habe, und auch die "$Sequenzname" nicht in das Array geschrieben wurden. Trotz %s formatierung bekam ich nämlich ein 2d-Array mit Double-Werten.... Kein Ahnung, was ich da falsch gemacht habe. Vielleicht noch einen Tipp? Wäre ja schon elegant.
Wenn ich das allerdings so mache, wie hier jetzt dargestellt, funktioniert das im Grunde. Nicht schön, aber immerhin. Wenn ich das ganze aber auf dem emulierten PDA laufen lasse, erhalte ich keine Kommastellen. Wenn ichs so ausführe aber schon. Was soll das nun wieder?
Hier nochmal meine vorläufige Variante mit dem Spreadsheet im Anhang.
Ja, wie gesagt: Das mit dem Array wär schon besser. Hab im vorigen Post nochmal angehängt, wie ich das gemacht habe. Komamstellen bekomme ich nach wie vor nur, wenn ich das VI auf dem PC Ausführen lasse. Auf dem emulierten PDA immer noch nicht.
13.02.2009, 16:23 (Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2009 16:25 von eg.)