0

まず、紛らわしいタイトルで申し訳ありません。シリアルモニターから受信したシリアル入力をエコーする簡単なプログラムをarduinoで作成しようとしています。私のコードはこれです:

String string= "";
String string2 = "";

void setup()
{
    Serial.begin(9600);

}

void loop() {


    string = "";

    while(Serial.available() > 0)
    {
        string += (char) Serial.read();
        Serial.flush();

    }


    if(string != "")
    {
        Serial.println(string); 
    }

}

しかし、それをアップロードしてシリアルモニターを開き、何かを入力すると、次のように複数の行に広がります。

Input: Why are you doing this?

W
hy 
are y
ou doin
g this?

私はこれで何時間も立ち往生しています。私のデバイスは Arduino Uno (公式) です。Windows 7 で実行しています。

編集: Serial.print(string) は何も返さず、コンソール画面を空白のままにします。

4

2 に答える 2

0

while ループを少し遅らせるだけで、コードは次のようになります。

String string= "";
String string2 = "";

void setup()
{
    Serial.begin(9600);

}

void loop() {


    string = "";

    while(Serial.available() > 0)
    {
        string += (char) Serial.read();
        Serial.flush();
        delay(10);

    }


    if(string != "")
    {
        Serial.println(string); 
    }

}
于 2013-02-13T12:33:33.933 に答える
0

Serial.print(string);println() の代わりに使用

println()データを人間が読める ASCII テキストとしてシリアル ポートに出力し、その後に復帰文字 (ASCII 13 または '\r') と改行文字 (ASCII 10 または '\n') を続けます。

参照: http://arduino.cc/en/Serial/Println

于 2013-02-09T15:19:24.747 に答える