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


von Tom (Gast)


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 User
von Leo (Gast)


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)


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)


Lesenswert?

Danke, das hat mir schon geholfen.

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
Noch kein Account? Hier anmelden.