Serial Buffer (read and write)

Gast #5176136
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
Gast #5176162
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.