Hallo zusammen, ich arbeite das erste mal mit einem FT245 Chip und habe da so meine Probleme. Ich brauche diesen Chip um die Daten, welcher mir ein PIC18F452 bereitstellt, zu lesen. Laut Doku von FTDI beim D2XX- Treiber kann man die Daten unter C++ auf zwei verschiedenen Arten lesen: 1. immer die aktuellen Daten 2. mit einem timout Die 2. Methode funktioniert mir aber ich bräuchte die 1. Methode und diese Funktioniert mir irgendwie nicht. Mein C- Funktion sieht so aus: void USB::readFTDIonce() { FT_STATUS ftStatus; DWORD EventDWord; DWORD TxBytes; DWORD BytesReceived; DWORD RxBytes; unsigned char RxBuffer[256]; FT_GetStatus(ftHandle,&RxBytes,&TxBytes,&EventDWord); if(RxBytes > 0) { ftStatus = FT_Read(ftHandle,RxBuffer,RxBytes,&BytesReceived); if(ftStatus = FT_OK) { for(int i = 0 ; i< int(RxBytes) ; i++) { printf("%i\n",RxBuffer[i]); } } else { printf("no value was writen on the bus\n"); } } else { printf("can't read\n"); } } und fürs öffnen des devices: void USB::openFTDI() { FT_STATUS ftStatus; ftStatus = FT_Open(0,&ftHandle); if(ftStatus == FT_OK) { printf("CONNECTED\n"); } else { printf("NOT CONNECTED\n"); } } mit dem Pic schreibe ich folgendermassen auf den Bus: while(1) { while(USB_D_NTXE == 1) { } PORTD = 0xFF; USB_D_WR = 1; asm(" NOP"); USB_D_WR = 0; } Leider zeigt mir die Dos-Console immer "no value was writen on the bus" und ich habe keine Ahnung wieso Vielen Dank für euere Hilfe Gruss
>> if(ftStatus = FT_OK)
Unabhängig von allem anderen ist in obiger Zeile schon mal ein Fehler:
Zuweisung statt vergleich, wegen '=' statt '=='.
Gruß, Michael
Ich glaube, um ein FT_Read auszuführe, musst du zuerst ein FT_Purge machen, damit der Buffer gelöscht wird und sich wieder neu beschreibt. Grusss chrigu
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.