Arexx RP6 V2 Build your own robot kit RP6 V2 Manuale Utente
![Arexx](https://files.manualsbrain.com/attachments/7d5bfb0ba6ea5b2685c982333a7389b552ce0a09/common/fit/150/50/e2737ebddbd476d0e73a3bf82f6692f0e681a71c3e37eb574014e9811fb8/brand_logo.gif)
Codici prodotto
RP6 V2
RP6 ROBOT SYSTEM - 4. Programmierung des RP6
void writeIntegerLength(uint16_t number, uint8_t base, uint8_t length);
Eine Variante von writeInteger. Hier kann zusätzlich die Anzahl der Stellen (length)
die ausgegeben werden soll, angegeben werden. Ist eine Zahl kürzer als die angege-
die ausgegeben werden soll, angegeben werden. Ist eine Zahl kürzer als die angege-
bene Stellenzahl, werden führende Nullen angefügt. Ist Sie länger, werden nur die
letzten Stellen dargestellt.
Beispiele:
letzten Stellen dargestellt.
Beispiele:
writeIntegerLength(2340, DEC, 5);
Ausgabe: „02340“
writeIntegerLength(2340, DEC, 8);
Ausgabe: „00002340“
writeIntegerLength(2340, DEC, 2);
Ausgabe: „40“
writeIntegerLength(254, BIN, 12);
Ausgabe: „000011111110“
4.6.2.2. Empfangen von Daten über die serielle Schnittstelle
Diese Funktionen wurden in Version 1.3 der RP6Library komplett neu geschrieben und
daher wurde dieser Abschnitt daran angepasst.
Der Empfang von Daten über die serielle Schnittstelle läuft nun komplett Interrupt ba-
siert ab. Die empfangenen Daten werden automatisch im Hintergrund in einem sog.
Diese Funktionen wurden in Version 1.3 der RP6Library komplett neu geschrieben und
daher wurde dieser Abschnitt daran angepasst.
Der Empfang von Daten über die serielle Schnittstelle läuft nun komplett Interrupt ba-
siert ab. Die empfangenen Daten werden automatisch im Hintergrund in einem sog.
Ringpuffer gespeichert.
Einzelne empfangene Bytes/Zeichen kann man mit der Funktion
Einzelne empfangene Bytes/Zeichen kann man mit der Funktion
char readChar(void)
aus dem Ringpuffer lesen. Ruft man diese Funktion auf, wird das jeweils nächste ver-
fügbare Zeichen zurückgegeben und aus dem Ringpuffer gelöscht.
Ist der Ringpuffer leer, gibt die Funktion 0 zurück. Allerdings sollte man vor jedem
Ist der Ringpuffer leer, gibt die Funktion 0 zurück. Allerdings sollte man vor jedem
Aufruf mit der Funktion
uint8_t getBufferLength(void)
überprüfen wieviele neue Zeichen noch im Ringpuffer vorhanden sind.
Mehrere Zeichen hintereinander können mit der Funktion
Mehrere Zeichen hintereinander können mit der Funktion
uint8_t readChars(char *buf, uint8_t numberOfChars)
aus dem Puffer abgerufen werden. Als Parameter übergibt man der Funktion einen
Zeiger auf ein Array und die Anzahl der Zeichen die in dieses Array kopiert werden
sollen. Die Funktion gibt die tatsächliche Anzahl kopierter Zeichen zurück. Das ist
sollen. Die Funktion gibt die tatsächliche Anzahl kopierter Zeichen zurück. Das ist
nützlich falls nicht soviele Zeichen wie angefordert im Puffer vorhanden waren.
Sollte der Puffer komplett voll sein, werden alte Daten beim Empfang von neuen Zei-
Sollte der Puffer komplett voll sein, werden alte Daten beim Empfang von neuen Zei-
chen nicht überschrieben, sondern es wird eine status Variable gesetzt (uart_status)
die einen „übergelaufenen“ Puffer signalisiert (engl. „Buffer overflow“,
die einen „übergelaufenen“ Puffer signalisiert (engl. „Buffer overflow“,
UART_BUFFER_OVERFLOW). Sie sollten Ihre Programme so auslegen, dass es nicht
dazu kommt. Meist ist in diesem Fall die Datenrate zu hoch oder das Programm wurde
dazu kommt. Meist ist in diesem Fall die Datenrate zu hoch oder das Programm wurde
für längere Zeit mit mSleep o.ä. blockiert. Sie können auch die Größe des Ringpuffers
- 83 -