mikrocontroller.net

Forum: PC-Programmierung FTDI-Chip über D2XX.dll ansprechen


Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche gerade mit VB6, genauer mit VBA:-) einemk FTDI Chip 
Informationen auszulesen.

Zunächst erstelle ich mit "FT_CreateDeviceInfoList" eine Device Liste. 
Das funktioniert auch, denn nach dem Funktionsaufruf enthält die 
Variable lpdwNumDevs die Summer der angeschlossenen Devices.

Über die Funktionen FT_GetDeviceInfoList FT_GetDeviceInfoDetail kann ich 
keinerlei Informationen auslesen. Der Rückgabewert der Funktionen 0, 
also "OK".
Kann mir vielleicht jemand einen Tipp geben?

Hier der Code:

Private Declare Function FT_CreateDeviceInfoList Lib "FTD2XX.DLL" (ByRef lpdwNumDevs As Long) As Long

Private Declare Function FT_GetDeviceInfoList Lib "FTD2XX.DLL" (ByRef FT_DEVICE_LIST_INFO_NODE As DeviceInfo, ByRef lpdwNumDevs As Long) As Long

Private Declare Function FT_GetDeviceInfoDetail Lib "FTD2XX.DLL" (ByVal dwIndex As Long, ByRef lpdwFlags As Long, ByRef lpdwType As Long, ByRef lpdwID As Long, ByRef lpdwLocId As Long, ByRef pcSerialNumber As String, ByRef pcDescription As String, ByRef fthandle As Long) As Long



Public Type DeviceInfo

    Flags As Long
    Type As Long
    ID As Long
    LocID As Long
    SerialNumber As String * 16
    Description As String * 64
    fthandle As Long
    
End Type




Public Sub run_application(ByVal hWnd As Long, ByVal uMsg As Long, _ByVal wParam As Long, ByVal lParam As Long)

Static lpdwNumDevs As Long


Dim FT_DEVICE_LIST_INFO_NODE(10) As DeviceInfo

Dim lpdwFlags As Long
Dim lpdwType As Long
Dim lpdwID As Long
Dim lpdwLocId As Long
Dim pcSerialNumber As String * 16
Dim pcDescription As String * 64
Dim fthandle As Long
Dim i AS Long




state_handler = FT_CreateDeviceInfoList(lpdwNumDevs)    
ActiveSheet.Cells(2, 2).Value = CStr(lpdwNumDevs)



state_handler = FT_GetDeviceInfoDetail(0, lpdwFlags, lpdwType, lpdwID, lpdwLocId, pcSerialNumber, pcDescription, fthandle)
ActiveSheet.Cells(2, 3).Value = pcDescription


i = 0

state_handler (FT_GetDeviceInfoDetail(i, FT_DEVICE_LIST_INFO_NODE(i).Flags, FT_DEVICE_LIST_INFO_NODE(i).Type, FT_DEVICE_LIST_INFO_NODE(i).ID, FT_DEVICE_LIST_INFO_NODE(i).LocID, FT_DEVICE_LIST_INFO_NODE(i).SerialNumber, FT_DEVICE_LIST_INFO_NODE(i).Description, FT_DEVICE_LIST_INFO_NODE(i).fthandle))
ActiveSheet.Cells(3, 3).Value = FT_DEVICE_LIST_INFO_NODE(i).Description




End Sub

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du Dir mal die VB-Codebeispiele angesehen, die es von FTDI gibt?

http://www.ftdichip.com/Support/SoftwareExamples/C...

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ja habe ich. Diese Funktionen werden dort leider nicht verwendet.

Es gibt in der Doku zu der Funktion FT_GetDeviceInfoList() den folgenden 
Hinweis:

When programming in Visual Basic, LabVIEW or similar languages, 
FT_GetDeviceInfoDetail may be required instead of this function.

Daher habe ich es mit der FT_GetDeviceInfoDetail() probiert.


Eine Sache habe ich eben vergessen zu erwähnen. Wenn ich die Funktion 
FT_GetDeviceInfoList() aufrufe, dann enthält das erste Element von 
FT_DEVICE_LIST_INFO_NODE(0) die Informationen eines meiner drei Chips.
FT_DEVICE_LIST_INFO_NODE(1) & FT_DEVICE_LIST_INFO_NODE(2) sind leer, 
obwohl drei Devices angemeldet sind.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das Thema hat sich erledigt. Ich habe meine Fehler gefunden!

Ich muss die beiden Strings pcSerialNumber pcDescription ByValue, nicht 
wie im oberen Beispiel ByReferenz, an die Funktion 
FT_GetDeviceInfoDetail() übergeben.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.