LabVIEWForum.de
Pointer und MoveBlock - 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: Pointer und MoveBlock (/Thread-Pointer-und-MoveBlock)



Pointer und MoveBlock - OXO - 02.06.2013 16:12

Hallo und einen schönen Sonntag,

ich habe mal wieder ein Problem, es geht um folgende Funktion (die Funktion soll den Status der beiden digitalen Eingänge eines angeschlossenen USB Gerätes erfragen) :

BOOL HoleStatus ( DigitalInput* digital_input, const byte** status);

Status übergibt mir einen Zeiger auf einen Zeiger auf den Status der digitalen Eingänge. Folgendes habe ich bisher gemacht:

Wie immer über den Aufruf externer Bibliotheken die DLL eingebunden. Rückgabetyp (vorzeichenloser 32 Bit Integer) und digital_input (vorzeichenloser 32-Bit-Integer) definiert. Das beides funktioniert gewohnt gut. Ich erhalte über den Rückgabewert auch die Information, dass die Funktion erfolgreich ausgeführt wurde.
Status liefert mir einen Speicherbereich, der sinnig erscheint. Nun wollte ich mittels MoveBlock den Wert abfragen. Das MoveBlock VI ist im Anhand zu sehen.

Leider erhalte ich folgende Reaktionen:
Ich erhalte den Fehler 1097
Bei nicht gesetzten Eingängen erhalte ich die Werte 108 und -80 und wenn ich den zweiten Eingang auf True setze, die Werte 110 und -78. Das Ergebnis ist wiederholbar. Zu erwarten wäre allerdings für den ersten Fall 0 0 und im zweiten Fall 0 1

Kann mir vielleicht jemand helfen?

Viele Grüße und einen schönen Sonntag!


RE: Pointer und MoveBlock - rolfk - 02.06.2013 20:20

(02.06.2013 16:12 )OXO schrieb:  Hallo und einen schönen Sonntag,

ich habe mal wieder ein Problem, es geht um folgende Funktion (die Funktion soll den Status der beiden digitalen Eingänge eines angeschlossenen USB Gerätes erfragen) :

BOOL HoleStatus ( DigitalInput* digital_input, const byte** status);

Status übergibt mir einen Zeiger auf einen Zeiger auf den Status der digitalen Eingänge. Folgendes habe ich bisher gemacht:

Also die MoveBlock Konfiguration sieht im Prinzip nicht schelcht aus, auch wenn da einiges in einem Bild nicht eindeutig sein kann, ein VI ist immer vorzuziehen und dann mit Vorteil in einer ältern dan der letzten LabVIEW Version.

Aus dem Bild ist nur die Konfiguration des letzten (und am meisten uninteressanten) Parameters sichtbar aber nichts über die Calling Convention und weitere Dinge. Mal angenommen dass die soweit stimmen, sollte die MoveBlock Funktion in Ordnung.

Ob das für die eigentlich Funktion gilt is leider ganz und gar nicht zu sagen und wäre auch hier mit einem VI direkt nachvollziehbar.


RE: Pointer und MoveBlock - OXO - 02.06.2013 21:15

Hallo,

vielen Dank für die Antwort. Mir ist gerade noch eingefallen, dass es ja vielleicht gar kein Array ist? Vielleicht sind die True/False Zustände der beiden Eingänge einfach nur binärcodiert in dem Byte-Wert hinterlegt. Ich muss das morgen mal testen und gegebenenfalls das VI reinstellen.

Und ja du hast recht, das Bild ist wirklich schlecht gewählt. Ich hatte das vorhin gemacht, als ich den Wald vor lauter Bäumen schon nicht mehr gesehen hatte.

Viele Grüße und noch einmal vielen Dank.


RE: Pointer und MoveBlock - Kiesch - 03.06.2013 09:02

Gott... wäre gut wenn du das Bild mal updatest mit einem wo man die eigentliche Funktion sieht.
Hab grad paar min gegrübelt und wollte schon schreiben, dass du ne Fkt mit 2 Parametern aufrufst Labview aber 3 angibst xD Aber das ist ja ne ganz ander Funktion die da gezeigt ist.

Gruß Kiesch


RE: Pointer und MoveBlock - OXO - 03.06.2013 16:31

Wie gesagt, das Bild ist wirklich sehr ungünstig gewählt.. Ich gelobe Besserung und Poste nur noch VIs!
Das Problem hat sich geklärt: Die Zustände der Eingänge sind binär im Byte-Wert hinterlegt (aufsteigend vom LSB). So wie es eigentlich auch zu erwarten war. Gestern stand ich scheinbar etwas länger auf dem Schlauch, heute hat alles geklappt.