DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL - 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: DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL (/Thread-DLL-in-LV-einbinden-Geht-es-nur-mit-einer-anderen-Wrapper-DLL) |
DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL - abrissbirne - 25.06.2010 11:34 Schau dir mal diese Beispiele an. C:ProgrammeNational InstrumentsLabVIEW x.xexamplesdlldata passing DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL - jg - 25.06.2010 19:09 CROSSPOST: http://LabVIEWportal.eu/viewtopic.php?f=53&t=2273 LVF-Regeln lesen und beachten. Danke. Gruß, Jens DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL - Dimitri - 25.06.2010 20:28 Zitat:Und einen Muster DLL-Knoten hab ich auch gleich noch mit rein gemacht. Probiers mal so. 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 DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL - Dimitri - 25.06.2010 20:30 Zitat:CROSSPOST: Sorry, ich wusste nicht, dass es verboten ist. Ich wollte nur schneller eine Lösung finden. DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL - dimitri84 - 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 DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL - Dimitri - 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 DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL - Dimitri - 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). DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL - IchSelbst - 28.06.2010 11:36 ' schrieb:Ich möchte mich noch mal bei IchSelbst bedanken.Heißt das, dass es jetzt funktioniert? Zitat:und die Funktion, die im Header definiert ist, sieht so aus:Laut erstem Posting sieht der Header so aus: 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). DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL - Dimitri - 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.!? DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL - Dimitri - 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 ?? |