INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Stringvergleich in case-Struktur



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!

17.11.2008, 14:11
Beitrag #11

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Stringvergleich in case-Struktur
' schrieb:Jens, Lucki,
meint ihr so???
Habe mal ein Beispiel gemacht. Es läßt sich noch eleganter machen, da sich das das meiste mehrmals wiederholt, aber ich wollte so wenig wie möglich verändern. Es ist fast alles leer, da muß Du noch ausfüllen. Neu ist jetzt, daß Du von jedem Punkt aus stoppen kannst oder auch zu einem beliebigen anderen State hinspringen kannst (Auf die blaue Leitung unten die entsprechend Zahl -1 geben) . Habe es jetzt einfach mal so gemacht, daß das VI bei 0 Bytes im Port stoppt, ohne den Rest noch zu machen.

LabVIEW rät übrigens von der exzessiven Verwendung von Sequenzstrukturen ab, so wie Du das hier praktizierst. Meist machen das Anfänger, die der Datenflußsteuerung nicht richtig trauen oder das Prinzip noch nicht richtig verstanden haben.
Lv85_img
Sonstige .vi  Test1.vi (Größe: 24,21 KB / Downloads: 195)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
17.11.2008, 16:35
Beitrag #12

ThomasDipl Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 54
Registriert seit: Oct 2008

8.5
-
de

85375
Deutschland
Stringvergleich in case-Struktur
Vielen, vielen Dank an euch beide. Jetzt ist mir das auch klar geworden;)Hab nun noch die Bedingungen eingebaut und hoffe nun das alles funktioniert. Allerdings ist mir immer noch nicht klar, warum LabVIEW die Sequenzen nicht nacheinander abarbeitet??? Wünsch euch einen schönen Feierabend.

Beste Grüße,

Thomas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.11.2008, 16:59
Beitrag #13

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Stringvergleich in case-Struktur
' schrieb:Allerdings ist mir immer noch nicht klar, warum LabVIEW die Sequenzen nicht nacheinander abarbeitet???
Wie kommst du jetzt darauf?

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.11.2008, 17:07
Beitrag #14

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Stringvergleich in case-Struktur
' schrieb:Allerdings ist mir immer noch nicht klar, warum LabVIEW die Sequenzen nicht nacheinander abarbeitet???
Hat das hier jemand so behauptet? Ich wüßte nicht. Das Problem bei Sequenzen ist doch gerade, daß sie immer starr hintereinander abgeabeitet werden und deshalb wenig flexibel sind. Also wenn z.B in Sequenz 0 ein Fehler festgetellt wird, die die Abarbeitung der nachfolgenden Sequenzen sinnlos macht, so ist die Auslassung dieser nachfolgenden Sequenzen schlecht möglich.

Übrigens ist auch diese 3er-Sequenz "Senden - Warten - Lesen der Bytes aus dem Buffer" nicht unbedingt das Beste.
Z.-B. so: Bei der Konfiguration "Terminal Zeichen" definieren. Der Empfangene String sollte mit diesem Zeichen abschließen, also z.B "CR". Das Lese- VI wartet dann, bis das Zeichen im Buffer eintrifft und liest dann den Buffer aus. Damit hat man keine unnötigen Wartezeiten.
Oder so: Wenn kein Terminalzeichen da ist, aber die Anzahl der zu erwartenden Bytes genau bekannt ist, dann ebenfalls Wartezeit weglassen und die Anzahl Bytes als Konstante an den VI-Eingang anlegen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.11.2008, 09:33
Beitrag #15

ThomasDipl Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 54
Registriert seit: Oct 2008

8.5
-
de

85375
Deutschland
Stringvergleich in case-Struktur
Guten Morgen Lucki,

"Oder so: Wenn kein Terminalzeichen da ist, aber die Anzahl der zu erwartenden Bytes genau bekannt ist, dann ebenfalls Wartezeit weglassen und die Anzahl Bytes als Konstante an den VI-Eingang anlegen."

Die Problematik bei mir ist, das er die Wartezeiten nicht einhält!!! Allerdings klingen Deine Vorschläge sehr gut. Das mit dem Terminalzeichen funktioniert wohl nicht, da mein Gerät auf einen ganz bestimmten request mit einem ganz bestimmten response antwortet. Falls ich dem request da noch was anhänge, kann es sein das ich nichts mehr bekomme. Allerdings ist die zweite Alternative wohl super. Aber ich dachte mit dem bytes at port habe ich genau dieses Verhalten! So wie ich Dichnun verstanden habe, muss ich den bytes at port entfernen und dem VISA lesen die genaue byte-Anzahl als Konstante spendieren Rolleyes?

Grüße, Thomas


Angehängte Datei(en)
Sonstige .vi  Einwahl_Gallerie_SubVI_1.vi (Größe: 56,24 KB / Downloads: 175)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.11.2008, 11:42
Beitrag #16

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Stringvergleich in case-Struktur
' schrieb:Die Problematik bei mir ist, das er die Wartezeiten nicht einhält!!!
Das Timeout wird eingestellt im Visa-Konfigurations-VI, und da habe ich mich sowieso sehr gewundert, daß Du da gar keines hast. Du brauchst doch eine Vorgabe der Baudrate usw., ich frage mich, wieso Dein VI überhaupt funktionieren kann, wenn das fehlt.
So wie Du es machst ist es auch nicht schlecht, der einzige Nachteil ist nur, daß Du bei der Wartezeit eine Reserve einbeziehen mußt. D.h das Ganze dauert etwas länger als unbedingt naotwendig. Der Vorteil ist aber, daß es keinen Timeoutfehler geben kann, denn Du liest eben immer die Anzahl von Bytes, die nach der Wartezeit garantiert im Buffer sind - ob das der richtige, vollständige String ist, ist eine andere Frage.
Wenn die Gegenstelle ein von Dir nicht zu beeinflussendes Gerät ist und kein Abschlußzeichen beim Senden das Strings mitliefert, ist natürlich nichts zu machen.
Ich persönlich habe eine Allergie gegen Sequenztrukturen und versuche sie immer zu vermeiden. Bei Deinem VI würde ich es z.B so machen:
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Case-Struktur: Angegebener Case nicht vorhanden braendy 10 6.807 02.02.2021 15:05
Letzter Beitrag: Lucki
  Case Struktur 2 Schleifendurchläufe verzögert True setzen aber sofort auf False bachatero18 4 5.693 07.11.2020 14:08
Letzter Beitrag: Martin.Henz
  CAN Nachrichten in Array verarbeiten und aus Case Struktur weiterverarbeiten Tomate27 4 4.547 17.07.2020 13:30
Letzter Beitrag: Tomate27
  Steuerung, Case-Struktur pixie_2 4 4.114 16.04.2020 14:30
Letzter Beitrag: GerdW
  Event Case Ignoriert Tastendruck wenn in Gegenwart eines anderen "Leeren" Event Case Ksanto 8 8.248 23.10.2017 09:08
Letzter Beitrag: Ksanto
  Case-Struktur führt True und False aus (Ereignisschleife) HIMI 11 9.026 24.08.2017 13:04
Letzter Beitrag: HIMI

Gehe zu: