ftd2xx.dll mit Visual Basic 2010?

Hallo Experten,

ich habe mir ein Experimentier-Set USB mit einem ftd2xx.dll gekauft. Es stellt eine API und einen USB-Chip mit diversen Experimenten (z.B. Ampel mit LED) zur Verfügung.
Ich habe mir die aktuellen Treiber auf meinem Windows 7 64bit Notebook geladen und das erste Testprogramm ausgeführt. Das hat mir promt mitgeteilt, dass ich ein USB-Device angesteckt habe und das die Kommunikation erfolgreich abgeschlossen ist.
Jetzt habe ich versucht das erste Test-Beispiel in eine Programmierumgebung zu laden. Nur leider sind VBP-Dateien nicht mit Visual Basic Express 2010 kompatibel (schein VB6 zu sein). Ich habe nun ein neues Projekt gestartet und ein Modul erzeugt, in dem ich die Deklarationen geclont und bisschen angepasst habe. Hat aber leider nicht geklappt („Wahrscheinlich stimmt die verwaltete PInvoke-Signatur nicht mit der nicht verwalteten Zielsignatur überein“ - Was auch immer das bedeuten mag).
Ich bin mir nicht wirklich sicher, wie ich die DLL in VB Express 2010 einbinden soll. Wenn ich das über Verweise versuche, so bekomme ich die Meldung, dass keine gültige „Assebly oder COM-Komponente vorläge“. Auch hier habe ich keine Ahnung was mir das sagen soll. Ich habe schon eine einfache VB-Anwendung geschrieben, bin aber noch nicht in die Tiefen der VB-Programmierung eingestiegen… Was mache ich flasch? Oder vielmehr wie kann ich meine DLL richtig einbinden? Ich habe auch noch ein LIB-Datei…weiß aber auch nicht was ich damit anfangen soll.
Bitte um Hilfe. Bin verzweifelt. Das kann doch nicht so schwer sein!
Danke für Eure Hilfe.

Gruss,
Frank.

Hallo!
VB 2010 Express ist VB.NET und gehört damit ins .NET Brett.
Dann musst Du verstehen, was passiert, wenn Du eine Funktion in einer DLL aufrufen willst.
Dieser Mechanismus wird unter .NET als „P/invoke“ bezeichnet („platform invoke“).
Da nicht verwaltete DLLs (im Gegensatz zu verwalteten DLLs von .NET, sog. Assemblies) keine Metadaten enthalten, anhand derer automatisch festgestellt werden kann, welche Parameter die enthaltenen Funktionen benötigen bzw. zurücklieferen, musst Du das selbst angeben (ähnlich wie beim Declare Function in alten Basic Versionen).
Das kann etwas trickreich sein und führt i.d.R. bei unsachgemäßen Angaben zu recht hässlichen Fehlern.

Legacy-VB war meines Wissens nach immer 32bittig, bei .NET ist das nicht der Fall. Es kann also u.a. auch deswegen „krachen“, weil Du versuchst, eine 32bit DLL zu nutzen, Dein Programm aber standardmäßig als „AnyCPU“ übersetzt wird und damit auf einem 64bit Rechner als 64 Bit Programm läuft.

Also alles in allem schon ein bisschen komplex für einen Einsteiger.

Gruß,
Martin

Hallo nochmal!
Nachtrag zu meiner vorherigen Antwort: Unter http://www.ftdichip.com/Support/SoftwareExamples/Cod… findest Du auch einen .NET Wrapper für die DLL, dort hat der Hersteller selbst die entsprechenden p/invoke Aufrufe eingetragen.
Wenn Du Dir also die ftd2xx_net.dll herunterlädst, kannst Du diese als Verweis in Dein Projekt aufnehmen und es sollte funktionieren.

Gruß,
Martin

Hallo Martin,

Danke für deine Antwort. Das ist genau was ich gesucht habe!
Ich war zwischenzeitlich auch nicht untätig und habe ein Beispielprogramm für VB.NET gefunden. Das habe ich dann ausgehöhlt und meine Routinen reinprogrammiert.
Mit dem Verweis auf den Wrapper kann ich nun jederzeit eine Verbindung mit meinem USB-Adapter aufnehmen…

Viele Grüsse,
Frank