LabVIEWForum.de - Tutorial: Einbindung von DLLs

LabVIEWForum.de

Normale Version: Tutorial: Einbindung von DLLs
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
IchSelbst, Du schreibst in 2.1.4 Fliesskommazahlen:

Der Typ Extended ist 80 Bit, also 10 Byte breit. Dieser Typ wird von LV nicht unterstützt.

Das ist nicht korrekt. LabVIEW unterstüzt den Extended Datentyp. Nur ist er nicht platformunabhängig. Aber die Implementation in Windows is entsprechend dem Fliesskommaformat des Coprozessors und es würde mich verwundern wenn Delphi da etwas anderes verwenden würde.

Es ist aber so das C selber dafür keinen direkten Datentyp kennt. Das deshalb da er ja sehr hardwareabhängig ist.

Und die Erklärung warum LabVIEW und Datenpointer nicht gut zusammengehen klingt ein wenig gekünstelt. Ist vielleicht sinnvoll für einen unbedarften Programmierer der kein C oder was auch immer begreift und es auch nicht lernen will, aber dann ist schon mal die Frage ob er sich mit dem DLL Aufrufknoten überhaupt abgeben sollte.

Der LabVIEW Kern ist komplet in C(++) progrmiert und arbeitet daher intern fast ausschliesslich mit Pointern ;-) Der Grund warum Pointer in LabVIEW auf der Diagramebene nicht vorkommen ist viel mehr das LabVIEW eine umfassende Kontrolle des Speichers für den Benützer übernimmt. Das ist ja auch das Schöne an LabVIEW. Man braucht sich nie um die korrekte Allozierung und Deallozierung von Speicher zu kümmern, sondern kann direkt mit dem Programmieren der eigentlichen Funktion und dem Testen davon beginnnen.

Und Pointer können so ziemlich alles beherbergen. Das heisst dass LabVIEW entweder in der DLL Aufrufknotenkonfiguration eine wesentliche Einschränkung machen muss welche Konvertierungen es unterstützen will, oder aber diese Konfiguration wird so unübersichtlich, dass sie ein Manual benötigt das dicker ist als alle anderen LabVIEW-Manuals zusammen und auch dann noch nur für den absoluten C Crack zu begreifen ist.

Rolf Kalbermatter
' schrieb:Das ist nicht korrekt. LabVIEW unterstüzt den Extended Datentyp.
Letzteres schon. Nur kannst du ihn nicht per DLL-Knoten an eine DLL übergeben. Es fehlt die Vorwahl beim Konfigurieren des Knotens hierfür.

Zitat:Und die Erklärung warum LabVIEW und Datenpointer nicht gut zusammengehen klingt ein wenig gekünstelt. Ist vielleicht sinnvoll für einen unbedarften Programmierer der kein C oder was auch immer begreift und es auch nicht lernen will
Im Prinzip triffst du meine Intension. Wink

Zitat:aber dann ist schon mal die Frage ob er sich mit dem DLL Aufrufknoten überhaupt abgeben sollte
So wie ich das sehe, gilt oft nicht sollte, sondern müssen. Leider ist es oft so, dass die einzig brauchbare Software nur über DLL ansprechbar ist - in Ermangelung eines "anständigen" LV-Treibers etc.

Zitat:Der Grund warum Pointer in LabVIEW auf der Diagramebene nicht vorkommen ist viel mehr das LabVIEW eine umfassende Kontrolle des Speichers für den Benützer übernimmt.
Man kann das auch anders herum ausdrücken: Ich wenn LV wäre, würde es nur sehr ungern sehen, wenn ein Anwendungsprogrammierer mit Pointern in meinen Daten herumpfuscht.

Zitat:Das ist ja auch das Schöne an LabVIEW. Man braucht sich nie um die korrekte Allozierung und Deallozierung von Speicher zu kümmern, sondern kann direkt mit dem Programmieren der eigentlichen Funktion und dem Testen davon beginnnen.
Das ist bei Delphi nicht anders. Oder sollte ich lieber sagen: Man kommt auch in Delphi ohne aus. Ich hab da noch nie Speicher explizit alloziert.

Zitat:Das heisst dass LabVIEW entweder in der DLL Aufrufknotenkonfiguration eine wesentliche Einschränkung machen muss welche Konvertierungen es unterstützen will, oder aber diese Konfiguration wird so unübersichtlich, dass sie ein Manual benötigt das dicker ist als alle anderen LabVIEW-Manuals zusammen und auch dann noch nur für den absoluten C Crack zu begreifen ist.
Im Prinzip hast du wohl Recht. Auch in LV sieht mal wohl den DLL-Knoten eher als notwendiges Übel. In Ermangelung entsprechender VIs.
' schrieb:Letzteres schon. Nur kannst du ihn nicht per DLL-Knoten an eine DLL übergeben. Es fehlt die Vorwahl beim Konfigurieren des Knotens hierfür.

Das stimmt aber das ist kein böser Wille von NI. Extended format is nicht wirklich unterstützt durch MS und daher ist auch kein fixer Standard wie das als Parameter an eine Funktion übergeben werden soll. ANSI C unterstützt es nicht mal da es nicht Hardwareunabhängig ist. Und damit gibt es eigentlich auch keine DLLs die das bräuchten.

Rolf Kalbermatter
Referenz-URLs