Forum: PC-Programmierung FT_Read Befehl


von Harald H. (harrychen)


Lesenswert?

Hi,

ich versuche gerade mit dem FT_Read befehl das Byte was ich geschickt
habe wieder zu empfangen und auszulesen (Tx von Bus1 mit Rx von Bus2
verbunden --> das haut hin.
Schreiben haut auch hin (mit HTerm lese ich das was ich geschickt hab
aus)

Aber irgendwie werd ich aus dem FT_Read Befhel nicht schlau, bzw. mir
ist nicht ganz klar was ich da zurückgeben kann...
Laut Beschreibung die gibt IpdwBytesReturned die anzahl der empfangenen
Bytes zurück...aber komischerweise will er mir diese nicht in einem
"Eingabefeld" ausgeben.

der Code für den Button:

void CUSB08_WriteDlg::OnWrite()
{

  UpdateData(TRUE);
  // ÖFFNEN DES GERÄTES!!!
  FT_HANDLE ftHandle;
  FT_STATUS ftStatus;



  ftStatus = FT_Open(1,&ftHandle);
  if(ftStatus == FT_OK) {
    // FT_OPEN OK, use ftHandle to access device
    m_ausgabe1 = "OK";

  }
  else {
    //FT_OPEN failed
    m_ausgabe1 = "NICHT OK";
  }

  //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("%d",BytesReceived);




       }



  FT_Close(ftHandle);
  UpdateData(FALSE);

}

von harald hiebler (Gast)


Lesenswert?

keiner ne Ahnung oder ne Idee an wen ich mich da wenden könnte?
Glaub nämlich, dass das für einen der damit öfters zu tun hat kein
Problem darstellt.

mfg

von Karl heinz B. (heinzi)


Lesenswert?

Was bitte ist unter

> Laut Beschreibung die gibt IpdwBytesReturned die anzahl der
> empfangenen Bytes zurück...aber komischerweise will er mir diese
> nicht in einem "Eingabefeld" ausgeben.

zu verstehen?

Dein Code sieht stark nach MFC aus. In Zukunft wuerde ich Dir empfehlen
eine MFC Newsgroup zu besuchen. Richte deinen Newsreader auf den Server
news.microsoft.com. Dort gibt es Gruppen dazu.

Zum Problem.

Ein "Eingabefeld" zeigt immer etwas an, das mag vielleicht nacht das
sein was Du erwartest, aber irgendetwas wird angezeigt.

Da Dein Code

m_aus2.Format("%d",BytesReceived);

enthaelt, vermute ich mal, das m_aus2 mit dem 'Eingabefeld' verbunden
ist, und Du dort immer 0 siehst.

Nun. Welcher Datentyp ist 'BytesReceived'?

DWORD BytesReceived;

Aha. Was erwartet %d in der Format? Einen int.
Ein DWORD ist aber ein unsigned long.
Das Formatierflag fuer unsigned long ist aber nicht "%d"
sondern "%lu"

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.