Arduino mit Processing steuern

Was du auch probieren kannst ist auf die ganze String Geschichte zu verzichten und direkt Binärdaten zu senden.

Du kannst Werte von 0-255 in einem Byte schicken. Für einen 16 Bit Integer (auf dem PC short, nicht int!) müsstest du also den Integer in High-Byte und Low-Byte aufteilen:

short data = 1234;
byte highByte = (byte) (data & 0xff);
byte lowByte = (byte) ((data >>> 8) & 0xff);

Auf Arduino Seite:

int data = word(highByte, lowByte);

Warnung:
Java ist Big Endian! Dadurch ist die Byte-Ordnung anders herum als auf der Arduino Seite.

EDIT:
Aber wenn man es auf beiden Seiten per Hand macht, sollte das keine Rolle spielen. :slight_smile: Wenn man aber irgendwo Konverter Klassen von Integer zu Byte Array o.ä. hat, dann muss man aufpassen.

Auf dem Weg kann man auch Kommandos schicken, z.B. im ersten Byte. Oder ein Byte als Längenfeld verwenden wenn man eine Nutzlast variabler Länge hat.

Wenn du erst mal nur 4 Bytes schickst, kannst du einfach auf Serial.available() >= 4 abfragen und direkt vier mal read() machen.