我在我的Arduino Uno上运行了简单的串行程序,它只是回应你输入的任何内容。在Arduino Sketch IDE(v22)中运行时,此功能非常完美。为什么我的Arduino上没有可用的串行数据?
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(115200); // opens serial port, sets data rate
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
(从http://arduino.cc/en/Serial/Available采取代号)
不过,我不喜欢使用Arduino的IDE,宁愿编译我的C++与AVR-G ++代码,所以我写了这个,它应有的功能正是与上面相同:
extern "C" {
#include <avr/io.h>
}
#include <HardwareSerial.h>
extern "C" void __cxa_pure_virtual() { while(1); }
int main (void)
{
int incomingByte = 0;
Serial.begin(115200);
while (1) {
if (Serial.available() > 0) {
incomingByte = Serial.read();
//print as an ASCII character
Serial.print("received: ");
Serial.println(incomingByte, DEC);
}
}
return 1;
}
我编译并运行它,但它不起作用。我从来没有看到我的文字回馈给我。我尝试在while(1)
循环中输出Serial.available()
的值,并且它始终为零。每当我键入键盘时,我都会看到RX LED亮起,但之后没有任何反应。只要条件在Serial.available()
以外,我就可以编辑我的代码以成功呼叫Serial.println()
。
我已确认我的串行软件中的我的baud rate也设置为115200.是的,我的串行软件指向正确的串行端口。
我错过了什么?