mikrocontroller.net

Forum: PC-Programmierung FTDI auf bestimmtes Zeichen warten


Autor: Hermann Günther (hahgeh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich wollte eigentlich wenn ein bestimmtes Zeichen empfangen wird, einen
Event auslösen, damit ich weiß wann die Übertragung fertig ist, und ich
den buffer auslesen kann. Wobei ich nicht vorher weiß wie viele Bytes
genau emfangen werden.

Jetzt habe ich festgestellt, dass FT_EVENT_RXCHAR auf jedes empfangene
Zeichen reagiert und nicht auf das mit FT_SetChars() eingestellte
Zeichen. Gibt es eine Möglichkeit auf dieses Zeichen zu reagieren? Es
ist ja kein anderer Event definiert. Wieso kann man es dann überhaupt
setzen?

VDumfG hahgeh

Autor: R.Wiesendanger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In welcher Sprache Programmierst Du ?
Betriebsystem ?

Ich bin kein Hellseher und wenn Du uns vieleicht etwas
genauer postest was Du willst so kann Dir vieleicht
jemand ganz konkret helfen

Autor: Hermann Günther (hahgeh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also,

Ich habe den FT232-Chip von FTDI an einen Mikrocontroller
angeschlossen, der dem FT232 eine unbestimmte Anzahl von Bytes schickt
und dann als Abschlußbyte, um das Ende des Frames zu kennzeichnen, den
Wert 0x04 sendet.

Auf PC-Seite habe ich unter WinXP den entsprechenden Treiber (FTD2XX)
installiert und die dazugehörige DLL-Datei, aus der ich dann unter C++
einige Funktionen verwenden möchte um mit dem Controller zu
kommunizieren.

In dieser DLL gibt es eine Funktion (FT_STATUS
FT_SetEventNotification()), mit der man einen Event einschalten kann,
so dass zum Beispiel beim Wechsel einer Modemleitung am FTD232 oder
beim Empfang eines Zeichens (FT_EVENT_RXCHAR) ein sogenannter
Windows-Event ausgelöst wird, damit man nicht ständig "pollen" muss.
Außerdem gibt es in der DLL eine Funktion mit der ein bestimmter
Character gesetzt werden kann (FT_STATUS FT_SetChars ()).

Deshalb bin ich davon ausgegangen, dass der FT_EVENT_RXCHAR-Event nur
ausgelöst wird, wenn dieser mit FT_SetChars() gesetzte Buchstabe
empfangen wird. Der Event wird aber bei jedem empfangenen Zeichen
ausgelöst, wie es auch eigentlich im D2XX Programmer's Guide steht.

Nun frage ich mich aber wiederum, warum man dann ein spezifisches
Zeichen setzen kann. Und deshalb ist meine Frage, ob ich vielleicht
etwas übersehen haben, und man doch auf ein bestimmtes Zeichen
reagieren kann, oder ob jemand weiß, wozu man diesen spezifischen
Character setzen kann. Jetzt muß ich nämlich in einer Schleife ständig
den Puffer prüfen und leeren, bis irgendwann mal mein 0x04 dabei ist.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Gebrauch von "event characters" ist in
http://www.ftdichip.com/Documents/AppNotes/AN232-06.pdf beschrieben.
Vielleicht hilft Dir das weiter.

Autor: Hermann Günther (hahgeh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ersmal Dank an Rufus,

Die AN232-06 bezieht sich aber leider nur auf die Win32 Comm API, dann
müßte ich den virtuellen Com-Port-Treiber installieren. Mit einem
normalen Com-Port habe ich das so sogar schon mal erfolgreich gemacht.
In der DLL des Direkttreibers gibt es zwar ähnliche Funktionen
(FT-Win32 API Functions), ich würde aber gerne die Classic Interface
Functions, also direkten Zugriff, benutzen.
Müßte ich mal probieren ob das auch mit den FT-Win32 API Functions
funktioniert wie beim Win32 Comm API funktioniert.
Aber trotzdem wäre dann FT_SetChars() unnütz, weil man entweder nur die
Classic Interface Funktions oder die FT-Win32 API Functions benutzen
soll, und nicht gemischt.

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.