LabVIEWForum.de
Labview Import / DLL debuggen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: Labview Import / DLL debuggen (/Thread-Labview-Import-DLL-debuggen)

Seiten: 1 2 3 4


RE: Labview Import / DLL debuggen - galilio - 05.10.2015 14:58

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 ......


RE: Labview Import / DLL debuggen - galilio - 06.10.2015 06:09

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());
    ........
}



RE: Labview Import / DLL debuggen - galilio - 06.10.2015 06:32

so sieht die Messungsfunktion aus:


RE: Labview Import / DLL debuggen - rolfk - 06.10.2015 18:57

(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!


RE: Labview Import / DLL debuggen - galilio - 07.10.2015 08:04

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 ?


RE: Labview Import / DLL debuggen - galilio - 08.10.2015 08:11

Hallo,


es hat sich erledigt.

Danke


RE: Labview Import / DLL debuggen - galilio - 12.10.2015 09:04

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


RE: Labview Import / DLL debuggen - rolfk - 12.10.2015 23:36

(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?


RE: Labview Import / DLL debuggen - galilio - 23.10.2015 10:23

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 ....?


RE: Labview Import / DLL debuggen - rolfk - 24.10.2015 23:11

(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!