我想开发一个可以从串口读取和接收字节数据的程序,但我的问题是当我在串口监视器中测试下面的代码时,我必须先将串行监视器更改为换行格式,如果有人帮我输入数据而不改变串行监视器中的换行格式。
以下是代码:
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;
}
感谢。
答案 0 :(得分:0)
当我想要将数据从Windows上的VB.net传输到我的带有Serial的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;
}
}
}
我希望对你有所帮助。随意使用该代码。