我只是想尝试开始串行通信的基础知识;我尝试使用这个例子,我发现,根据我的理解它应该工作。我只想把我输入串行监视器的内容输出回去,所以我可以看看它是如何工作的。我还尝试删除while serial.available,以防串行监视器没有触发该条件。 这是我的代码:
// 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
}
}
}
它目前上传得很好,并打印"初始化"但如果我尝试发送"任何数据。
答案 0 :(得分:1)
Serial.read()
返回int
。
您需要转换(char)
才能将其存储为char。
char recieved = (char)Serial.read();
顺便说一句:应该收到变量名称:)
编辑:
也许您因某些原因从未收到过任何数据。
让我们尝试一些超级简单的东西,按照@sohnryang的建议使用serialEvent(),然后在Serial.available()
触发时立即打印一些文本:
while (Serial.available() > 0) {
Serial.println("Something has been received");
}
每次向Arduino发送内容时都会看到此消息。
答案 1 :(得分:0)
使用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 = "";
}
}
}