この記事では、Serial.readBytesUntil() 関数を詳細にコンパイルします。それが何であるか、どのように機能するかについて説明し、Arduino コードでの使用方法を説明する Arduino コードについて説明します。
Serial.readBytesUntil()
Serial.readBytesUntil() 関数は Arduino Serial クラスの一部です。この関数は、特定の文字または最大バイト数が見つかるまで、ストリームからデータを読み取ります。文字または最大バイト数が見つかると、関数は読み取りを停止し、読み取ったデータを返します。
Serial.readBytesUntil() 関数は、次の条件が満たされるたびに終了します。
- 関数がターミネータ文字を検出したとき
- 定義されたバッファ長に達した
- 設定時間が過ぎた、またはタイムアウトになった
この関数はターミネータ文字を返さず、ターミネータの前の最後の文字までのデータのみを返します。この関数によって 0 が返された場合、有効なデータが見つからないことを意味します。
構文
Serial.readBytesUntil() 関数の構文は次のとおりです。
シリアル。 readBytesUntil ( チャー ターミネーター、 チャー * バッファ、 size_t 長さ ) ;
パラメーター
関数 Serial.readBytesUntil() のパラメータは次のとおりです。
- ターミネーターのキャラクター: 関数が読み取りを停止する文字。
- バッファ: バッファでは、シリアル データの読み取りは次のとおりです。許容されるデータ型は、char または byte の配列です。
- 長さ: 読み取る最大バイト数。許可されるデータ型は 整数 .
戻る
バッファに配置されたバイト数。
ノート: 戻りデータでは、ターミネータ文字は関数 Serial.readBytesUntil() によってデータ ストリームから破棄されます。
Arduinoコードの例
次のArduinoコードは、の使用を説明しています Serial.readBytesUntil() 関数:
空所 設定 ( ) {シリアル。 始める ( 9600 ) ; // ボーレート 9600 でシリアル接続を初期化します
}
空所 ループ ( ) {
バイトバッファ [ 5 ] ; // 受信データを格納するバイト配列を定義します
整数 バイト数 = シリアル。 readBytesUntil ( ' \n ' 、バッファ、 5 ) ; // 改行文字が検出されるまで、シリアル接続から着信データを読み取ります
もしも ( バイト数 > 0 ) { // バイトが読み取られたかどうかを確認します
シリアル。 印刷する ( 「受け取ったキャラクター:」 ) ;
シリアル。 書く ( バッファ、バイト数 ) ; // 受信データをシリアルモニターに出力
シリアル。 println ( ) ;
}
}
setup() 関数では、ボーレートによってシリアル通信が確立されます。
loop() 関数では、最初にバイト配列を定義します。 'バッファ' .この配列は、シリアル接続から読み取られた着信データを格納するために使用されます。
次に、 Serial.readBytesUntil() 関数は、改行文字 ('\n') に遭遇するまで、シリアル接続から着信データを読み取ります。次の引数は、一度に最大 5 バイトのデータを取るバッファの長さです。
返されたバイトは、 「バイト数」 変数。受信したデータがバッファ長よりも大きい場合、データは終了し、次のデータ ストリームで送信されます。
出力
結論
の Serial.readBytesUntil() Arduino プログラミングの関数は、指定されたターミネータ文字が受信されるまで、シリアル入力ストリームからバイトを読み取ります。この関数は、読み取られた合計バイト数を取得し、提供されたバッファに格納します。 Serial.readBytesUntil() 関数に関連する詳細については、記事を参照してください。