LabVIEWForum.de
parametertyp - datenzeiger: kein Anschluß unter dieser Kiste - 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: parametertyp - datenzeiger: kein Anschluß unter dieser Kiste (/Thread-parametertyp-datenzeiger-kein-Anschluss-unter-dieser-Kiste)

Seiten: 1 2 3


parametertyp - datenzeiger: kein Anschluß unter dieser Kiste - rolfk - 09.11.2007 13:30

' schrieb:Hallo Rolf,

doch noch mal kurz die bitte, ob du dein Beispiel zwecks MoveBlock() nicht in eine LV8.2 Datei konvertieren kannst.

Viele Grüße
t4b-1re-2

Ok abgespeichert als 8.0 VI und angepasst, da die CLN in LabVIEW <= 8.0.1 keine implizite Initialisierung von Arrays und so kennt.

[attachment=9618]

Rolf Kalbermatter


parametertyp - datenzeiger: kein Anschluß unter dieser Kiste - rolfk - 09.11.2007 13:38

' schrieb:Die Arrays müßtest Du halt dann rausnehmen, damit es nicht zu aufwändig wird für Dich. Ich muß nun leider los und kann erst am Montag weitermachen.

Ich sehe keine Arrays, oder zumindest keine die nicht fixed size sind, und damit ist es auch kein Problem.
Was ist ein fixed size Array?? Ganz einfach wenn Du eine Array Deklaration siehst die in eckigen Klammern eine Konstante enthält, geht es normalerweise um fixed size Arrays und die werden eben nicht als Pointer in eine Struktur eingefügt sondern als Ganzes.

Also:

<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>
typedef struct
{
Module_Info Peril[MAX_MODULE_COUNT];
unsigned short Modul_Count;
unsigned short Rack_Count;
unsigned short Rack_Slot_Count[MAX_RACK_COUNT];
unsigned short Rack_Im_Type[MAX_RACK_COUNT];
unsigned char Rack_Is_Im_Available[MAX_RACK_COUNT];
unsigned char Rack_Is_Im_Plugged[MAX_RACK_COUNT];
} BusEnum;
</div>

Kommt in etwa auf einen LabVIEW Cluster wie folgt:

ModuleInfo aufsplitten und dann entsprechend MAX_MODULE_COUNT in den Cluster aufnehmen,

uInt16 Type_1;
uInt8 Plugged_1;
uInt8 Rack_1;
uInt8 Slot_1;
uInt8 Filler_1;

uInt16 Type_2;
uInt8 Plugged_2;
uInt8 Rack_2;
uInt8 Slot_2;
uInt8 Filler_2;

danach kommt noch

uInt16 Module_Count
uInt16 Rack_Count
uInt16 Rack_Slot_Count_1
uInt16 Rack_Slot_Count_2
uInt16 Rack_Im_Type_1
uInt16 Rack_Im_Type_2
uInt8 Rack_Is_Im_Available_1
uInt8 Rack_Is_Im_Available_2
uInt8 Rack_Is_Im_Plugged_1
uInt8 Rack_Is_Im_Plugged_2

et voila, da ist Dein kompletter BusEnum Cluster.

Die Callbackfunktionen sind natürlich anderer Tobak und hier kommst Du um eine Wrapper-DLL eigentlich nicht umhin.

Und nun geht es ab ins Wochenende, tschüss.

Rolf Kalbermatter


parametertyp - datenzeiger: kein Anschluß unter dieser Kiste - t4b-1re-2 - 09.11.2007 19:17

' schrieb:Ok abgespeichert als 8.0 VI und angepasst, da die CLN in LabVIEW <= 8.0.1 keine implizite Initialisierung von Arrays und so kennt.

So habe ich das Teil heut schon fertig gemacht, es läuft perfekt! Saustarker Support!

Grüße
t4b-1re-2

Ps.: Ich habs nicht direkt verwendet, sondern als Vorlage benutzt. Nach deinem Hinweis auf die LabVIEW Library und MemBlock war ich nah drann, aber so hab ichs schneller verstanden und konnte schneller umsetzen.


parametertyp - datenzeiger: kein Anschluß unter dieser Kiste - Guest - 14.11.2007 12:29

Danke Rolf, für Vorschlag. Bin mir aber nicht sicher, ob das praktikabel ist. Meinen cluster mit Testprg. hatte ich leider nicht eingefügt. Im Prinzip hatte ich es so, nur halt statt die z.B. Module_info explizit einzufügen - also mehrfach - hatte ich das als Array drin ebenso wie die anderen, was aus den schon erwähnten Gründen nicht geht.

So wie von Dir vorgeschlagen ist es insofern schlecht, weil ich die Arrays ja nicht nur 2 Elemente haben. Das Module_Info- struct ist z.B. 32 mal vorhanden. d.h. ziemlicher Erstellungsaufwand, was aber nicht so schlimm wäre. Aber ich muß das dann doch auf LV-Seite irgendwie wieder in ein Array bringen, damit die anderen VI komfortabel und übersichtlich auf die Elemente zugreifen können. Aber zumindest gibt es mal eine Lösung

Georg


parametertyp - datenzeiger: kein Anschluß unter dieser Kiste - rolfk - 14.11.2007 14:33

' schrieb:Danke Rolf, für Vorschlag. Bin mir aber nicht sicher, ob das praktikabel ist. Meinen cluster mit Testprg. hatte ich leider nicht eingefügt. Im Prinzip hatte ich es so, nur halt statt die z.B. Module_info explizit einzufügen - also mehrfach - hatte ich das als Array drin ebenso wie die anderen, was aus den schon erwähnten Gründen nicht geht.

So wie von Dir vorgeschlagen ist es insofern schlecht, weil ich die Arrays ja nicht nur 2 Elemente haben. Das Module_Info- struct ist z.B. 32 mal vorhanden. d.h. ziemlicher Erstellungsaufwand, was aber nicht so schlimm wäre. Aber ich muß das dann doch auf LV-Seite irgendwie wieder in ein Array bringen, damit die anderen VI komfortabel und übersichtlich auf die Elemente zugreifen können. Aber zumindest gibt es mal eine Lösung

Nun im Header File das in dem DLLParameterTest.zip File war, war MAX_MODULE_COUNT eindeutig 2 und da dachte ich, ach das ist eine kleine Mühe. 32 mal ist etwas ganz Anderes aber im Prinzip musst Du es halt schon so irgendwie tun.

Rolf Kalbermatter


parametertyp - datenzeiger: kein Anschluß unter dieser Kiste - Guest - 15.11.2007 10:21

' schrieb:Nun im Header File das in dem DLLParameterTest.zip File war, war MAX_MODULE_COUNT eindeutig 2 ....
Rolf Kalbermatter


Das ist richtig Rolf. Ich dachte für ein Testbeispiel genügen erstmal 2.

Nochmals Danke
Georg


parametertyp - datenzeiger: kein Anschluß unter dieser Kiste - Guest - 11.12.2007 10:25

Für alle die mit der Parameterübergabe kämpfen. Es gibt dazu ein NI-Beispiel. Dazu in den Beispielen das Beispiel CallDLL.vi suchen. Ist sehr hilfreich.