Ich habe jetzt die ersten beiden VIs geändert und wollte fragen, ob ich hier schon grobe Denkfehler gemacht habe, da mir meine Version deutlich kompakter erscheint? Zudem erscheinen mit die ganzen Schleifen und die "True"-Voraussetzung irgendwie als völlig unnötig?
Hallo Rumo,
Zitat:Ich habe jetzt die ersten beiden VIs geändert und wollte fragen, ob ich hier schon grobe Denkfehler gemacht habe, da mir meine Version deutlich kompakter erscheint?
Das "kompakter" ist vollkommen ok!
Zitat:Zudem erscheinen mit die ganzen Schleifen und die "True"-Voraussetzung irgendwie als völlig unnötig?
Ja, die waren unnötig - bzw. sogar grob falsch…
Hinweise:
- Lies dir den StyleGuide in der LabVIEW-Hilfe durch. VIs sollten sinnvolle Icons bekommen, es sollte ein Standard-Anschlusspattern (ConnectorPane) vom Type 4-2-2-4 verwendet werden, es sollten ErrorIO-Anschlüsse vorhanden sein, sinnvolle Bezeichnungen/Labels für FP-Elemente, usw.
- Ich würde auf dieses VISA-Event verzichten. Wozu willst du das nutzen? Die Abfrage von "anz" Zeichen reicht vollkommen aus!
(09.06.2021 10:24 )GerdW schrieb: [ -> ]Das "kompakter" ist vollkommen ok!
Das ist schonmal gut zu hören. Ich bin auch darüber verwundert, dass in den alten VIs ständig schon Bestehendes wieder neu geschrieben wurde.
(09.06.2021 10:24 )GerdW schrieb: [ -> ]- Lies dir den StyleGuide in der LabVIEW-Hilfe durch. VIs sollten sinnvolle Icons bekommen, es sollte ein Standard-Anschlusspattern (ConnectorPane) vom Type 4-2-2-4 verwendet werden, es sollten ErrorIO-Anschlüsse vorhanden sein, sinnvolle Bezeichnungen/Labels für FP-Elemente, usw.
- Ich würde auf dieses VISA-Event verzichten. Wozu willst du das nutzen? Die Abfrage von "anz" Zeichen reicht vollkommen aus!
Für den ersten Hinweis muss ich mich wohl teilweise noch etwas einlesen. Werde aber versuchen es umzusetzen. Beim zweiten Hinweis muss ich ehrlich sagen, dass ich den Nutzen der Events gar nicht verstehe und diese vom Vorgänger übernommen habe.
Ähnlich verhält es sich beim angehängten Bild. Ich habe dort einen Wust an Informationen mit unnötigen (?) true/false-cases, wobei der false-case mal wieder einfach leer ist. Zudem existiert das erste Drittel schon und in der Mitte werden einfach nur eingebene Zahlen in Strings transformiert, die dann exponentiell ausgeschrieben sind? Ich habe etwa 15 Minuten benötigt, um zu verstehen, dass der vierte Block anscheinend nur meinen eingebenen Zahlenwert in eine exponentielle Form bringt, aber auf die wahrscheinlich komplizierteste Weise, die ich je gesehen habe?
Hallo Rumo,
Zitat:Ähnlich verhält es sich beim angehängten Bild. Ich habe dort einen Wust an Informationen mit unnötigen (?) true/false-cases, wobei der false-case mal wieder einfach leer ist. Zudem existiert das erste Drittel schon und in der Mitte werden einfach nur eingebene Zahlen in Strings transformiert, die dann exponentiell ausgeschrieben sind? Ich habe etwa 15 Minuten benötigt, um zu verstehen, dass der vierte Block anscheinend nur meinen eingebenen Zahlenwert in eine exponentielle Form bringt, aber auf die wahrscheinlich komplizierteste Weise, die ich je gesehen habe?
Dazu hatte ich gestern schon mal ein Bild angehangen (s. Beitrag #7)…
Die Case-Struktur ist hier nötig, da nur ein Befehl versendet werden soll, wenn das "command" eben ungleich Null ist.
Das Umwandeln von Zahl nach String ist wahrhaftig umständlich, dafür gibt es ja FormatIntoString mit vielen FormatCodes.
Das sind keine "Blöcke", sondern Frames einer Sequenzstruktur. Du hilfst dir und uns, wenn du korrekte LabVIEW-Begriffe verwendest.
Ich wollte mich nochmals bei dir für die ganzen Hilfestellungen bedanken.
Ich habe mich jetzt zwei Tage über einige Grundlagen belesen beziehungsweise angesehen und alle VIs zur Ansteuerung meiner DACs umgeschrieben. Ich muss nur noch die Terminals meiner VIs verallgemeinern. Zudem habe ich ein VI geschrieben (DAC_control_neu.vi) mit dem ich jeden DAC ganz einfach über seinen VISA ressource name ansprechen und eine Spannungseingabe einstellen kann. Über eine Event-Structure habe ich die Rechenlast deutlich verringert. Nächste Woche werde ich mich dann an ein VI setzen, das mir die ausgegebene Spannung eines DACs in ein passendes Magnetfeld der entsprechenden Achse umwandelt und ein weiteres VI, um parallel eine magnetfeldabhängige IV-Kennlinie aufnehmen zu können.
Hallo Rumo,
Zitat:Zudem habe ich ein VI geschrieben (DAC_control_neu.vi) mit dem ich jeden DAC ganz einfach über seinen VISA ressource name ansprechen und eine Spannungseingabe einstellen kann. Über eine Event-Structure habe ich die Rechenlast deutlich verringert.
Schon etwas besser - aber noch ein weiter Weg
Schau mal hier:
[
attachment=61965]
Keinerlei lokale Variablen mehr!
Zitat:Ich muss nur noch die Terminals meiner VIs verallgemeinern.
Unbedingt!
Empfohlen wird das 4224-Pattern, wie es von sehr vielen Funktionen, die NI mitliefert, auch benutzt wird (z.B. FileOpen/Read/Write/Close).
Links/rechts oben kommen Referenzen ran, links/rechts unten ein ErrorIO!
Und natürlich ein vernünftiges VI-Icon: die Terminals zeigt man üblicherweise nicht an und auch die Namen der subVIs eher nicht…
Was in deinem ZIP auch noch fehlt, ist die LabVIEW-Projektdatei (also eine lvproj-Datei). Damit verwaltest du dein Projekt…
Und wenn du weiterhin diesen "Cluster RS232" benutzen willst: Cluster gehören eigentlich immer "typdefiniert"…