LabVIEWForum.de
Woerter in String suchen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Woerter in String suchen (/Thread-Woerter-in-String-suchen)

Seiten: 1 2 3


RE: Woerter in String suchen - bluesaturn - 06.10.2011 19:27

Oh jeh, meine Stringabfrage wird immer schlechter statt besser. Das Gerät sendet immer noch andere Strings, die ich nicht abfange und jedes Mal gibt es jetzt eine Fehlermeldung.
Gerd, gibt es eigentlich die Möglichkeit, einen Errorcase einzubauen, der alle unbekannten Strings, von den ich nicht weiß, wie sie aussehen, abfängt?
Ich hoffe, ich habe heute Nacht genug Zeit, mir das Gerät erneut vorzunehmen.
Ich verstehe das nicht. Mein Vorschlag hat noch zuhause funktioniert und jetzt geht nix mehr. Alle 2s kommt eine LabViewfehlermeldung, daß bei Scan von String was nicht erkannt worden ist.


RE: Woerter in String suchen - GerdW - 06.10.2011 20:00

Hallo blue,

ScanFromString hat einen Fehlerausgang. Wenn man den behandelt, gibt's auch keine Fehlermeldung mehr...

So wie bei allen anderen Fehlermeldungen auch - gute Programmierung schließt Fehlerbehandlung mit ein!


RE: Woerter in String suchen - bluesaturn - 06.10.2011 20:05

(03.10.2011 16:49 )GerdW schrieb:  Hallo blue,

noch eine Idee:

Hallo Gerd,
da mein Beispiel nicht mehr funktioniert, habe ich deins gerade eingebaut. Allerdings gobt nach dem ersten Scan from String.vi nichts mehr raus:
01:0ml zb. ist danach nur noch "ml".
Ich dachte das %d%s sollte mit dem %d die 01 erkennen und %s sollte :0ml werden? Kann es sein, das da eventuell etwas falsch bitte ist?


RE: Woerter in String suchen - GerdW - 06.10.2011 20:11

Hallo blue,

Zitat:Ich dachte das %d%s sollte mit dem %d die 01 erkennen und %s sollte :0ml werden?
Falsch. Das %d%s soll das "01:" erkennen. (Das nachfolgende "%f%s" im Case soll den Wert und EInheit erkennen.) Du hattest nämlich nur Beispiele genannt, die nach dem ":" ein Leerzeichen haben.
Jetzt kommst du plötzlich mit "01:0ml" um die Ecke: hier nun plötzlich ohne Leerzeichen. Mein letztes Beispiel funktioniert aber mit genau den Beispiel-Strings, die du selbst letztes Mal genannt hast und die als Kommentar mit im Snippet stehen!

Vielleicht solltest du erst einmal klären, was für Strings du nun wirklich gesendet bekommst. Dann kann man nämlich "funktionierende" Vorschläge machen.
Wall


RE: Woerter in String suchen - bluesaturn - 06.10.2011 20:49

Hallo GerdW,
Du hast natürlich recht. Ich verstehe das auch nicht. Diese Pumpe sendet ständig andere Strings und Scan from String.vi fehlt etwas an Flexibilität.
Entschuldige bitte. Ich wollte ja auch alle Strings einmal auslesen, aber ich schaffe es nicht. Deswegen habe ich wiederum in LabView Probleme, das richtig hinzubekommen.

So, ich habe jetzt mal die Probe-Function benutzt und alle incoming values von der Pumpe angeschaut. Hier sind einige von ihnen (die, die ich im Probefester sehen konnte):

01:3.2 seconds
01:8.5 seconds
01:5.40 seconds
01*53.40 seconds
01>10 seconds
01>0 ul
01:0 ml
01:0 seconds
01*0 ml
01*30 ul

Das würde ja alles in dein Skript passen, aber Achtung nun kommts:
Heute taucht ungelogen die Stringkombi
01*T*30 ul

auf.
Edit: Doch :T* gibt es auch noch.
Das sieht dann so aus: 01:T*30 seconds


RE: Woerter in String suchen - GerdW - 07.10.2011 08:11

Hallo blue,

Zitat:Scan from String.vi fehlt etwas an Flexibilität.
Ich würde eher sagen: Du solltest mal die Anleitung zur Pumpe lesen (wo sicher angegeben ist, welche Strings zu erwarten sind) und dann die Anleitung zum ScanFromString...

So geht's für alle "ordentlichen" Meldungen:
[attachment=36372]

Die "unordentlichen" Meldungen (mit "*T*" drin etc.) darfst du im Fehler-Case selbst behandeln (Tipp: "%d%3s%f%s"...)!


RE: Woerter in String suchen - bluesaturn - 19.10.2011 17:04

(07.10.2011 08:11 )GerdW schrieb:  Die "unordentlichen" Meldungen (mit "*T*" drin etc.) darfst du im Fehler-Case selbst behandeln (Tipp: "%d%3s%f%s"...)!

Hallo Gerd, ich haette noch ein paar Fragen bitte.
Zunaechst vielen Dank fuer die tolle Loesung.

1. Du schreibst in den String:
%d%1s%.;%f%s

Das %1s stellt sicher, das nur ein Zeichen erwischt wird, oder?

Die Kombination von %.; verstehe ich leider gar nicht, insbesondere ".;" Dafuer finde ich in der Hilfe auch kein Beispiel.
%f%s sind dann wieder fuer den Zahlenwert und die Einheit.

2. Fuer die Fehlermeldung gibst du mir den Hinweis:
"%d%3s%f%s"

Ich verstehe ja, dass %3s die Sachen wie *T* behandeln soll, allerdings verstehe ich nicht, was man in Fehlerbox reinschreiben soll.
Es ist ja praktisch, wie ein if-case, der abhaengig vom String ist. Man muesste doch dann den Output von der Vi, Value und Uni, durch den Error-case durchziehn, oder? Ich versuche, in die RIchtung mal rumzuspielen.

Vielen Dank fuer deine Kommentare.

Wie sieht sowas bitte aus? Ist das okay?
Danke.
Blue.

Lv09_img2


RE: Woerter in String suchen - jg - 19.10.2011 17:17

(19.10.2011 17:04 )bluesaturn schrieb:  Die Kombination von %.; verstehe ich leider gar nicht, insbesondere ".;" Dafuer finde ich in der Hilfe auch kein Beispiel.
%f%s sind dann wieder fuer den Zahlenwert und die Einheit.
%.; und %,; sind 2 Format-Specifier, die das Dezimal-Trennzeichen für die folgenden Fließkommazahlen-Umwandlungen definieren. Einmal wird der Punkt, das andere Mal das Komma als Dezimaltrennzeichen definiert.
Ohne solche Format-Specifier nimmt LabVIEW je nach Einstellung das Trennzeichen aus der Systemeinstellung deines Betriebssystems. Und das kann halt auch ein Komma sein, egal was du per RS-232 zurückbekommst.

Gruß, Jens


RE: Woerter in String suchen - NWOmason - 20.10.2011 06:30

Ich möchte an dieser Stelle gerne nochmal auf die Hilfe verweisen, in der die Syntax erläutert wird:

Format Specifier Syntax
http://zone.ni.com/reference/en-XX/help/371361F-01/lvconcepts/format_specifier_syntax/

falls noch Unklarheiten zu beseitigen sind oder jemand anders noch über das Thema stolpert Smile

Beste Grüße,
NWO