Simon schrieb:
> HI
>
> Vielen Dank für die Antwort.
>
> Leider hat dass nicht meine Farge beantwortet...(Vllt. Waren die ja auch
> umständlich gestellt??)
>
> Naja folgendes zum generellem Ablauf des Programmes:
>
> PC sendet String
erste Frage
woran kann die Gegenstelle erkennen, dass der String zu Ende ist.
Das ist eine der wichtigen Fragen. Denn dein µC kann von vorne herein
nicht wissen, ob nach den Zeichen 'B' 'U' 'S' noch etwas kommen wird
oder nicht. Vielleicht kommt nichts mehr, vielleicht kommt aber noch ein
"haltestelle" hinten nach. Woher weiß also der Empfänger, dass die
Abfolge der Zeichen, der der Empfänger für sich wieder zu einem String
zusammensetzt, beendet ist?
> -> löst einen Interrupt im AVR aus->der Programmablauf
> stoppt-> das erste empfangene Byte landet im Buffer... Und dann???
Das interessiert dich mit der Fleury Lib alles nicht.
Die benutzt du einfach nur.
Im Hauptprogramm rufst du die (ich glaube die hiess so) Funktion "getc"
auf und die sagt dir ob ein Zeichen vorliegt und welches es war, oder ob
keines da ist.
Um den Mechanismus dahinter brauchst du dich nicht weiter kümmern. Der
Mechansimus ist so ausgelegt, dass er zwischendruch auch schon mal ein
paar Zeichen zwischenspeichern kann, weil dein Hauptprogramm vielleicht
mal keine Zeit hatte, sich sofort um ein eingehendes Zeichen zu kümmern.
Das braucht dich aber nicht weiter kümmern, dann das ist für dich
komplett transparent. Aus dieser get-Funktion kommen die Zeichen exakt
in der Reihenfolge wieder raus, wie sie empfangen wurden. Egal ob sie
zwischendurch in einem Zwischenbuffer geparkt wurden oder nicht. Solange
dieser BUffer nicht überläuft (wenn ich mich recht erinnere, ist eer
defaultmässig auf 32 eingestellt), geht nichts verloren - selbst wenn es
im Hauptprogramm mal wieder etwas länger dauert.
> Werden die restlichen Bytes die empfangen werden gleich im RX Buffer
> gespeichert?
Ja.
ABer ich denke, du machst den Kardinalfehler Nummero One.
Du erwartest zuviel.
Der Sender schickt einen String auf die Reise, indem er Zeichen für
Zeichen überträgt. Aus deiner UART bzw. den Fleury-Funktionen kommen
wieder Zeichen für Zeichen heraus.
Ob und was diese zeichen bedeuten, das ist auf dieser Ebene nicht
festgelegt. Für die UART bzw. die Mechanismen, die da dahinter stecken
endet die Welt mit einzelnen Zeichen (eigentlich Bytes). Alles darüber
hinausgehende ist dein Bier.
Ob du Zeichen sammelst und in einem Array ablegst, bis du einen
Zeilenvorschub ('\n') in den Daten entdeckst, oder ob du einen String
mit einem speziellen anderen Zeichen als beendet erklärst, ob du Strings
überträgst indem du zuerst die Anzahl der nachfolgenden Zeichen
überträgst - das alles ist dein Bier. Weder die UART noch die Fleury
Funktionen kümmern sich darum. Die sind nur für die Transportebene
zuständig. So wie eine Telefonleitung. Ob du die Telefonleitung zur
Sprachübertragung benutzt, oder ob da ein Fax übertragen wird, indem das
Gerät in einem bestimmten Muster in die Leitung hineinpfeift, kümmert
weder die Telefonleitung noch das Vermittlungsamt, sondern ist ganz
alleine das Bier der Endstellen.