mikrocontroller.net

Forum: PC-Programmierung 9bit Daten mit FT232/FT245 übertragen


Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Betreff sagt schon alles:
Ich benötige eine Unterscheidung bei den übertragenen Daten zwischen
Befehle und Daten, daher brauche ich irgendwie ein 9. bit.
Kann man sowas mit einem FT... machen, und wenn ja wie ?

Am normalen PC UART gehts mit ein paar Tricks, aber beim FT232 ist das
warscheinlich sehr viel schwerer.

Autor: Jochen Pernsteiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei seriellen Protokollen macht man das normalerweise mit sog.
Escapezeichen.

Beispiel: Du hast drei Kommandobytes mit den Werten 0,1,2.

Die schickst Du auch genau so. Wenn Du jetzt Datenbytes mit denselben
Werten senden willst, stellst Du diesen ein Escapezeichen voran (dessen
Bytewert Du halt vorher festlegen musst. Im ASCII-Zeichensatz ist das
z.B. Wert 27).

Anstatt 1 schickst Du jetzt also 27, und dann 1.
Wenn Du den Datenwert 27 senden willst, schickst Du 27 zweimal.

Empfängerseitig: Immer wenn der Empfänger ein Escapezeichen bekommt
(hier Wert 27), dann interpretiert er das nächste Byte als Datenbyte.

Theoretisch könntest Du jedem Datenbyte immer eine 27 voranstellen, was
natürlich Blödsinn ist. Immer nur Datenbytes, deren Wert einem
Kommandowert entsprechen, und dem Escapezeichen selber.

Wenn in Deinem Datenstrom viele Datenwerte mit Kommandowerten
vorkommen, sinkt natürlich Deine Datenrate entsprechend.

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Escapezeichen sind echt eine Alternative. Wiso komme ich selber nie
auf sowas einfaches ?
Ich denke ich werde es so machen.

Damit ich nicht noch einen zweiten Thread aufmachen muss, hier noch
eine andere Frage:
Kann ich den FT232 als virtuellen COM Port so initialisieren, dass er
CTS verwendet ?
Ich möchte, dass der FT232 nur Daten sendet wenn CTS auf Low liegt.

    dcb.BaudRate = baud_rate;
  dcb.ByteSize = 8;
  dcb.Parity = NOPARITY;
  dcb.StopBits = ONESTOPBIT;

  dcb.fOutxCtsFlow = TRUE;
  dcb.fAbortOnError = FALSE;
  fSuccess = SetCommState(hCom, &dcb);

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

Bewertung
0 lesenswert
nicht lesenswert
"Kann ich den FT232 als virtuellen COM Port so initialisieren, dass er
CTS verwendet ?"

Das sollte sich exakt genauso verhalten wie bei einer "echten"
seriellen Schnittstelle. Also Hardwarehandshake einschalten, genauso,
wie Du es in der Zeile

  dcb.fOutxCtsFlow = TRUE;

auch machst.

Dieses Flag ist so beschrieben:

  fOutxCtsFlow
    Indicates whether the CTS (clear-to-send) signal is
    monitored for output flow control. If this member is
    TRUE and CTS is turned off, output is suspended until
    CTS is sent again.


Viel Erfolg.

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rufus
Stammt diese Beschreibung aus einem Buch oder von einer Internetseite
?

Ich suche nämlich schon seit längerem sowas, wo alles schön erklärt
ist.

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

Bewertung
0 lesenswert
nicht lesenswert
Die Beschreibung stammt aus der MSDN-Dokumentation von Microsoft.

http://msdn.microsoft.com/library/default.asp?url=...

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.