mikrocontroller.net

Forum: PC-Programmierung FT_Read Befehl


Autor: Harald Hiebl (harrychen)
Datum:

Bewertung
0 lesenswert
nicht 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);

}

Autor: harald hiebler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl heinz Buchegger (heinzi)
Datum:

Bewertung
0 lesenswert
nicht 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"

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.