Imaginary Code

from kougaku-navi.net

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()して改行コードを排除しないと、文字から数値に変換する際にいちばん後ろの数値がおかしくなる。