25.06.2010, 11:34
25.06.2010, 19:09
CROSSPOST:
http://LabVIEWportal.eu/viewtopic.php?f=53&t=2273
LVF-Regeln lesen und beachten. Danke.
Gruß, Jens
25.06.2010, 20:28
Zitat:Und einen Muster DLL-Knoten hab ich auch gleich noch mit rein gemacht. Probiers mal so.
Und was auch noch offen ist: Muss der Speicherbereich, der ja per Pointer an die DLL übergeben wird, bestehen bleiben auch über die Laufzeit des Knotens hinaus?
Danke für den Muster DLL-Knoten ^_^.
Leider kann ich ihn erst am Montag ausprobieren.
Zitat:Und was auch noch offen ist: Muss der Speicherbereich, der ja per Pointe an die DLL übergeben wird, bestehen bleiben auch über die Laufzeit des Knotens hinaus?
Zum Glück kann den Speicherbereich nach dem Aufruf wieder überschrieben werden. Ich benötige nur die Daten
25.06.2010, 20:30
Zitat:CROSSPOST:
http://LabVIEWportal.eu/viewtopic.php?f=53&t=2273
LVF-Regeln lesen und beachten. Danke.
Gruß, Jens
Sorry, ich wusste nicht, dass es verboten ist.
Ich wollte nur schneller eine Lösung finden.
25.06.2010, 20:40
Dann les' doch jetzt mal die Regeln Dimitri. Zwei Posts innerhalb von 2 Minuten sind auch v e r b o t e n!
Und wegen dir musste ich ne 84 dranhängen
Und wegen dir musste ich ne 84 dranhängen
27.06.2010, 20:41
' schrieb:Und wegen dir musste ich ne 84 dranhängenHi Dima, ich freue mich dich beim Forum begrüßen zu dürfen. ....
Da du ein Experte bist , kannst du züfällig etwas (bezuglich minener Frage) vorschlagen
28.06.2010, 10:58
' schrieb:Und einen Muster DLL-Knoten hab ich auch gleich noch mit reingemacht. Probiers mal so.
Ich möchte mich noch mal bei IchSelbst bedanken.
Es bleiben bei mir trotzdem immer noch ein Paar offene Fragen.
Wenn ich die Definition der Funktion im "Knoten zum Aufruf externer Bibliotheken" betrachte, sieht die so aus:
uint32_t GetDynamicData(CStr DataSetPtr, CStr ServerAddress, uint32_t Serverport, uint32_t MaxTimeout);
und die Funktion, die im Header definiert ist, sieht so aus:
uint32_t GetDynamicData(CStr *DataSetPtr, CStr *ServerAddress, uint32_t Serverport, uint32_t MaxTimeout);
Anders gesagt, es sollen nicht die Strukturen, sondern die Zeiger an die Strukturen an die Funktion übergeben werden!
Kann mir jamand erklären was soll ich in .vi verändern, damit die Definitionen der Funktionen im Header und im VI gleich sind?
Danke !
(siehe Anhang).
28.06.2010, 11:36
' schrieb:Ich möchte mich noch mal bei IchSelbst bedanken.Heißt das, dass es jetzt funktioniert?
Es bleiben bei mir trotzdem immer noch ein Paar offene Fragen.
Zitat:und die Funktion, die im Header definiert ist, sieht so aus:Laut erstem Posting sieht der Header so aus:
uint32_t GetDynamicData(CStr *DataSetPtr, CStr *ServerAddress, uint32_t Serverport, uint32_t MaxTimeout);
Zitat:unsigned long GetDynamicData(ML5DataDynamic *DataSetPtr, char* ServerAddress, unsigned int ServerPort, unsigned int MaxTimeOut);Also "ML5DataDynamic*" und nicht "CStr".
CStr ist also mit ML5DataDynamic* identisch.
Zitat:Kann mir jamand erklären was soll ich in .vi verändern, damit die Definitionen der Funktionen im Header und im VI gleich sind?Eine wortidentische Gleichheit muss nicht bestehen - funktional muss es identisch sein.
"CStr* Data" wäre ein Pointer auf Pointer - das geht in LabVIEW nicht (so einfach).
28.06.2010, 12:19
Zitat:Heißt das, dass es jetzt funktioniert?Nein, es funktioniert noch nicht.
Ich bin gerade dabei die rückwärtige Umwandlung (vom String zu struct) zu erstellen, um an die Daten zu kommen.
Erster Posting ist korrekt
Zitat:unsigned long GetDynamicData(ML5DataDynamic *DataSetPtr, char* ServerAddress, unsigned int ServerPort, unsigned int MaxTimeOut);
So wie ich dich verstanden habe, ist CStr ein Zeiger auf die struct ML5DataDynamic.!?
28.06.2010, 12:32
Irgentwie funktioniert es be mir nicht
Ich habe eine .dll erstellt um einige Funktionen zu siemulieren (siehe Anhang).
Hie ist der Quellcode.
///////////////////////////////////////////////////////////////////////////////
#include "ML5Data.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
ML5DataStatic *StaticData;
ML5DataDynamic *DynamicData;
unsigned long GetDynamicData(ML5DataDynamic *DataSetPtr, char* ServerAddress, unsigned int ServerPort, unsigned int MaxTimeOut)
{
return 0;
}
bool GetStaticData(char* Dir, char* Filter, char* Measurement, ML5DataStatic* DataSetPtr)
{
return 0;
}
void InitDynamicData(ML5DataDynamic* DynamicData)
{
DynamicData -> SpurVL = 1000,0;
DynamicData -> SpurVR = 2000,0;
DynamicData -> SpurHL = 3000,0;
DynamicData -> SpurHR = 4000,0;
DynamicData -> SpurVG = 5000,0;
DynamicData -> SpurHG = 6000,0;
DynamicData -> geoAchseH = 1000,0;
DynamicData -> SturzVL = 1000,0;
DynamicData -> SturzVR = 2000,0;
DynamicData -> SturzHL = 3000,0;
DynamicData -> SturzHR = 4000,0;
DynamicData -> RadversatzV = 1000,0;
DynamicData -> RadversatzH = 1000,0;
strcpy(DynamicData -> ErrorMessage, "Keine Fahler");
}
void InitStaticData (ML5DataStatic* StaticData)
{
StaticData -> SpurVL = 1000,0;
StaticData -> SpurVR = 2000,0;
StaticData -> SpurHL = 3000,0;
StaticData -> SpurHR = 4000,0;
StaticData -> SpurVG = 5000,0;
StaticData -> SpurHG = 6000,0;
StaticData -> SpurVMaxDiff = 7000,0;
StaticData -> SpurHMaxDiff = 8000,0;
StaticData -> SpurDiff20VL = 1000,0;
StaticData -> SpurDiff20VR = 2000,0;
StaticData -> SpurDiff10VL = 3000,0;
StaticData -> SpurDiff10VR = 4000,0;
StaticData -> SpurDiffMaxDiffV = 5000,0;
StaticData -> LenkWMaxLinksVL = 1000,0;
StaticData -> LenkWMaxLinksVR = 2000,0;
StaticData -> LenkWMaxRechtsVL = 3000,0;
StaticData -> LenkWMaxRechtsVR = 4000,0;
StaticData -> EingWinkel20VL = 1000,0;
StaticData -> EingWinkel20VR = 2000,0;
StaticData -> EingWinkel10VL = 3000,0;
StaticData -> EingWinkel10VR = 4000,0;
StaticData -> RadversatzV = 1000,0;
StaticData -> RadversatzH = 2000,0;
StaticData -> FahrachswinkelH = 1000,0;
StaticData -> LenkwinkelMaxVL = 1000,0;
StaticData -> LenkwinkelMaxVR = 1000,0;
StaticData -> Nachlauf20VL = 1000,0;
StaticData -> Nachlauf20VR = 2000,0;
StaticData -> Nachlauf10VL = 3000,0;
StaticData -> Nachlauf10VR = 4000,0;
StaticData -> NachlaufMaxDiff = 5000,0;
StaticData -> Spreizung20VL = 1000,0;
StaticData -> Spreizung20VR = 2000,0;
StaticData -> Spreizung10VL = 3000,0;
StaticData -> Spreizung10VR = 4000,0;
StaticData -> SpreizungMaxDiff = 5000,0;
StaticData -> Achsversatz = 1000,0;
StaticData -> SeitenversatzL = 1000,0;
StaticData -> SeitenversatzR = 2000,0;
StaticData -> Radstandsdiff = 1000,0;
strcpy(StaticData->ErrorMessage, "Keine Fahler");
strcpy(StaticData->ProtocolFiles, "AAAAAAAAAAAA.xml");
StaticData -> FileTime.tm_sec = 1000;
StaticData -> FileTime.tm_min = 1000;
StaticData -> FileTime.tm_hour = 1000;
StaticData -> FileTime.tm_mday = 1000;
StaticData -> FileTime.tm_mon = 1000;
StaticData -> FileTime.tm_year = 1000;
StaticData -> FileTime.tm_wday = 1000;
StaticData -> FileTime.tm_yday = 1000;
StaticData -> FileTime.tm_isdst = 1000;
}
/////////////////////////////////////////////////////////////////////////////////////////
Wenn ich die Simulations-DLL mit dem "Knoten zum Aufruf externer Bibliotheken" zusammen verwende (siehe Anhang), kommt nix vom Knoten aus
was mache ich falsh ??
Ich habe eine .dll erstellt um einige Funktionen zu siemulieren (siehe Anhang).
Hie ist der Quellcode.
///////////////////////////////////////////////////////////////////////////////
#include "ML5Data.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
ML5DataStatic *StaticData;
ML5DataDynamic *DynamicData;
unsigned long GetDynamicData(ML5DataDynamic *DataSetPtr, char* ServerAddress, unsigned int ServerPort, unsigned int MaxTimeOut)
{
return 0;
}
bool GetStaticData(char* Dir, char* Filter, char* Measurement, ML5DataStatic* DataSetPtr)
{
return 0;
}
void InitDynamicData(ML5DataDynamic* DynamicData)
{
DynamicData -> SpurVL = 1000,0;
DynamicData -> SpurVR = 2000,0;
DynamicData -> SpurHL = 3000,0;
DynamicData -> SpurHR = 4000,0;
DynamicData -> SpurVG = 5000,0;
DynamicData -> SpurHG = 6000,0;
DynamicData -> geoAchseH = 1000,0;
DynamicData -> SturzVL = 1000,0;
DynamicData -> SturzVR = 2000,0;
DynamicData -> SturzHL = 3000,0;
DynamicData -> SturzHR = 4000,0;
DynamicData -> RadversatzV = 1000,0;
DynamicData -> RadversatzH = 1000,0;
strcpy(DynamicData -> ErrorMessage, "Keine Fahler");
}
void InitStaticData (ML5DataStatic* StaticData)
{
StaticData -> SpurVL = 1000,0;
StaticData -> SpurVR = 2000,0;
StaticData -> SpurHL = 3000,0;
StaticData -> SpurHR = 4000,0;
StaticData -> SpurVG = 5000,0;
StaticData -> SpurHG = 6000,0;
StaticData -> SpurVMaxDiff = 7000,0;
StaticData -> SpurHMaxDiff = 8000,0;
StaticData -> SpurDiff20VL = 1000,0;
StaticData -> SpurDiff20VR = 2000,0;
StaticData -> SpurDiff10VL = 3000,0;
StaticData -> SpurDiff10VR = 4000,0;
StaticData -> SpurDiffMaxDiffV = 5000,0;
StaticData -> LenkWMaxLinksVL = 1000,0;
StaticData -> LenkWMaxLinksVR = 2000,0;
StaticData -> LenkWMaxRechtsVL = 3000,0;
StaticData -> LenkWMaxRechtsVR = 4000,0;
StaticData -> EingWinkel20VL = 1000,0;
StaticData -> EingWinkel20VR = 2000,0;
StaticData -> EingWinkel10VL = 3000,0;
StaticData -> EingWinkel10VR = 4000,0;
StaticData -> RadversatzV = 1000,0;
StaticData -> RadversatzH = 2000,0;
StaticData -> FahrachswinkelH = 1000,0;
StaticData -> LenkwinkelMaxVL = 1000,0;
StaticData -> LenkwinkelMaxVR = 1000,0;
StaticData -> Nachlauf20VL = 1000,0;
StaticData -> Nachlauf20VR = 2000,0;
StaticData -> Nachlauf10VL = 3000,0;
StaticData -> Nachlauf10VR = 4000,0;
StaticData -> NachlaufMaxDiff = 5000,0;
StaticData -> Spreizung20VL = 1000,0;
StaticData -> Spreizung20VR = 2000,0;
StaticData -> Spreizung10VL = 3000,0;
StaticData -> Spreizung10VR = 4000,0;
StaticData -> SpreizungMaxDiff = 5000,0;
StaticData -> Achsversatz = 1000,0;
StaticData -> SeitenversatzL = 1000,0;
StaticData -> SeitenversatzR = 2000,0;
StaticData -> Radstandsdiff = 1000,0;
strcpy(StaticData->ErrorMessage, "Keine Fahler");
strcpy(StaticData->ProtocolFiles, "AAAAAAAAAAAA.xml");
StaticData -> FileTime.tm_sec = 1000;
StaticData -> FileTime.tm_min = 1000;
StaticData -> FileTime.tm_hour = 1000;
StaticData -> FileTime.tm_mday = 1000;
StaticData -> FileTime.tm_mon = 1000;
StaticData -> FileTime.tm_year = 1000;
StaticData -> FileTime.tm_wday = 1000;
StaticData -> FileTime.tm_yday = 1000;
StaticData -> FileTime.tm_isdst = 1000;
}
/////////////////////////////////////////////////////////////////////////////////////////
Wenn ich die Simulations-DLL mit dem "Knoten zum Aufruf externer Bibliotheken" zusammen verwende (siehe Anhang), kommt nix vom Knoten aus
was mache ich falsh ??