ProcessingでArduinoから送られてくるコンマ区切りのデータを受信する
よく書くコードの覚書です。
import processing.serial.*; void setup() { Serial serial = new Serial(this, Serial.list()[0] ); } void draw() { } void serialEvent(Serial port) { if ( port.available() > 0 ) { String s = port.readStringUntil('\n'); if ( s != null ) { String[] val = split(trim(s), ','); // 3個のデータを読む場合 if ( val.length == 3 ) { int x = int(val[0]); int y = int(val[1]); int z = int(val[2]); println( x, y, z ); } } } }
忘れやすいポイント:
- 受信したStringデータのnullチェックをしないとコケる(Error, disabling serialEvent() というエラーが出る)。
- split()する際にtrim()して改行コードを排除しないと、文字から数値に変換する際にいちばん後ろの数値がおかしくなる。