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 

Dieses Thema hat akzeptierte Lösungen:

Division durch x VI



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!

13.04.2016, 14:57
Beitrag #1

HasteMalNeMark Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Mar 2016

15
2008
DE

Berlin
Deutschland
Division durch x VI
Testweise schreibe ich grade an einem Polymorphen VI, was eine beliebige Zahl durch 2 teilen soll.
Später soll dann auch die Möglichkeit gegeben sein, mit einer Kopie dieses Polymorphen VIs
andere Teiler zu verwenden. Der einzige Zweck ist, dass ich gerne bei einer unären mathematischen
Operation auch ein SubVi mit nur einem Anschluss haben möchte und nicht mit zwei wie bei dem Dividieren
SubVi aus der Funktionenpalette.
Mir fehlt hierfür grade so ein bisschen die vom C++ her bekannte Template Programmierung.
LabView hat offensichtlich 15 verschiedene numerische Datentypen und es erscheint mir gerade etwas verschwenderisch
ein polymorphes SubVi mit 15 verschiedenen Anschlusstypen zu erstellen.
Folgendes habe ich versucht:

- Ein Kern Vi, welches ein Variant durch 2 teilt -> Variant kann man erst nach Umwandlung teilen (ist ja auch klar, weil die Variant ja auch
nicht numerische Typen ent[/align]halten kann)
- Ein Kern Vi, welches eine ExtendedCpxDbl durch 2 teilt -> lässt sich nicht so ohne weiteres zurückkonvertieren
- Hilfs VIs, welche verschiedene Eingangstypen in eine ExtendedCpxDbl umwandeln und nach Division wieder zurück
- Ein VI mit Variant Eingang, welches die Variant in eine ExtendedCpxDbl umwandelt und an das Kern VI übergibt, welches dann den halbierten Wert als ExtendedCpxDbl zurückgibt.

Wie auch immer man es dreht, es bleibt ein Grundproblem übrig:
1.) Entweder man hat 15 VIs für die 15 Datentypen, die alle im wesentlichen das Gleiche tun oder
2.) Man hat Schwierigkeiten wieder den Ausgangsdatentyp zurück zu erhalten

Hat jemand schon mal so etwas ähnliches probiert, evtl. sogar mit Express VI?
Mich würde interessieren wie andere das machen.

Vielen Dank und viele Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.04.2016, 16:20
Beitrag #2

Freddy Offline
Oldtimer
****


Beiträge: 729
Registriert seit: Aug 2008

2019, 2020, 2021
1996
DE

76275
Deutschland
RE: Division durch x VI
Wenn Du einer zweiten Variantenvariable (tolles Wort) den Typ mit gibst. Könntest Du in einem VI über eine IF Anweisung alle 15 Möglichkeiten abbilden.


Angehängte Datei(en) Thumbnail(s)
   

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.04.2016, 17:17 (Dieser Beitrag wurde zuletzt bearbeitet: 13.04.2016 17:17 von GerdW.)
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Division durch x VI
Hallo Mark,

Zitat:1.) Entweder man hat 15 VIs für die 15 Datentypen, die alle im wesentlichen das Gleiche tun
Eigentlich ja noch viel mehr: du vergisst, dass man auch mit Arrays beliebiger Dimension (und beliebigem numerischen Datentyps) rechnen kann. Und auch mit Clustern, wenn sie numerische Werte enthalten!

Zitat:2.) Man hat Schwierigkeiten wieder den Ausgangsdatentyp zurück zu erhalten
Ja.

Zitat:es erscheint mir gerade etwas verschwenderisch ein polymorphes SubVi mit 15 verschiedenen Anschlusstypen zu erstellen.
Das ist aber noch immer der einfachste Weg! (Für jeden von dir unterstützten Datentyp ein subVI deines polymorphen VIs anlegen!)

Zitat:Ein Kern Vi, welches ein Variant durch 2 teilt -> Variant kann man erst nach Umwandlung teilen (ist ja auch klar, weil die Variant ja auch
nicht numerische Typen ent[/align]halten kann)
Die Variant-Variante (auch ein schönes Wort!) hat aber einen GROSSEN Nachteil: Du musst entweder einen Variant ausgeben, was dann im aufrufenden VI Probleme machen kann - oder du musst wieder füür jeden unterstützten Datentyp ein subVI anlegen, welches genau diesen Datentyp ans aufrufende VI zurückgibt…

Eine weitere Möglichkeit: mit LVOOP rumspielen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.04.2016, 10:10 (Dieser Beitrag wurde zuletzt bearbeitet: 14.04.2016 10:10 von HasteMalNeMark.)
Beitrag #4

HasteMalNeMark Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Mar 2016

15
2008
DE

Berlin
Deutschland
RE: Division durch x VI
Würde man mit OOP nicht an den gleichen prinzipiellen Stellen steckenbleiben?
Oder bieten die dynamischen dispatches noch mehr Möglichkeiten in diesem Zusammenhang?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.04.2016, 12:30
Beitrag #5

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Division durch x VI
(14.04.2016 10:10 )HasteMalNeMark schrieb:  Würde man mit OOP nicht an den gleichen prinzipiellen Stellen steckenbleiben?
Oder bieten die dynamischen dispatches noch mehr Möglichkeiten in diesem Zusammenhang?

Die Schwiegrigkeiten wären bei LVOOP andere, sogar schlimmer!
Du würdest nicht nur die Override-VI's für Deine unäre Operation für alle Datentypen implementieren müssen, sondern auch die zugehörigen Basis- und Kindklassen. Zusätzlich sind die Klassenattribute privat! Du kannst Sie also nicht einfach auf dem Frontpanel eingeben oder anzeigen. Du benötigst Attribut-Zugriffs-VI's für jeden Datentyp mit eindeutigem Namen. Diese müssen statische-VIs sein, weil dynamic-Dispach-VIs dieselbe Connector-Pane haben müssen.

Ausweg: XControl! Ein Dynamic-Dispatch-Attribut-Zugriffs-VI, das den Wert als String in der korrekten Formatierung zurückliefert und anzeigt. Alle Kindklassen müssten es überschreiben.

Noch Fragen?
Ich habe noch eine? Wieviel Zeit möchtest Du aufwenden, um alles anderen Rechenoperationen, z.B. Increment, OO-konform zu implementieren.

Was gefällt Dir an dem Primitve Division nicht? Kannst Du das bnitte erläutern? Oder handlet es um eine akademeische Übung?

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.04.2016, 13:56
Beitrag #6

HasteMalNeMark Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Mar 2016

15
2008
DE

Berlin
Deutschland
RE: Division durch x VI
Zum einen möchte ich mir nützliche Bibliotheksfunktionen schreiben, so dass ich dachte ich investiere jetzt ein bisschen Arbeit um mir dann oft andere Arbeit zu sparen.
Da ich schon ziemlich oft durch 2 (oder eine andere Konstante) dividieren musste, bekam ich den Gedanken ein SubVi mit entsprechendem platzsparendem Icon zu erstellen und dieses immer wieder zu verwenden.
Leider fallen einem die Hindernisse oft erst auf, wenn man was ausprobiert. So war es auch hier. Um die Situation sozusagen zu "retten" habe ich die Frage gestellt weil man selbst ja manchmal irgendwelche Tricks nicht kennt, die einem zur Lösung verhelfen. Abgesehen davon lernt man bei solchen Experimenten unabhängig vom Ergebnis meist recht viel, was die Mühe dann wieder lohnt.
Ich denke, ein tolerabler Komprimiss könnte so aussehen, dass man eine Variant annimmt und eine Dbl (oder ext Dbl) ausgibt. Dann hat man zwar unschöne Koercion Dots, aber immerhin gehts.
So wird ich das jetzt wohl lassen, wobei ich mir vielleicht mal bei der nächsten Gelegenheit die XControls reinziehen werde. Man muss ja auch nicht immer alles auf einmal lösen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.04.2016, 14:25
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Division durch x VI

Akzeptierte Lösung

Wenn's nur um Platzsparen im BD geht - ExpressionNode:
   
Gruß, Jens

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
19.04.2016, 08:50
Beitrag #8

HasteMalNeMark Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Mar 2016

15
2008
DE

Berlin
Deutschland
RE: Division durch x VI
Oh mann, warum kompliziert, wenns auch einfach geht?
Manchmal hat man ne fixe Idee im Kopf und blockiert sich damit selbst.
Die Expression Node ist auf jeden Fall ne gute Idee und ist viel übersichtlicher
als der Kabelverhau mit den Arithmetik VIs.
Weiterer Vorteil: Die Wartbarkeit wird erhöht, wenn man mal die Formel ändern muss.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.04.2016, 09:20
Beitrag #9

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Division durch x VI
...und: Der Ausdrucksknoten funktioniert auch mit Arrays und Clustern
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Unterscheidung Start durch exe oder durch vi M Nussbaumer 4 5.415 08.02.2010 12:43
Letzter Beitrag: M Nussbaumer

Gehe zu: