基本的Arduino串行通信
我只是试图获得串行通信的基础知识开始;我试图用我发现的这个例子,据我所知,它应该工作。我只想把我输入的串口监视器输出回来,这样我就可以看到它是如何工作的。如果串行监视器不触发该情况,我也尝试删除while serial.available。 这里是我的代码:基本的Arduino串行通信
// Buffer to store incoming commands from serial port
String inData;
void setup() {
Serial.begin(9600);
Serial.println("Initialized\n");
}
void loop() {
while (Serial.available() > 0)
{
char recieved = Serial.read();
inData += recieved;
// Process message when new line character is recieved
if (recieved == '\n')
{
Serial.println("Arduino Received: ");
Serial.println(inData);
inData = ""; // Clear recieved buffer
}
}
}
它目前上传的罚款,并打印“初始化”,但如果我尝试“送”的任何数据不起作用。
Serial.read()
返回和int
。 您需要投下(char)
才能将其存储为字符。
char recieved = (char)Serial.read();
BTW:变量名称应该接收:)
编辑:
也许你从来没有收到任何数据由于某种原因。 让我们尝试一些超级简单,使用的serialEvent由@sohnryang建议(),然后尽快Serial.available()
触发打印一些文字:
while (Serial.available() > 0) {
Serial.println("Something has been received");
}
您应该看到此消息每次您发送的东西Arduino的时间。
我试过这个,我仍然得到相同的结果:( – Mattred
正如@sohnryang所说,尝试使用serialEvent() –
使用SerialEvent。所以代码看起来像这样。
String inData;
void setup() {
Serial.begin(9600);
Serial.println("Initialized\n");
}
void loop() {
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inData += inChar;
if (inChar == '\n') {
Serial.println("Arduino Recieved : ");
Serial.println("inData");
inData = "";
}
}
}
您是否尝试过只要在读取它时立即打印'received'? –