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:

Labview Import / DLL debuggen



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!

05.10.2015, 14:58
Beitrag #21

galilio Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 175
Registriert seit: Mar 2014

2015
2013
EN


Schweiz
RE: Labview Import / DLL debuggen
Hallo Rolf,

Kannst du bitte mir sagen was du genau damit

Zitat:"Behandle es als ein Pointer ohne in LabVIEW Dinge herauskopieren zu wollen und exportiere entsprechende Accessfunktionen denen Du diesen Pointer übergeben kannst und die Dir dann die Elemente daraus zurückgeben. Oder mache die ganze Funktion gleich ganz LabVIEW freundlich."
meinst?



Ich habe für den struct einen Getter und einen Setter dazu geschrieben.
Ich habe es mir gedacht, dass ich jede Element mit dem Getter aufrufen kann.
Das Value jeder Element ist immer 0.
Liege schon richtig oder ......
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.10.2015, 06:09
Beitrag #22

galilio Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 175
Registriert seit: Mar 2014

2015
2013
EN


Schweiz
RE: Labview Import / DLL debuggen
Hallo Zusammen so sehen die Getter bzw. Setter aus :

Code:
int getValueA(Mystruct *pointerStruct)
{
    return pointerStruct->A;
}
void setValueA(Mystruct *pointerStruct, int dAValue)
{
        pointerStruct->A = dAValue;
}

dann die richtige Methode, die exportiert ist:
Code:
void MeasurmentStart(Mystruct *_myStruct){
    ....
    //Hier bekomme ich die Values von einem anderen Objekt
    Myclass myclass;
    .....
    setValueA(_myStruct, myClass.getMeasureA());
    setValueB(_myStruct, myClass.getMeasureB());
    ........
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.10.2015, 06:32
Beitrag #23

galilio Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 175
Registriert seit: Mar 2014

2015
2013
EN


Schweiz
RE: Labview Import / DLL debuggen
so sieht die Messungsfunktion aus:


Angehängte Datei(en)
14.0 .vi  EFI Lib Measure.vi (Größe: 20,75 KB / Downloads: 286)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.10.2015, 18:57 (Dieser Beitrag wurde zuletzt bearbeitet: 06.10.2015 18:58 von rolfk.)
Beitrag #24

rolfk Offline
LVF-Guru
*****


Beiträge: 2.306
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Labview Import / DLL debuggen
(06.10.2015 06:32 )galilio schrieb:  so sieht die Messungsfunktion aus:

Wenn Du schon einen Wrapper machst ist die Verwendung der DSNewPointer und GetValueByPointer und Friends Funktionen völlig aberwitzig. Mache das alles im Wrapper korrekt und exportiere ein API das statt einer struct mit internen Pointern sinnvolle Parameter mit Strings etc. verwendet!

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.10.2015, 08:04
Beitrag #25

galilio Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 175
Registriert seit: Mar 2014

2015
2013
EN


Schweiz
RE: Labview Import / DLL debuggen
Hallo Rolf,

danke für die Antwort:

Ich habe folgende Problem:

Code:
void MeasurmentStart(Mystruct *_myStruct){
    ....
    //Hier bekomme ich die Values von einem anderen Objekt
    Myclass myclass;
    .....
    setValueA(_myStruct, myClass.getMeasureA());
    setValueB(_myStruct, myClass.getMeasureB());
    ........
}

Die Value jede Daten Elemente bekomme ich wie in der obere Funktion auf einen schlag vom Objekt
Code:
Myclass myclass;
deswegen habe ich bei der Funktion
Code:
MeasurmentStart(Mystruct *_myStruct)
das
Code:
struct MyWrapper
als übergabeparameter verwendet, damit ich die Setter Funktion
Code:
setValueA(_myStruct, myClass.getMeasureA());
verwenden kann (damit wird das Value von der Variable A gesetzt ).


Also wenn ich das anders mache heisst:

1) Verzicht auf Getter und Setter von der
Code:
Struct MyWrapper
2) Struct als übergabeparameter bei der Funktion
Code:
void MeasurmentStart(Mystruct *_myStruct)
wird nicht mehr gebracht also die Funktion sieht dann so aus
Code:
void MeasurmentStart()
3) Für jede DatenElement der
Code:
Struct MyWrapper
muss extra eine Funktion implementiert werden und das Objekt
Code:
Myclass myclass;
(x. Fach) aufgerufen wird.
Das ist genau das was ich vermeiden möchte

--> Ist das SO ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.10.2015, 08:11
Beitrag #26

