2016-04-10 67 views
-1

我想開發一個程序,可以讀取和從串行接收一個字節數據,但我的問題是當我在串行監視器下面的代碼測試時,我必須改變串行首先監測到換行格式,如果有人能夠幫助我在不改變串行監視器中的換行格式的情況下輸入數據。Arduino Newline在串行監視器(幫助)

下面是代碼:

byte alarmhour = 0; 
byte alarmminute = 0; 

void setAlarm() { 
    Serial.print("Please enter the alarm hour in 24hr format, 0-23. - "); 
    alarmhour = readByte(); 
    Serial.println(alarmhour); 
    Serial.print("Please enter the alarm minute, 0-59. - "); 
    alarmminute = readByte(); 
    Serial.println(alarmminute); 
    Serial.println("The data has been entered."); 

    EEPROM.write(addr + 2, alarmminute); 
    EEPROM.write(addr + 3, alarmhour); 
} 

byte readByte() { 
    while (!Serial.available()) delay(10); 
    byte reading = 0; 
    byte incomingByte = Serial.read(); 
    while (incomingByte != '\n') { 
     if (incomingByte >= '0' && incomingByte <= '9'){ 
      reading = reading * 10 + (incomingByte - '0'); 
     }else{ 
      incomingByte = Serial.read(); 
     } 
    } 
    Serial.flush(); 
    return reading; 
} 

感謝。

+1

格式化/縮進:( –

+0

識別,默認爲「無行尾」 –

+0

'else;'肯定是一個錯字,不能幫助任何東西 –

回答

0

當我不想將數據從Windows上的VB.net傳輸到串行的arduino時,我也遇到了這個問題。我通過發送一個「行結束在這裏(!)」來解決它。

void serialEvent() { 
    while (Serial.available() > 0) { 
    char ch = (char) Serial.read(); 
    if (ch == '!') { //This is where it checks if the incomming (char/byte is the End of line 
     stringComplete = true; 
    }else if (ch == '0' || ch == '1') { //Im Sending 0 and 1 here to turn un/off LED's 
     inputString += ch; 
    } 
    if (stringComplete) { 
     Serial.flush(); 
     Serial.println("<--" + inputString); 
     inputString = ""; 
     stringComplete = false; 
    } 
    } 
} 

我希望能幫助你一點。隨意使用該代碼。