LabVIEWForum.de
Eingabefeld löschen nach Eingabe - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Eingabefeld löschen nach Eingabe (/Thread-Eingabefeld-loeschen-nach-Eingabe)

Seiten: 1 2


RE: Eingabefeld löschen nach Eingabe - GerdW - 02.02.2015 20:43

Hallo Gesetzt,

Zitat:en Zusammenhang mit dem TermChar nicht verstehe( Vllt kann das jemand kurz erläutern?)
Das wurde hier schon öfter erläutert, aber es schadet ja nicht, das nochmal aufzuschreiben…

VISARead liest bis
- die angeforderte Anzahl Zeichen im Buffer stehen
- ein TermChar im Empfangsbuffer gefunden wird
- ein Fehler (wie z.B. Timeout) auftritt

Wenn deine Messages also mit einem TermChar enden und üblicherweise 20 Bytes enthalten, dann konfiguriert man das TermChar und versucht 99 Bytes zu lesen. Warum 99? Um eben mehr als die übliche Message-Länge abzufragen - da VISARead ja automatisch mit dem TermChar den Lesezugriff erfolgreich beendet…

Zitat:dass der ganze Kram mit Visa Write nur ausgefuehrt wird, falls entweder einer der Schalter auf True steht, oder ein String eingegeben wurde. … Zusätzlich müsste halt noch überprüft werden, ob etwas im Eingabefeld steht, also quasi wieder True oder False. … Das könnte quasi so aussehen: If "Empty String" then false else True.
Code:
IF EmptyString?(sendstring) THEN
  do nothing
ELSE
  VISAWrite(sendstring + "LF")
ENDIF
Stell dir vor, in der Vergleichspalette gäbe es schon eine Funktion, die dir sagt, ob ein String leer ist oder nicht…

Zitat:Wenn ich jetzt den Befehl mit Enter bestätige, dann muss das ganze wieder in einer lokalen Variable gespeichert werden, oder merkt Labview sich automatisch die Eingabe bis abgefragt wird?
Was hat das Drücken der Enter-Taste mit dem Speichern zu tun? Fragst du dich das auch, wenn du irgendeinen Buchstaben eintippst?
THINK DATAFLOW!
LabVIEW liest dein String-Control, wenn es für den DATAFLOW nötig ist…
Und nein: man muss den Inhalt eines Controls nicht in eine lokale Variable eben desselben Controls kopieren!

Nach Jens' Vorschlag auch einer von mir:
[attachment=51957]
(Üblicherweise erledigt man die Abfrage der Bedienelemente mit einer Event-Struktur - da spart man sich gleich das Zusammenbauen und Testen des Strings…)


RE: Eingabefeld löschen nach Eingabe - Gesetzt - 02.02.2015 21:02

Hallo,

Ich sehe schon LabView denkt echt an allesWink. Vielen Dank ebenfalls für die Erläuterungen zum BytesAtPort. Um mal mein DATAFLOW Verständnis zu testen: Angenommen ich habe Jens' vorgeschlagene Anordnung implementiert. Dann könnte es doch leicht passieren, dass der String abgefragt wird, während ich noch am eintippen bin( weil z.B. vor 100 ms ermittelt wurde, dass der String nicht mehr leer ist), das heißt es müsste eine zusätzliche Pause eingebaut werden damit dies nicht passiert oder gibt es eine Möglichkeit zu ueberprüfen ob der Befehl mit Enter abgeschlossen wurde und den String nur dann "freizugeben". Hiermit ( http://zone.ni.com/reference/en-XX/help/371361F-01/glang/string_wo_trail_whitespace/ ) würde ja ein entsprechendes rausgefiltert, kann man den Wert dieser Funktion auslesen( ob etwas getrimmt wurde oder nicht?)

Mit freundlichen Grüßen

Gesetzt


RE: Eingabefeld löschen nach Eingabe - GerdW - 02.02.2015 21:11

Hallo Gesetzt,

Zitat:Dann könnte es doch leicht passieren, dass der String abgefragt wird, während ich noch am eintippen bin
Darauf antwortet man mit einem klassischen "JEIN!"…

Mach mal einen Rechtsklick auf dein String-Control, dann siehst du eine Option des String-Controls "Wert beim Schreiben einlesen".
Diese Option ist per Default deaktiviert, dein String wird also erst mit dem Drücken der Enter-Taste übernommen (oder wenn der String den Fokus verliert)!

Zitat:Ich sehe schon LabView denkt echt an alles
Ja, die LabVIEW-Entwickler haben auch an die Leute gedacht, die wie du einen String per Polling abfragen…


RE: Eingabefeld löschen nach Eingabe - jg - 02.02.2015 22:11

Offtopic2
(02.02.2015 21:11 )GerdW schrieb:  
Zitat:Ich sehe schon LabView denkt echt an alles
Ja, die LabVIEW-Entwickler haben auch an die Leute gedacht, die wie du einen String per Polling abfragen…
Alleine schon deshalb, weil es erst seit LabVIEW 6 eine Event-Struktur gibt, und diese auch erst seit LabVIEW 2012 in allen Entwicklungspaketen enthalten ist...
Die CLD-Prüfung lässt grüßen. Wink

Gruß, Jens