galilio Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 175
Registriert seit: Mar 2014

2015
2013
EN


Schweiz
RE: Labview Import / DLL debuggen
Hallo,


es hat sich erledigt.

Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.10.2015, 09:04
Beitrag #27

galilio Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 175
Registriert seit: Mar 2014

2015
2013
EN


Schweiz
RE: Labview Import / DLL debuggen
Hallo zusammen,

ich habe es folgende:

Mehrere Funktionen, die als Rückgabeparameter:
1) 0 haben, wenn es alles okay ist.
oder
2) ab (5000.....) >0 beim Fehlverhalten

Ich habe es mir zwei Varianten überlegt:

1) VI als Error Handler (Wie das geht weiss ich nicht)
2) Einen ClusterError schreiben und in LabVIEW Error Bibliothek integrieren (wie?)?

Welche Variante ist eure Meinung nach zu empfehlen?

Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.10.2015, 23:36
Beitrag #28

rolfk Offline
LVF-Guru
*****


Beiträge: 2.306
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Labview Import / DLL debuggen
(12.10.2015 09:04 )galilio schrieb:  Hallo zusammen,

ich habe es folgende:

Mehrere Funktionen, die als Rückgabeparameter:
1) 0 haben, wenn es alles okay ist.
oder
2) ab (5000.....) >0 beim Fehlverhalten

Ich habe es mir zwei Varianten überlegt:

1) VI als Error Handler (Wie das geht weiss ich nicht)
2) Einen ClusterError schreiben und in LabVIEW Error Bibliothek integrieren (wie?)?

Welche Variante ist eure Meinung nach zu empfehlen?

Danke

Warum nicht einfach Programming->Dialog & User Interface->Error Cluster From Error Code.vi verwenden?

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.10.2015, 10:23
Beitrag #29

galilio Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 175
Registriert seit: Mar 2014

2015
2013
EN


Schweiz
RE: Labview Import / DLL debuggen
Hallo zusammen,

Ich habe mehrere VI, die ich duch einen "DLL Import" LibImport erstellt habe.
Es war die Idee am Anfang nur einen Interface zu herstellen.
Jetzt soll ich daraus einen exe File erstellen.

Meine Idee ist einen State machine zu erstellen.

Problem ist: Viele der erstellte haben VI keinen Terminals.
Also wie sollen sie denn ausgeführt werden, wenn sie Keine Terminals haben.

Was muss ich denn ändern auf der C_Wrapper Seite.
Soll ich für die jenignen VI bzw. die Funktionen einen bool Variable übergeben ....?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.10.2015, 23:11
Beitrag #30

rolfk Offline
LVF-Guru
*****


Beiträge: 2.306
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Labview Import / DLL debuggen
(23.10.2015 10:23 )galilio schrieb:  Hallo zusammen,

Ich habe mehrere VI, die ich duch einen "DLL Import" LibImport erstellt habe.
Es war die Idee am Anfang nur einen Interface zu herstellen.
Jetzt soll ich daraus einen exe File erstellen.

Meine Idee ist einen State machine zu erstellen.

Problem ist: Viele der erstellte haben VI keinen Terminals.
Also wie sollen sie denn ausgeführt werden, wenn sie Keine Terminals haben.

Was muss ich denn ändern auf der C_Wrapper Seite.
Soll ich für die jenignen VI bzw. die Funktionen einen bool Variable übergeben ....?

Was hat ein Terminal damit zu tun ob ein VI ausgeführt werden kann???

Und wenn die meisten Deiner VIs kein Terminal haben scheint mir etwas mit dem Wrapper falsch gegangen. Da sollte doch bei den meisten zumindest ein Objektpointer sein!! Und Parameter die den Methoden übergeben werden oder von diesen zurückgegeben werden!

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen 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
  USB Relay DLL import hansi9990 3 10.266 02.09.2019 09:15
Letzter Beitrag: hansi9990
  DLL Import externe Struktur in Header bekommen hansi9990 15 24.718 30.09.2016 17:20
Letzter Beitrag: hansi9990
  aus einem Library Import Installer machen galilio 5 13.155 04.04.2016 09:32
Letzter Beitrag: galilio
  DLL Import automatisieren CS 3 8.111 13.02.2015 10:53
Letzter Beitrag: CS
  Import Assistent findet Funktionen nicht TDO 1 5.669 11.12.2014 16:24
Letzter Beitrag: jg
  dll Import richtig verstanden? Gruenschnabel 6 8.350 19.09.2014 10:25
Letzter Beitrag: DATAAHEAD

Gehe zu: