(13.10.2011 10:55 )ralph.d schrieb: Hallo !
Sorry - nicht von Ihnen, sondern vom Original Autor (siehe oben).
Open gibt ein gültiges Handle zurück und wie gesagt open, getitemnodes und getidemnodes geht, gibt ein handle zurück, kein fehler und daten. nur die getdata nicht... (liefert eine 0 zurück (fehler) und die daten werden direkt aus dem erstellten array durchgeschoben)
alle bemühungen, die dll vom windows verzeichnis oder direkt von c: zu starten haben nichts gebracht...
Also GetItemDesc kann so wie es programmiert ist sowieso nichts sinnvolles tun. Da muss man dem vierten Parameter ein Array of Bytes spendieren das man anlegen muss und im dritten Parameter mitteilen wie gross dieses ist. So wie es jetzt ist wird diesen Parametern gar nichts mitgegeben. D.h. die Parameter werden "wahrscheinlich" durch LabVIEW auf die Default Werte gesetzt, was 0 für den dritten Parameter und ein NULL Array für den vierten Parameter bedeutet. Das ist aber unsauber und vertraut darauf dass LabVIEW schon alles sauber initilialisiert. Und selbst wenn LabVIEW das sauber macht UND die DLL-Funktion sich tatsächlich strikt daran hält was in der Dokumentation steht, macht der Funktionsaufruf absolut keinen Sinn. Denn was er eigentlich tut ist nichts anderes als die DLL bitten Informationen zurückzugeben, ihr aber jegliche Möglichkeit zu nehmen das dann auch wirklich zu tun.
Und zum Pfad: Kopiere die DLL ins selbe Verzeichnis als Deine VIs in denen Du sie aufrufst, Disable die Funktion um den Pfad im Diagram anzugeben, ändere den Pfad im Konfigurationsdialog um nur noch den DLL Namen zu enthalten und Du hast Dir wieder ein Problem erspart wenn Du später alles in ein Executable bauen willst. Diese Vorgehensweise ist nicht bei allen DLLs anzubefehlen, sondern nur bei DLLs die ohne weitere Abhängigkeiten ausser Windows APIs selbständig laufen.