Forum: PC-Programmierung FTDI auf bestimmtes Zeichen warten


von Hermann G. (hahgeh)


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

von R.Wiesendanger (Gast)


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

von Hermann G. (hahgeh)


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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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

von Hermann G. (hahgeh)


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.

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.