Übertragungsfehler bei Rs232 Verbindung
Nabend,
ich schicke mit einem Delphi Programm größere Datenmengen an meinen Mega32, den ich mit Bascom programmiert habe und der die Zahlen mit dem Input() Befehl engegen nimmt.
Dabei kommt es öfters zu Übertragungsfehlern (anscheind je länger das Gerät in Betrieb ist, desto häufiger). Die Daten bestehen aus mehreren 4 stelligen Integer Zahlen. Bei Übertragungsfehlern werden dann manchmal ein oder zwei Stellen gar nicht übertragen, wo dran kann das liegen?
Ich habe es mit einer Übertragungsgeschwindigkeit von 9600 Baud und 19200 Baud probiert, aber ohne Unterschiede.
Kann das an meinem Usb -> Rs232 konverter liegen, oder ist sowas "normal"?
Wie kann ich diese Übertragungsfehler verhindern, ohne alles doppelt und dreifach übertragen zu müssen?
Wär toll wenn mir da jemand einen Tipp geben könnte, danke
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mal alles aus meinem Delphi Programm rausgebaut, so das es im Prinzip nur noch ein kleines Terminal Programm ist (ich wollte nicht meinen ganzen Code posten, das ist mir zu peinlich, außerdem hätte er dir ja wahrscheinlich nicht viel genutzt)
Das Programm ist geschrieben mit Delphi 2005 und benötigt die ComPort Libary http://sourceforge.net/projects/comport/
um kompiliert werden zu können.
Wenn du es startest musst du zuerst auf den SetCom Button klicken und deinen Comport einstellen. Danach klickst du auf Open, womit der ComPort geöffnet wird.
In dem Textfeld über Senden kann man dann etwas eingeben und dann auf Senden drücken, worauf hin die Eingabe über den Comport geschickt wird. Alle gesendeten und empfangenen Daten werden in dem großen Textfeld angezeigt.
Der Clear Button dient dazu das Textfeld zu leeren, da ich noch keine Möglichkeit gefunden habe (bzw. noch nicht lange genug gesucht habe) es hinzukriegen, dass das Feld automatisch weiter runter scrollt wenn es voll ist...
Das Bascom Programm würde dir glaub ich nicht viel nutzen. Das ist eigentlich ganz einfach. Man kann mit Input(var) eine Eingabe vom Rs232 lesen. Der µC wartet dann so lange bis etwas eingegeben wird und speichert dies dann in die Variable.
Ich hoffe ich konnte helfen
Re: Übertragungsfehler bei Rs232 Verbindung
Zitat:
Zitat von Static
Nabend,
ich schicke mit einem Delphi Programm größere Datenmengen an meinen Mega32, den ich mit Bascom programmiert habe und der die Zahlen mit dem Input() Befehl engegen nimmt.
Dabei kommt es öfters zu Übertragungsfehlern
Ich würde mal sagen du müßtest da eine Flussteuerung "wie man das auf Deutsch nennt " einbauen. Also Xon/Xoff oder per Hardware.
Wenn dein Programm in einer Interruptroutine springt, muss du dem PC mit Xoff sagen, daß er keine Daten senden soll weil der Empfänger nicht bereit ist. Das mußt Du auch immer machen wenn der Buffer voll ist.
Ich weis nicht wie das in Bascom zu machen ist, kenne mich da nicht so aus.
Edit:
Wenn nicht versuche mit der bautrate weiter runter zugehen. So hat der Controller mehr Zeit .