NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Processing(SerialLibraryes:readBytesUntil関数の使い方)

SerialLibraryes:readBytesUntil関数
 Serialライブラリ※1readBytesUntil関数は、ポートから、特定の文字までのバイトのバッファに読み込みます。
 文字がバッファにない場合、nullが返されます。
 byteBufferパラメータを持たないバージョンでは、興味のあるバイトまでのすべてのデータのバイト配列が返されます。
 これは効率的ではありませんが、使いやすいです。
 byteBufferパラメータを持つバージョンは、メモリと時間効率が向上しています。
 バッファ内のデータを取得し、渡されたバイト配列に格納し、読み取られたバイト数のint値を返します。
 バイトバッファのサイズが十分でない場合は-1が返され、メッセージ領域にエラーが出力されます。バッファに何もない場合、0が返されます。

以下補足です

※1:シリアルライブラリは、一度に1バイトずつ外部デバイスとの間でデータの読み書きを行います。このライブラリは、カスタムマイクロコントローラデバイスと通信し、それらを処理プログラムの入力または出力として使用する柔軟性を備えています。シリアルポートは、多くのPC上に存在し、USB経由でエミュレートできる9ピンI/Oポートです。print関数やprintln関数などの方法でコンソールにデータを送信するときは、コンソールが比較的遅いことに注意してください。高速のリアルタイム出力(60フレーム/秒など)はサポートしていません。


 Processingで使用するSerialLibraryes:readBytesUntil関数の使い方は以下の通りです。
 Serial.list関数で使用可能なシリアルポートを取得し、printArray関数でその一覧を図2の様に出力します。
 new Serial関数で、現在使用している「「0」"COM1"」ポートを「9600bps」のボーレートで開きます。
 available関数で同ポートにデータが到着しているのを確認すると、ポートからreadBytesUntil関数で特定の文字までのバイトをバッファに読み込みます。
 取得したデータをmyString変数に格納し、その内容をprintln関数でシリアルモニターに出力します。
イメージ 4
 
import processing.serial.*;
  
Serial myPort;  // シリアルポート
  
void setup() {
  // 使用可能なシリアルポートをすべて一覧表示します
  printArray(Serial.list());
  // 使用しているポートを必要なレートで開きます
  myPort = new Serial(this, Serial.list()[0], 9600);
  myPort.write(65);
}
  
void draw() {
  while (myPort.available() > 0) {
    int lf = 10;
    // 配列サイズを予想されるバイト数に展開します
    byte[] inBuffer = new byte[7];
    myPort.readBytesUntil(lf, inBuffer);
    if (inBuffer != null) {
      String myString = new String(inBuffer);
      println(myString);
    }
  }
}
イメージ 3
図1:プログラムの内容

SerialLibraryes:readBytesUntil関数の構文
 serial.readBytesUntil(inByte)
 serial.readBytesUntil(inByte, dest)

SerialLibraryes:readBytesUntil関数のパラメータ
 serial Serial シリアルの任意の変数
 inByte int データの終わりを示す文字
 dest byte 変更されるバイト配列で渡される

SerialLibraryes:readBytesUntil関数の戻り値
 byte またはintを返します。

イメージ 1イメージ 3
励みになりますのでよければクリック下さい(^o^)/



この商品は、Amazon.co.jp が販売、発送します。 ギフトラッピングを利用できます。