2016-04-10 63 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; 
    } 
    } 
} 

我希望能帮助你一点。随意使用该代码。