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 

in LV auf dll union zugreifen (struct {union{array;struct{ };BYTE})



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!

08.06.2011, 10:08
Beitrag #1

Dommas Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 93
Registriert seit: Jul 2010

2010
2008
DE_EN

86741
Deutschland
in LV auf dll union zugreifen (struct {union{array;struct{ };BYTE})
Hallo zusammen,

ich muss in Lv09_img2 auf eine dll zugreifen, die u.a. eine Funktion mit folgendem Prototyp enthält:

typedef struct { union { BYTE 1[12]; struct { BYTE 2; BYTE 3[5]; BYTE 4[2]} c} b; BYTE 5} a;

Wenn meine C Kenntnisse richtig sind, dann ist eine Union etwas ähnliches wie eine struct. Mit dem Unterschied, dass eine struct für jedes Element die entsprechende Speichergröße allokiert, eine Union nur die des größten Elements und der Programmierer hat darauf zu achten dass er die Bits im Speicher richtig interpretiert.
Folglich würde ich auf ein Element der struct c nicht wie auf ein Cluster-, sondern wie auf ein Array-Element zugreifen. Und wenn die Union mit struct c befüllt ist nur die ersten 8 Array-Elemente lesen.
Oder baue ich mir in meinem Cluster a, das ich an den dll-Knoten hänge, genau die Struktur nach, wie sie im Prototyp steht? Probieren kann ich es leider (noch) nicht, da die Hardware zur dll noch nicht fertig ist.

Hier mal die beiden Möglichkeiten, von denen ich nicht weiß welche, oder ob überhaupt eine dabei ist die richtig ist.

Danke und Gruß
Dommas

PS: Wieso ist auf dem snippet nur die Hälfte sichtbar?!


Angehängte Datei(en) Thumbnail(s)
   

2009 .vi  unions.vi (Größe: 6,34 KB / Downloads: 270)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
09.06.2011, 07:46 (Dieser Beitrag wurde zuletzt bearbeitet: 09.06.2011 07:48 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: in LV auf dll union zugreifen (struct {union{array;struct{ };BYTE})
LabVIEW kennt keine Unions im eigentlichen Sinn. Das nächstliegende dazu in funktioneller Hinsicht sind Variants, aber die haben im Zusammenhang mit der Call Library Node keinerlei Sinn, da dies ein LabVIEW interner komplexer Datentyp ist, den Du von C aus nicht direkt ansprechen kannst.

Wenn Du den Datentyp in LabVIEW nachbaust, musst Du Dich für eine der Varianten entscheiden. Und das ist typischerweise ein fixed length array von der gewünschten Länge an Bytes. Nun hat LabVIEW auch keine echten fixed length Arrays (ausser innerhalb FPGA) und deshalb musst Du das nachbauen mittels einers Clusters der die entsprechende Anzahl unsigned 8Bit Integers enthält.

Dein Datentyp sieht dann so und nicht anders aus:

   

Im VI musst Du dann je nachdem welcher Type gemeint ist, die entsprechenden Bytes hineine- oder herauskopieren. Möglichkeiten dazu sind direkt mit Bundle oder Array Build und anschliessendes Array to Cluster für Eingangspareameter und Unbundle, oder aber Cluster to Array und danach Array Subset für Ausgangsparameter.

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
14.06.2011, 10:20
Beitrag #3

Dommas Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 93
Registriert seit: Jul 2010

2010
2008
DE_EN

86741
Deutschland
RE: in LV auf dll union zugreifen (struct {union{array;struct{ };BYTE})
Hallo Rolf,

im Moment sieht alles danach aus, wie wenn es mit Deinem Vorschlag funktionieren würde.
Ich kann es wohl in den nächsten Tagen nocheinmal genauer testen, dann werde ich Deinen Post als Lösung markieren.
Bis dahin schon einmal Danke schön!

Gruß
Dommas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  C-Funktion benötigt Struct Forest 3 6.901 04.05.2013 23:38
Letzter Beitrag: rolfk
  Problem bei Struct Einbindung wie in C/C++ raverel 5 8.755 24.04.2013 14:22
Letzter Beitrag: raverel
  Probleme mit Handler und Struct ElBartscho 3 5.332 16.11.2012 19:35
Letzter Beitrag: rolfk
  DLL-Einbindung, Struct mit verschiedenen Datentypen als Pointer übergeben hawk72 4 11.053 11.05.2012 14:41
Letzter Beitrag: hawk72
  Übergabe eines struct arrays an eine DDL und wieder Auslesen SK-AC 4 7.220 12.08.2010 17:01
Letzter Beitrag: rolfk
  Zugreifen auf Beckhoff EtherCat Buskoppler EK1100 und Klemmen ELxxxx Axun 2 7.996 12.05.2010 08:31
Letzter Beitrag: Axun

Gehe zu: