hab da ne frage:
meine funktion zu ReadFTDI() ist void:
[code]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,&EventDWor d);
//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
}
}code]
ich möchte folgende synchronisation mit einem µController, der auf dem USB-Modul hängt, vornehmen:
µC -> PC "Request"..... PC->µC "Reply"
wenn der µC 5mal eine Antwort vom PC bekommt sendet er einmalig noch eine Bestätigung.
Das Problem: die Fuktion ReadFTDI() liefert mir nichts zurück. wie kann ich aber meine Synchronisation machen. muss ich einen rückgabetyp wählen, wenn ja, welcher?
mit der folgendne funktion, hätte ich mir die synchronisation überlegt, allerdings ist es dann an obiger frage gescheitert:
Code:
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!");
}
//---------------------------------------------------------------------------
hoffe das hier ist halbwegs übesichtlich,
danke
uj
Lesezeichen