Problem mit FT232R im CBUS Bit Bang Mode

Gast #888718
Lesenswert?
• ▲
▼
Hallo!

Ich betreibe einen FT232R unter Windows XP mit Combined Driver und ich 
will den CBUS Bit Bang Mode verwenden.

mein Code schaut folgendermaßen aus:

    ftStatus=my_FT_Open(0,&ftHandle);
    if(ftStatus==FT_OK)
    {
      printf("Device opened\n");
//      ftStatus=my_FT_ResetDevice(ftHandle);
//      if(ftStatus==FT_OK) printf("Device Reseted\n");
      ftStatus=my_FT_GetBitMode(ftHandle,&a);
      if(ftStatus==FT_OK) printf("Device GetBit 0x%02X\n",a);
      for(i=0;i<20;i++)
      {
        a=i|0xF0;
        printf("a=0x%02X; i=%i : ",a,i);
        ftStatus=my_FT_SetBitMode(ftHandle,a,0x20);
        if(ftStatus==FT_OK) printf("Device setBit 0x%02X (i=%i, 
ftHanlde=%i)\n",a,i,(int)ftHandle);
        else printf("Error: ftStatus %i 
(i=%i;a=0x%02X,ftHandle=%i)\n",(int)ftStatus,i,a,(int)ftHandle);
        Sleep(1000);
      }
      ftStatus=my_FT_Close(ftHandle);
      if(ftStatus==FT_OK) printf("Device closed\n");
    }

und mein Ergebnis is:
Device opened
Device GetBit 0xF7
a=0xF0; i=0 : Device setBit 0xF0 (i=0, ftHanlde=9969840)
a=0xF1; i=1 : Device setBit 0xF1 (i=1, ftHanlde=9969840)
a=0xF2; i=2 : Device setBit 0xF2 (i=2, ftHanlde=9969840)
a=0xF3; i=3 : Device setBit 0xF3 (i=3, ftHanlde=9969840)
a=0xF4; i=4 : Device setBit 0xF4 (i=4, ftHanlde=9969840)
a=0xF5; i=5 : Device setBit 0xF5 (i=5, ftHanlde=9969840)
a=0xF6; i=6 : Device setBit 0xF6 (i=6, ftHanlde=9969840)
a=0xF7; i=7 : Device setBit 0x00 (i=9969840, ftHanlde=9969840)
Device closed

was geht da schief?

Danke
Bernhard
Gast #890883
Lesenswert?
• ▲
▼
Hallo zusammen!

Ich bin jetzt selber ein bisschen weiter gekommen.
Es scheint ein Problem mit der Einbindung der dll zu sein.
Ich benutze den MinGW als compiler und leider habe ich mit DLLs noch 
nicht so viel Erfahrung.
Wenn ich den Fehler gefunden habe, berichte ich davon.

Bernhard
Gast #890963
Lesenswert?
• ▲
▼
Danke für den Link.

aber ich habe das Problem jetzt gelöst.
Auslöser war eigene Dummheit.
Da ich noch nie was mit DLLs gemacht hab, hab ich da auf irgendwelche 
Internet-Code-Beispiele vertraut. Und die schlagen vor, dass man die 
DLLs dynamisch mit LoadLibrary lädt.
Das hat dann auch erst mal hingehaun, nur irgendwie halt dann doch nicht 
so ganz. Ich habe wohl irgendwas falsch konfiguriert und somit hat mir 
irgendwas irgendwelche Variablen überschrieben und mein programm 
stürtzte ab.
Die Lösung war Verwendung von statischen DLLs.
die kann man sehr einfach einbinden, wenn man die entsprechende *.lib 
hat. dann muss man nur noch die *.h ins programm includieren und mit 
folgendem befehl kompilieren:
  gcc usbtest.cpp ftd2xx.lib -o usbtest -Wall

Vielleicht hilft es ja jemanden weiter.

um die dynamischen DLLs kümmere ich mich ein anderes mal ;-)

Bernhard

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren