2017-06-25 17 views
-1

私はArduino Leonardoを持っていて、シリアルto USBコンバータとして使用しようとしています。 Serial1には、数字に終わる文字列があります。この番号は、私はUSB経由でPCに接続しようとしています。それは非常にうまく動作しますが、私は最後に'\n'が必要です。私がKeyboard.printlnまたはKeyboard.writeという行で試してみると、予想される数のスプリットされたさまざまな行が得られます。文字列に改行を追加できません

#include <Keyboard.h> 
String myEAN =""; 
const int myPuffergrosse = 50; 
char serialBuffer[myPuffergrosse]; 
void setup() { 
    Keyboard.begin(); 
    Serial1.begin(9600); 
    delay(1000); 
} 
String getEAN (char *stringWithInt) 
// returns a number from the string (positive numbers only!) 
{ 
    char *tail; 
    // skip non-digits 
    while ((!isdigit (*stringWithInt))&&(*stringWithInt!=0)) stringWithInt++; 
    return(stringWithInt); 
} 

void loop() { 
    // Puffer mit Nullbytes fuellen und dadurch loeschen 
    memset(serialBuffer,0,sizeof(myPuffergrosse)); 
    if (Serial1.available()) { 
     int incount = 0; 
     while (Serial1.available()) { 
      serialBuffer[incount++] = Serial1.read();  
     } 
     serialBuffer[incount] = '\0'; // puts an end on the string 
     myEAN=getEAN(serialBuffer); 
     //Keyboard.write(0x0d); // that's a CR 
     //Keyboard.write(0x0a); // that's a LF 
    } 
} 
+1

キーボードは文字ではなくキーを送信しています。ライブラリは改行文字を 'Enter'キーに変換するだけです。 –

+0

ようこそスタックオーバーフロー!より多くの質問をする前に、[どうすれば良い質問をしますか?](http://stackoverflow.com/help/how-to-ask)をお読みください。 –

+0

最後の文字を 'null'に設定しているのはなぜですか?' \ 0'あなたはそれを正しく認識していますか?これは '\ n'の前に' \ n'を置く必要がない文字列を区切ります。 –

答えて

0

myEANは、単に文字を追加...

myEAN += '\n'; 

あるいは、完全なキャリッジリターン/ラインフィードの組み合わせのために、文字列であるので:

myEAN += "\r\n"; 

ドキュメントを参照してください。 https://www.arduino.cc/en/Tutorial/StringAppendOperator

getEAN関数でもStringを使用することをお勧めします。

String getEAN(String s) 
{ 
    // returns the first positive integer found in the string. 

    int first, last; 
    for (first = 0; first < s.length(); ++first) 
    { 
    if ('0' <= s[first] && s[first] <= '9') 
     break; 
    } 
    if (first >= s.length()) 
    return ""; 

    // remove trailing non-numeric chars. 
    for (last = first + 1; last < s.length(); ++last) 
    { 
    if (s[last] < '0' || '9' < s[last]) 
     break; 
    } 

    return s.substring(first, last - 1); 
} 
+0

newLine、newLine、123、newLine – toolsmith

+0

あなた自身でしてください。 –

関連する問題