串行监视器中的Arduino Newline(帮助)

时间:2016-04-10 11:28:19

标签: c 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)

当我想要将数据从Windows上的VB.net传输到我的带有Seri​​al的arduino时,我也遇到了这个问题。我通过发送“Line ends here(!)”

来修复它
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;
    }
  } 
}

我希望对你有所帮助。随意使用该代码。