Forum: PC-Programmierung Ausgabe bei FTDI


von harrychen01 (Gast)


Lesenswert?

Hallo, und zwar folgendes Problem

ich möchte mit dem FT_Write Befehl etwas schreiben und das dann mit dem
FT_Read Befehl einlesen.

Nun schaut meine Ausgabe folgendermaßen aus

ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ 
ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ 
ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ 
ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌa

das was ich in das Eingabefeld reinschreibe (der STring wird mit
FT_Write gesendet) kommt immer nach den 256 Ì.

das ist der Code Abschnitt (in VC++ erstellt):



//DATEN SENDEN mit FT_WRITE und EINLESEN mit FT_READ

  DWORD written;
  int i;
  int max;




  //FT_SetLatencyTimer(ftHandle,1); //1ms Latency Timer
   FT_SetBaudRate(ftHandle,19200); //ByteTime 38400 * 16 = 1.6us

  char txbuf[256],rxbuf[256];
  CString output;
  DWORD BytesReceived;
  strcpy(txbuf,m_ein);
  max = strlen(txbuf);

         //buf[0]='A';
         //buf[1]='B';

     for(i=0; i<max; i++)
       {


    ftStatus=FT_Write(ftHandle,&txbuf[i],1,&written); //Write Buffer
    ftStatus=FT_Read(ftHandle,&rxbuf[i],1,&BytesReceived);
    m_aus2.Format("%s",rxbuf);


       }


würde mich sehr freune wenn mir wer weiterhelfen kann

mfg harry

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du solltest Deine Puffer mit '\0' initialisieren, bevor Du sie
verwendest.

  memset(rxbuf, 0, 256);

von Alex (Gast)


Lesenswert?

Ist aber ein nettes "Feature" von VC++, dass es immer 0xCC in nicht
initialisierte Arrays schreibt. Da merke ich immer, wenn ich mich
"verzeigert" habe :-)

von harrychen01 (Gast)


Lesenswert?

oke danke gute idee, würd dir gerne sagen, dass es funktioniert hat aber
komischerweise hängt sich mein Programm jetzt andauernd auf wenn ich den
FT_Read Befehl drinnen lasse (wenn ich ihn wegkommentiere
funktionsierts) hm...hat wer ne Idee woran das liegen könnte?

von Thomas L. (tom)


Lesenswert?

ich schätze mal es wartet, dass was eingelesen werden soll ...

imho kannst aber mit einem befehl den Timeout setzen, vielleicht hilft
das was ..

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
Noch kein Account? Hier anmelden.