C 使用Serial.print的Arduino无限循环

C 使用Serial.print的Arduino无限循环,c,loops,printing,arduino,arduino-uno,C,Loops,Printing,Arduino,Arduino Uno,这个程序应该在串行监视器中检测用户输入,然后输出相同的内容,但在句子末尾有一个句点 但出于某种原因,我下面的代码甚至在我开始输入之前就打印出了无限的点: char incoming; void setup() { Serial.begin(9600); // Select baud } void loop() { if (Serial.available() > 0){ // Check if serial is empty incoming = Ser

这个程序应该在串行监视器中检测用户输入,然后输出相同的内容,但在句子末尾有一个句点

但出于某种原因,我下面的代码甚至在我开始输入之前就打印出了无限的点:

char incoming;

void setup() {
  
  Serial.begin(9600); // Select baud
}

void loop() {
  
  if (Serial.available() > 0){ // Check if serial is empty
      incoming = Serial.read();// Set incoming as the input
      Serial.print(incoming);// Prints input
  }

  if (bool con=true){
      con=false;
      Serial.print(".");
    }
}

我如何解决这个问题?非常感谢您的帮助。

如果在条件中声明变量不是一个好的做法,那么它将始终为真/假! 为该变量设置更好的范围。 如果要检查用户输入,我将一直读取,直到收到“\r”字符

if (bool con=true)

如果允许使用此表单(不在C中),则该表单将始终为true,并且将其值更改为false不会产生任何效果。

如果您希望在给定输入后使用单个点。就这样做吧:

char incoming;

void setup() {
  
  Serial.begin(9600); // Select baud
}

void loop() {
  
  if (Serial.available() > 0){ // Check if serial is empty
      incoming = Serial.read();// Set incoming as the input
      Serial.print(incoming + ".");// Prints input with dot

  }
}
我认为这就是您想要的输出:

输入:一个句子
输出:一个句子。

如果(bool con=true)
始终为true。你需要弄清楚如何检测“句子的结尾”。通过阅读输入,您如何知道“句子”正在结束?回车键是否定义了句子的结束?不清楚您试图实现什么。除非初始化为false…;)