Forum: Mikrocontroller und Digitale Elektronik Serial Buffer (read and write)


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tom (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe einen Arduino-Sketch in Verwendung, der folgenden Code enthält:

uint8_t status[5] = { 0xFF, 0x33, 0xFF, 0xFF, 0xFF };
uint8_t command[5] = { 0xFF, 0xFF, 0x22, 0xFF, 0xFF };

Serial0.write(command, 5);
Serial0.readBytes(status, 5);

Soweit ich das verstehe steht die 5 am Ende für den Buffer.

Ich möchte diesen Code auf eine neue Plattform anpassen, kann dort aber 
zumindest bei write keine Buffer verwenden. Dafür habe ich bereits einen 
Workaround gefunden.

Trotzdem, weshalb ist dieser Buffer beim Lesen und Schreiben überhaupt 
notwendig?



Mit dem Sketch schicke ich einen Befehl an einen Controller, der mir 
dann Antwort gibt, ob es geklappt hat.

Was passiert, wenn ich Serial0.readBytes(status, 5); nicht ausführe? 
Wartet dann der Controller bis ich "zuhöre" oder ist das egal?

Für mich ist die serielle Schnittstelle etwas undurchsichtig und ich 
möchte den Controller nicht durch Versuche beschädigen.

Danke

: Verschoben durch Moderator
von Leo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Tom,

Tom schrieb:
> Soweit ich das verstehe steht die 5 am Ende für den Buffer.

Bei dem Befehl Serial.write steht die "5" für die Länge des Buffers, 
sprich wie viele Byte versendet werden sollen.

Bei dem Befehl Serial.readBytes steht die "5" für die Anzahl an Bytes, 
welche empfangen werden sollen.

Tom schrieb:
> Trotzdem, weshalb ist dieser Buffer beim Lesen und Schreiben überhaupt
> notwendig?

Irgendwo müssen ja schließlich die Daten stehen, welche versendet werden 
sollen. Und irgendwo müssen die empfangenen Daten auch hin geschrieben 
werden, welche empfangen werden.

Tom schrieb:
> Mit dem Sketch schicke ich einen Befehl an einen Controller, der mir
> dann Antwort gibt, ob es geklappt hat.

Der Sketch läuft auf deinem Controller (Arduino) und dieser ist 
möglicherweiße mit einem weiteren Arduino oder PC verbunden.

Tom schrieb:
> Was passiert, wenn ich Serial0.readBytes(status, 5); nicht ausführe?
> Wartet dann der Controller bis ich "zuhöre" oder ist das egal?

Dann kann dein Programm (Controller) keine Bytes von extern empfangen.


Am besten du schildest mal dein Problem, welches du lösen möchtest, 
damit dir besser geholfen werden kann.

Gruß Leo

von Leo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Tom,

hier noch 2x Links zu den Hilfen für Arduino Serial:

https://www.arduino.cc/en/Serial/ReadBytes
https://www.arduino.cc/en/Serial/Write

Gruß Leo

von Tom (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke, das hat mir schon geholfen.

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]
  • [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.