Hallo zusammen, ich spiele gerade mit der Funktion FT_Open bzw. FT_OpenEx herum und bekomme bei FT_OpenEx immer einen Fehler 'FT_INVALID_HANDLE'. Wenn ich das Device über FT_Open(0,&ftHandle) öffne, ist alles OK und ich kann weiterarbeiten. Der Versuch das Device über FT_OpenEx(&loc_id[0],FT_OPEN_BY_LOCATION,&ftHandle) zu öffnen, mündet im o.a. Fehler. Die loc_id habe ich - wie von FTDI beschrieben mittels FT_ListDevices(loc_id,&anz,FT_LIST_ALL | FT_OPEN_BY_LOCATION) ermittelt. Ich habe mit FT_PROG die zurückgegebene Location-Id überprüft - diese stimmt überein. Betriebssystem ist WIN XP SP3. Hier der Codeausschnitt: DWORD anz=0,loc_id[64]; FT_HANDLE ftHandle; FT_STATUS ftStatus=FT_ListDevices(&anz,NULL,FT_LIST_NUMBER_ONLY); if (ftStatus == FT_OK) { ftStatus=FT_ListDevices(&loc_id,&anz,FT_LIST_ALL | FT_OPEN_BY_LOCATION); } if ((ftStatus == FT_OK) && (anz > 0)) { ftStatus = FT_OpenEx(&loc_id[0],FT_OPEN_BY_LOCATION,&ftHandle); // ftStatus = FT_Open(0,&ftHandle); //die Funktion geht } if ((ftStatus == FT_OK) && (anz > 0)) { if (ftHandle != FT_INVALID_HANDLE) { // hier gehts weiter } else { // hier ist ein Fehler aufgetreten } } Wo könnte der Fehler liegen? Momentan benutze ich die FTD2XX.DLL in der Version 3.1.8.1 Gruß TK
Ist das Problem noch aktuell? Kann es sein dass hier:
1 | ftStatus = FT_OpenEx(&loc_id[0],FT_OPEN_BY_LOCATION,&ftHandle); |
die Adresse des ersten Elements des loc_id-Arrays übergeben wird anstatt der Inhalt? Bin mir nicht sicher, wie C das genau handhabt. Ich meine mal gelesen zu haben, dass ein Array-Zugriff im Prinzip wie ein Pointer gehandhabt wird, aber mit dem '&' sagst du ja explizit, dass du die Adresse haben willst. Ralf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.