mikrocontroller.net

Forum: PC-Programmierung VisulaC++ und serielle RS 232, Timingproblem


Autor: Karlheinz Druschel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leuts,

ich habe da ein ziemliches Problem.
Ich arbeite mit VisualStudi 2003 und C++. Ich habe nun zwei
intelligente Messgeräte, die mittels Infrarot kommunizieren. Eines
davon ist stationär und mit RS232 mit einem PC verbunden, das andere
fährt an diesem stationären Teil vorbei. Wenn die Verbindung zwischen
den beiden aufgebaut ist, dann übergibt der mobile Teil Messdaten an
die Station, von wo aus diese mit einem PC abgerufen werden können.
Zwischen PC und Messgerät findet die Kommunikation mittels
ASCII-Protokoll statt, die Übertragungsrate zwischen PC und Station ist
38400.
Mit Hyperterminal klappt das alles wunderbar, mit dem C-Programm nicht
so ganz.

Ich arbeite mit Events, was generell auch funktioniert. Aber wenn ich
das Programm laufen lasse, dann empfange ich nur Bruchstücke der
eigentlichen Kommunikation. Wenn ich jedoch im VisualStudio einen
Breakpoint setze BEVOR ich den Buffer auslese (also in der Zeile
"m_SerialPort.Read(szData, nBuflen, &dwRead);"), dann ist die
komplette Kommunikation einwandfrei da. Kann das irgendein
Timingproblem sein ?


Greets
Karlheinz

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie gross ist dein Puffer für die Serielle Schnittstelle?
poste mal die Initialisierung der Schnittstelle.
Rechnest du damit das es Übertragungsfehler geben kann?

BTW: Bei der Seriellen Schnittstelle sind maximal 2% Unterschied in der
Baudrate für fehlerfreie Übertragung erlaubt. Durch das Rollen deines
Wagens verschiebt sich aufgrund des Dopplereffektes die
Baudrate(frequenz). Da es sowohl draufzu als auch wegrollt, hast du
eine Verschiebung ins positive wie ins negative also nur noch 1%. Hast
du mal ausgerechnet was die maximale Geschwindigkeit deines Wagens sein
darf? ;-)

Autor: Karlheinz Druschel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
der Puffer ist 255 Bytes gross, die Initialisierung kann ich jetztnicht
posten, da ich zuhause bin und die Software im Büro ist. An der
Geschwindigeit meines Mobilteiles kann es nicht liegen, denn dies
kommuniziert ja mit der intelligenten Feststation, nicht mit dem PC.
Dann würde auch Hyperterminal nicht funzen....

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

Bewertung
0 lesenswert
nicht lesenswert
Setz mal den windows-internen Buffer höher. Ich benutz bei mir z.B 4k

Autor: Karlheinz Druschel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wie mache ich das ?

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SetupComm , das war die Puffergröße nach der ich fragte.
Da gibt es noch einiges anderes zum Einstellen, z.B. Timeouts,
Flusskontrolle, Verhalten bei Fehlübertragung etc.
Es wäre besser wenn du dir mal den entsprchenden Abschnitt in der MSDN
durchliest.

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.