古い文字列処理ライブラリ原文arduino-0019からはStringクラスが使用できます。言語リファレンスの「Stringクラス」の項を参照してください。 TextString ※TextStringライブラリのサポートは終了し、Stringライブラリに移行したようです(2010/01) プログラミングをしていると、ASCIIデータとして文字列を入出力することが頻繁にあります。Arduinoは複雑なテキスト処理には向いていませんが、文字列を読み込んで、そのなかの語句を探したり、比較したりといった処理はよく必要になります。たとえば、GPS受信機からデータを受信するときや、BluetoothにATコマンドを送るような場合です。このライブラリはそういったときに役立ちます。 【インストール方法】 TextString.zip http://www.arduino.cc/en/uploads/Tutorial/TextString.zip 上記のファイルをダウンロードして展開し、Arduino IDEのライブラリ用のフォルダ(たとえばarduino-0011\hardware\libraries)にコピーします。その後、Arduino IDEを再度起動すれば使用可能となります。 (その際、デバッグ窓に注意をうながすメッセージが表示されるかもしれませんが、無視しても大丈夫です) 【例】 TextString(int strLength) 指定した長さでTextStringを初期化する TextString myString = TextString(50); // 50バイト長のTextString clear(void) TextStringを0で埋めます myString.clear(); // 文字列をクリア length(void) 最初の0までの長さを返します int stringLength = myString.length(); // 文字列myStringの長さ equals(char *thatString) 引数の文字列と比較します if (myString.equals("Hello")) { // myStringが"Hello"ならば実行される } contains(char *subString) 文字列の部分的な一致を調べます if (myString.contains("Hello")) { // myStringが"Hello"を含んでいたら実行される } trim(void) 文字列(TextString)の両端の空白、改行、タブなどを取り除きます Serial.print(myString.trim()); // トリムされたmyStringを送信 trimRight(void) 文字列の終端の空白を取り除きます Serial.print(myString.trimRight()); // 終端をトリムして送信 trimLeft(void) 文字列の先頭の空白を取り除きます Serial.print(myString.trimLeft()); // 先頭をトリムして送信 setArray(char* thatString) 文字列を配列にセットします myString.setArray("Hello, World"); // 文字列をセット getArray(void) 文字列を配列として取得します Serial.println(myString.getArray()); // 文字列を送信 getCharAt(int charNum) 指定した位置の文字を取得します char thisChar = myString.getCharAt(5); // 6文字目をゲット setCharAt(int charNum, char thisChar) 指定した位置の文字を変更します myString.setCharAt(5, 'A'); // 6番目の文字をAに version(void) 使用しているライブラリのバージョンを取得します Serial.println(myString.version()); // バージョン情報を送信 旧String TextStringライブラリの後継です。バージョン0.4の時点でWiring String library APIを使ったものに更新されました。TextString 0.1を元に、Hernando Barraganによって拡張されています。 プログラミングをしていると、ASCIIデータとして文字列を入出力することが頻繁にあります。Arduinoは複雑なテキスト処理には向いていませんが、文字列を読み込んで、そのなかの語句を探したり、比較したりといった処理はよく必要になります。たとえば、GPS受信機からデータを受信するときや、BluetoothにATコマンドを送るような場合です。このライブラリはそういったときに役立ちます。 【インストール方法】 String.zip http://arduino.cc/en/uploads/Tutorial/String.zip 上記のファイルをダウンロードして展開し、Arduino IDEのライブラリ用のフォルダ(たとえばスケッチ保存用フォルダのlibraries)にコピーします。その後、Arduino IDEを再度起動すれば使用可能となります。 (その際、デバッグ窓に注意をうながすメッセージが表示されるかもしれませんが、無視しても大丈夫です) 前のバージョンにあったtoCharArray()はgetChars()に置き換えられました。この変更は名前の一貫性のためで、両者の機能は同じです。 このバージョンはArduino0015を用いてテストされています。 【関数】 char charAt(int position) - 指定した位置の文字を返します。 int capacity() - 文字列の容量を返します。これはlengthとは異なります。 boolean contains(String thisString) - 文字列thisStringが含まれるとき、trueを返します。 byte[] getBytes() - byteの配列を返します。 char[] getChars() - charの配列を返します。 void setCharAt(int positon, char thisChar) - 文字thisCharをpositionで指定した位置にセットします。 boolean endsWith(String thisString) - 文字列がthisStringで終わっているとき、trueを返します。 boolean equals(String thisString) - 文字列がthisStringと等しいとき、trueを返します。 int indexOf(char thisChar) - 指定した文字が最初に現れる位置を返します。 int length() - 文字列中の文字数を返します。 void replace(char thisChar, char thatChar) 文字thisCharをすべてthatCharで置き換えます。 boolean startsWith(String thisString) - 文字列がthisStringで始まっているとき、trueを返します。 String substring(int beginning, int ending) - 文字列の一部分を、始点beginningと終点endingで指定して、取得します。 void toLowerCase() - 小文字に変換します。 void toUpperCase() - 大文字に変換します。 void append(String thisString) - 文字列thisStringを追加します。thisStringはint、long、char、charの配列などです。 /* 文字列の追加(append) テストする際は、Arduinoにいくつかの文字を送信してください by Tom Igoe created 8 Feb 2009 */ #include <WString.h> // Stringライブラリ #define maxLength 30 String inString = String(maxLength); // 新たなString void setup() { Serial.begin(9600); // シリアル通信の準備 Serial.print("String Library version: "); Serial.println(inString.version()); } void loop () { if(Serial.available() > 0) { // 受信データの有無をチェック char inChar = Serial.read(); // charとして受信データを読む // まだ文字列の終端でなければ、受信した文字を追加する if (inString.length() < maxLength) { inString.append(inChar); Serial.println(inString); } else { Serial.println("You've entered the maximum number of characters."); } } } このほかのサンプルがStringディレクトリ内のexamplesにも用意されています。 [目次へ戻る] |
Creative Commons Attribution-ShareAlike 3.0 License.
このドキュメントはArduino Teamにより執筆され、Takumi Funadaが翻訳し、一部加筆修正したものです
ご意見はtf at musashinodenpa.comまでお送りください [Arduino wiki]