Arduino mit Processing steuern

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);


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

Da hast du dich leider etwas verguckt. Innerhalb von Java sollte es gar nicht interessieren, weil es da keine Pointer gibt, die man missbrauchen kann. Wo es drauf ankommt (NIO Buffer etc), kann man rauskriegen oder einstellen, auf was für Hardware Java gerade läuft.
Nach meinem Verständnis ist das Low Byte das niederwertigste Byte, wo immer es im Speicher stehen mag.

short data = 0xAFFE;
byte lowByte = (byte) (data & 0xff);  // ergibt 0xFE
byte hiByte   = (byte) ((data >> 8) & 0xff);  // ergibt 0xAF

In welcher Reihenfolge Binär-Daten übertragen werden, muss man natürlich festlegen, wenn man nicht nur Einzel-Bytes überträgt.

Der Fluch, wenn man zwar arabische Zahlen verwendet, Texte aber weiter falschrum (links nach rechts) schreibt :wink: