基本的Arduino串行通信

基本的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 
     } 
    } 
} 

它目前上传的罚款,并打印“初始化”,但如果我尝试“送”的任何数据不起作用。

+0

您是否尝试过只要在读取它时立即打印'received'? –

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的时间。

+0

我试过这个,我仍然得到相同的结果:( – Mattred

+0

正如@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 = ""; 
     } 
    } 
}