Hi, ich hab ne Frage zu der Uart-Library von Fleury. Es gibt dort fertige Functions uart_init, uart_getXXX, uart_putXXX Dazu hab ich ne Frage. Es steht dort bei den Beschreibungen, dass das zu uebertragende Zeichen in einen Ringbuffer geschrieben wird bzw. aus einem Ringbuffer gelesen wird. Heisst das jetzt, dass dass die Funktionen aus dieser Bibliothek alles "automatisch" erledigen, also dass ich - je nach Größe des Ringbuffers - einfach X-Zeichen in den Buffer schreibe und die Zeichen "automatisch" nach und nach übertragen werden, ohne dass ich mich jetzt um den Kram kümmern brauch bzw. beim Lesen ähnlich? Diese Bibliothek automatisiert mir ggf. also alles?
Was genau hindert Dich nun eigentlich Dir den Quelltext anzusehen und Dir Deine Frage selbst zu beantworten?
Wofür soll denn eine Lib sonst da sein? Natürlich um bestimmte arbeiten abzunehmen.
Hmm schrieb: > Was genau hindert Dich nun eigentlich Dir den Quelltext anzusehen und > Dir Deine Frage selbst zu beantworten? Niemand, und ich hab es auch gemacht und die einzelnen Schritte auch im Debug-Modus Schritt für Schritt verfolgt, aber manchmal bin ich mir unsicher, ob ich es richtig verstanden habe, und wenn ich dann von Euch Profis hier eine Bestätigung bekomm, ob meine Annahme richtig war, fühl ich mich einfach sicherer und freu mich, dass ich was neues gelernt und vlt. kapiert hab.
>aber manchmal bin ich mir unsicher, ob ich es richtig verstanden habe
OK. Dann erkläre uns doch was Du genau untersucht hast um Deine Frage zu
beantworten, was Du gefunden hast und inwiefern das Deine Frage
beantworte und was die Antwort ist.
Dann können wir Dir (vermutlich) bestätigen, das wir zu dem selben
Schluss gekommen sind oder auch nicht (und wenn, nein, warum nicht).
Aber so wie Du die Frage gestellt hast, liest sie sich als wenn Du
selbst keinerlei Anstrengungen unternommen hast die Frage selbst zu
beantworten.
OK. Du sagst, Du hast es doch getan. Dann dokumentiere das bitte.
Hans Wurst schrieb: > Heisst das jetzt, dass dass die > Funktionen aus dieser Bibliothek alles "automatisch" erledigen, also > dass ich - je nach Größe des Ringbuffers - einfach X-Zeichen in den > Buffer schreibe und die Zeichen "automatisch" nach und nach übertragen > werden, ohne dass ich mich jetzt um den Kram kümmern brauch bzw. beim > Lesen ähnlich? Diese Bibliothek automatisiert mir ggf. also alles? Um's genau zu wissen, brauchen wir entweder den Quelltext oder die Dokumentation... Ein Ringpuffer ist halt ein einfacher Puffer, der "überlaufen" kann. Also z.B. wenn der Empfangspuffer 16 Byte groß ist und Du nicht schnell genug die Daten "abholst" könnte, dann würde der Ringpuffer überlaufen. Was dann genau passiert steht (hoffentlich) in der Dokumentation. Es kann z.B. sein, dass dieser Zustand "ignoriert" wird. Dann bekommst Du Datensalat beim Lesen... oder es wird festgestellt und Du bekommst eine Meldung für den Pufferüberlauf und musst evtl. den Puffer "zurücksetzen". Weitere Varianten sind denkbar... Der Puffer kann beim Lesen auch "unterlaufen", d.h. Du versuchst Daten zu lesen, aber es sind noch keine empfangen worden. Auch hier kann der Aufruf blockieren (Anwendung hängt, bis Daten empfangen worden sind - mit etwas Pech, wenn die Verbindung gestört ist bis in alle Ewigkeit). Oder die Funktion liefert einfach unsinnige Daten oder "-1" oder "0" zurück. Meist kann man abfragen, ob schon Daten im Puffer sind. Und das Problem so umgehen. Auch beim Versand gibt es verschiedene Möglichkeiten: Wenn noch 16 unversendete Bytes im Puffer wären und Du weiter hinein schreibst, könnte entweder das Problem ignoriert werden (dann überschreibst Du die noch ungesendeten Daten)... oder es wird ein Pufferüberlauf gemeldet und du darfst wieder die Verbindung "zurücksetzen"... oder aber der Schreibaufruf "blockiert". Wenn der Aufruf blockiert (wartet bis Daten da sind oder in den Puffer geschrieben werden können), nennt man die Art der Verarbeitung "synchron" oder "blocking". Wenn der Aufruf nicht blockiert ist die Verarbeitung "asynchron" oder "non blocking". ALSO: Es gibt also verschiedene Varianten. Und wie die Bibliothek zu benutzen ist, sollte in der Doku stehen. Vielleicht gibt es auch Beipielprogramme... an denen sieht man am schnellsten, wie mit den obigen Problemen umzugehen ist. Soo... Ich denke das sollte für's erste reichen. Damit solltest Du genug Wissen haben, um heraus zu finden, was die Bibliothek tut. Grüße, Stefan
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.