【问题标题】:Serial read doesnt loop well串行读取循环不好
【发布时间】:2021-10-19 06:34:13
【问题描述】:

很难为我的问题确定一个合适的问题,所以听到的是我想要的: 我有一个 Arduino Pro Micro 和一个 Arduino Nano 33 BLE。 Nano 使用他的 9 轴传感器来获取位置。我只使用上/下和左/右的角度。他将 21 到 108 和 0 到 100 之间的角度映射为音高和音量。我通过 sprintf 将数字写入 char 数组,然后通过 Serial 1 将其发送到 Arduino Pro Micro。

这里我有问题。我想永久读取发送的数组。我用这个自动取款机:

void readURAT(){
  
  char buffer[7], inChar;
  int i =0;
  
  while(Serial1.available() > 0){
    if(i<index){
      inChar=Serial1.read();
      buffer[i]=inChar;
      i++;
    }else{
      buffer[6]='\0';
      i=0;
      Serial.println(buffer);
      Serial1.flush();
    }
  }
}

这有效,但只有几次。就像,我得到了 10 次价值,然后什么也没有。字符值例如是“066070”。有人知道我错过了什么吗? 提前感谢您的帮助!

【问题讨论】:

  • 如果 Serial1 没有可用的完整消息,您可能会不同步。

标签: arrays arduino serial-port write


【解决方案1】:

您将获得静默缓冲区溢出,因为您循环 var i 未针对 buffer 的数组大小 (7) 检查。函数中未定义index

如果您收到少于index 字符,您的缓冲区将没有\0 终止符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多