2011-01-03 23 views
1

Ich habe Ihre Fragen über die serielle Schnittstelle Kommunikation gelesen. Aber wir haben ein Problem mit der seriellen Kommunikation.Verlieren serielle Daten während der Übertragung mit hoher Baudrate

Ein Problem, das ich gesehen habe, ist das: Bei hoher Baudrate verlieren wir einige Daten auf der Empfängerseite. Würdest du mir sagen, warum würde das passieren? und wie kann ich es reparieren, bitte?

Wir haben ein Gerät, das Daten mit 115200 Baudrate sendet und der Empfänger auf die gleiche Baudrate eingestellt hatte, aber manchmal gehen einige Datenbytes während der Übertragung verloren.

+0

Es könnte ein Problem sein. Ich habe einige Horrorgeschichten über die SerialPort-Klasse gehört, aber solche Probleme noch nicht erlebt. – leppie

Antwort

0

Es könnte sein, dass Sie den Empfangspuffer des Empfängers überlaufen. Ohne weitere Implementierungsdetails ist es schwer zu sagen.

Wie viele Bytes sendet Ihr Sender normalerweise?

Unterstützen Ihre Sender-/Empfängergeräte die Flusskontrolle? Es kann sein, dass du das benutzen musst.

Dies wird effektiv ermöglichen Ihren Empfänger zu Ihrem Sender zu sagen "Hang on, aufhören zu senden für eine Weile, lass mich damit umgehen, was ich zuerst habe."

Hardware-Flusssteuerung (allgemein) durch die RTS (Request To Send) und CTS (Clear To Send) Stifte verwendet.

Werfen Sie einen Blick auf this Artikel, der ein bisschen mehr darüber erklärt.

+0

Hallo, preious Problem mit dem Verlieren von Daten wird erinnert, ist eine andere, – zahra

+0

System nach einer Weile die Kommunikation zwischen zwei Programmen zurückgesetzt. – zahra

1

115.200 ist eine ziemlich hohe Baudrate, wenn Sie nur ca. 300 Bytes pro Sekunde übertragen müssen. Sie können möglicherweise eine stabilere Verbindung erhalten, indem Sie die Rate senken. Es ist sicherlich einen Versuch wert, wenn Sie beide Seiten der Verbindung selbst einstellen können.

Auch, wie lange ist Ihr Kabel? Hast du das selbst gemacht? Es gibt viele Dinge, die dazu beitragen können, Daten fallen zu lassen, und Kabel spielen oft eine große Rolle.

Schließlich möchten Sie vielleicht davon ausgehen, dass Daten verloren gehen und dies berücksichtigen. Bei nur 300 Bytes könnten Sie es sich leisten, mehr Daten zu senden, als Sie benötigen, d. H. Sie könnten wahrscheinlich alle Daten, die beschädigt oder verloren gegangen sein könnten, ohne viel Geld übertragen. Dies hängt natürlich davon ab, ob Sie das Protokoll steuern oder unterschiedliche Geschwindigkeiten auf den Geräten konfigurieren können.