私はarduinoの男ではありませんが、昨夜GoogleにアクセスできるHoliday Innに泊まりました:)
http://arduino.cc/en/Serial/Read
Serial.read()
1 バイトを ( としてint
) 返します。それをchar配列に割り当てようとしています。
そんなことはできません。
たとえば、配列
内の特定の要素に何かを割り当てることはできますが、配列自体に割り当てることはできません。line1[0] = 'c';
探しているようですSerial.readBytes()
http://arduino.cc/en/Serial/ReadBytes
次のようになります。
Serial.readBytes(line1, 5);
あなたの場合5
、バッファ(配列)の長さはどこですか。line1
これにより、(最大で) 5 バイトがバッファー に読み込まれます。
追加する編集:そうは言っても、arduinoの「Cライク」言語は、「文字列」(char
配列)をnull
に渡すときに終了することを期待しているという点で、Cに非常に似ているようSerial.print()
です。上記のアドバイスはそれを行わず、実際には問題を引き起こします。
あなたがする必要があるのは、あなたの配列の長さより1バイト少ないものnull
を読んでから、あなたに返されるものである実際に読み取られたバイト数を使って「文字列」を終わらせることbytesRead()
です(配列はゼロインデックスです):
int numBytesRead = 0;
...
numBytesRead = Serial.readBytes(line1, 4);
line1[numBytesRead] = '\0';
Serial.print(line1);
オプション B は、最初に述べたように実行することですがline1
、インデックスを使用して配列から一度に 1 バイトずつループして出力します。
int numBytesRead = 0;
numBytesRead = Serial.readBytes(line1, 5);
int i;
for (i = 0; i < numBytesRead; i++) {
Serial.print(line1[i]);
}
ドキュメントによるとSerial.print()
、単一のバイト/文字が渡されたときに送信することを自動的に認識します。