void TFormMain::ReadFTDI (void) { FT_STATUS ftStatus; DWORD EventDWord; DWORD RxBytes; DWORD TxBytes; DWORD BytesReceived; unsigned char RxBuffer[256]; int iIndex; int iX; RxBytes=0; TxBytes=0; BytesReceived=0; EventDWord=0; for(iIndex=0; iIndex<=256; iIndex++) { RxBuffer[iIndex]=0; } FT_GetStatus(ftHandle,&RxBytes,&TxBytes,&EventDWord); //FT_SetTimeouts(ftHandle,5000,0); if(RxBytes > 0) { ftStatus = FT_Read(ftHandle,RxBuffer,RxBytes,&BytesReceived); if(ftStatus == FT_OK) { if(BytesReceived == RxBytes) { for(iX = 0 ; iX < int(BytesReceived) ; iX++) { Memo->Lines->Add("RxBuffer[iX] = RxBuffer[" + IntToStr(iX) + "]:"); Memo->Lines->Add(RxBuffer[iX]); } } else { //no value was written on the bus } } else { //can not read FTDI chip } } bool TFormMain::SyncUSB (void) { int iReceive; // erhaltene Zahl von uC int iSuccess=0; // wie oft wurde REQUEST empfangen bool bSync; // ganze Sync OK (wenn iSuccess=5); iReceive = ReadFTDI(); // <--- ***** FEHLERMELDUNG ******** while (iReceive == 5) { if (iReceive == 245) { iSuccess++; Memo->Lines->Add("uC Request: " + IntToStr(iSuccess) + "x mal erhalten"); WriteFTDI(246); // Reply Memo->Lines->Add("Reply an uC gesendet"); } else { Memo->Lines->Add("uC Request nicht erhalten"); } } return bSync; // Rückgabe des Status ob Sync erfolgreich oder nicht } //--------------------------------------------------------------------------- void __fastcall TFormMain::ButtonSyncStartClick(TObject *Sender) //Button zur synchronisation { MemoDebug->Lines->Add("--- SyncUSB gestartet ---"); if(SyncUSB() == 1) Memo->Lines->Add("Sync OK !!!"); else Memo->Lines->Add("Sync fehlgeschlagen!"); } //---------------------------------------------------------------------------