LabVIEWForum.de - parametertyp - datenzeiger: kein Anschluß unter dieser Kiste

LabVIEWForum.de

Normale Version: parametertyp - datenzeiger: kein Anschluß unter dieser Kiste
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
' 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
' 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
' 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.

Guest

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

Guest

' 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

Guest

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.
Seiten: 1 2 3
Referenz-URLs